File tree 1 file changed +28
-0
lines changed
1 file changed +28
-0
lines changed Original file line number Diff line number Diff line change @@ -474,6 +474,34 @@ impl CStr {
474
474
self . inner . as_ptr ( )
475
475
}
476
476
477
+ /// Returns `true` if `self.to_bytes()` has a length of 0.
478
+ ///
479
+ /// # Examples
480
+ ///
481
+ /// ```
482
+ /// #![feature(cstr_is_empty)]
483
+ ///
484
+ /// use std::ffi::CStr;
485
+ /// # use std::ffi::FromBytesWithNulError;
486
+ ///
487
+ /// # fn main() { test().unwrap(); }
488
+ /// # fn test() -> Result<(), FromBytesWithNulError> {
489
+ /// let cstr = CStr::from_bytes_with_nul(b"foo\0")?;
490
+ /// assert!(!cstr.is_empty());
491
+ ///
492
+ /// let empty_cstr = CStr::from_bytes_with_nul(b"\0")?;
493
+ /// assert!(empty_cstr.is_empty());
494
+ /// # Ok(())
495
+ /// # }
496
+ /// ```
497
+ #[ inline]
498
+ #[ unstable( feature = "cstr_is_empty" , issue = "102444" ) ]
499
+ pub const fn is_empty ( & self ) -> bool {
500
+ // SAFETY: We know there is at least one byte; for empty strings it
501
+ // is the NUL terminator.
502
+ ( unsafe { self . inner . get_unchecked ( 0 ) } ) == & 0
503
+ }
504
+
477
505
/// Converts this C string to a byte slice.
478
506
///
479
507
/// The returned slice will **not** contain the trailing nul terminator that this C
You can’t perform that action at this time.
0 commit comments