NullTermStr

Struct NullTermStr 

Source
pub struct NullTermStr<'s> { /* private fields */ }
Expand description

Similar to ffi::CStr, except that Self::from_ptr() does not implicitly perform a libc::strlen().

The stdlib docs note that this is the eventual goal for CStr, but in this case we want to control where the length measurement is performed, so that we can avoid performing it until we actually want to use the string data.

Implementations§

Source§

impl<'s> NullTermStr<'s>

Source

pub const unsafe fn from_ptr(start: *const c_char) -> Self

Wrap a null-terminated C-style string, without performing any length calculation or reading any bytes from the pointed-to value.

§Safety

start must be non-null, and point to a contiguous region of memory which ends with a null byte. This is the same requirement as for ffi::CStr::from_ptr().

Source

pub const fn as_ptr(&self) -> *const c_char

Return the input that was provided to Self::from_ptr().

Source

pub fn measure(self) -> &'s MeasuredNullTermStr

Execute libc::strlen() to calculate the length of the pointed-to string.

Source

pub fn match_dir_entries_unmeasured(&self) -> bool

Return whether this matches either of the always-present directory entries "." or "..".

This is performed without any call to strlen(), and will not read past the first null byte.

Trait Implementations§

Source§

impl<'s> Clone for NullTermStr<'s>

Source§

fn clone(&self) -> NullTermStr<'s>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for NullTermStr<'_>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for NullTermStr<'_>

Source§

fn hash<H>(&self, state: &mut H)
where H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for NullTermStr<'_>

Source§

fn eq(&self, rhs: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<'s> Copy for NullTermStr<'s>

Source§

impl Eq for NullTermStr<'_>

Auto Trait Implementations§

§

impl<'s> Freeze for NullTermStr<'s>

§

impl<'s> RefUnwindSafe for NullTermStr<'s>

§

impl<'s> !Send for NullTermStr<'s>

§

impl<'s> !Sync for NullTermStr<'s>

§

impl<'s> Unpin for NullTermStr<'s>

§

impl<'s> UnwindSafe for NullTermStr<'s>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.