[][src]Struct sgx_trts::c_str::CStr

pub struct CStr { /* fields omitted */ }

Representation of a borrowed C string.

Methods

impl CStr
[src]

pub unsafe fn from_ptr<'a>(ptr: *const c_char) -> &'a CStr
[src]

Wraps a raw C string with a safe C string wrapper.

This function will wrap the provided ptr with a CStr wrapper, which allows inspection and interoperation of non-owned C strings. This method is unsafe for a number of reasons:

  • There is no guarantee to the validity of ptr.
  • The returned lifetime is not guaranteed to be the actual lifetime of ptr.
  • There is no guarantee that the memory pointed to by ptr contains a valid nul terminator byte at the end of the string.
  • It is not guaranteed that the memory pointed by ptr won't change before the CStr has been destroyed.

Note: This operation is intended to be a 0-cost cast but it is currently implemented with an up-front calculation of the length of the string. This is not guaranteed to always be the case.

pub fn from_bytes_with_nul(bytes: &[u8]) -> Result<&CStr, FromBytesWithNulError>
[src]

Creates a C string wrapper from a byte slice.

This function will cast the provided bytes to a CStr wrapper after ensuring that the byte slice is nul-terminated and does not contain any interior nul bytes.

pub unsafe fn from_bytes_with_nul_unchecked(bytes: &[u8]) -> &CStr
[src]

Unsafely creates a C string wrapper from a byte slice.

This function will cast the provided bytes to a CStr wrapper without performing any sanity checks. The provided slice must be nul-terminated and not contain any interior nul bytes.

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

Returns the inner pointer to this C string.

The returned pointer will be valid for as long as self is, and points to a contiguous region of memory terminated with a 0 byte to represent the end of the string.

pub fn to_bytes(&self) -> &[u8]
[src]

Converts this C string to a byte slice.

The returned slice will not contain the trailing nul terminator that this C string has.

Note: This method is currently implemented as a constant-time cast, but it is planned to alter its definition in the future to perform the length calculation whenever this method is called.

pub fn to_bytes_with_nul(&self) -> &[u8]
[src]

Converts this C string to a byte slice containing the trailing 0 byte.

This function is the equivalent of to_bytes except that it will retain the trailing nul terminator instead of chopping it off.

Note: This method is currently implemented as a 0-cost cast, but it is planned to alter its definition in the future to perform the length calculation whenever this method is called.

pub fn to_str(&self) -> Result<&str, Utf8Error>
[src]

Yields a &str slice if the CStr contains valid UTF-8.

If the contents of the CStr are valid UTF-8 data, this function will return the corresponding &str slice. Otherwise, it will return an error with details of where UTF-8 validation failed.

Note: This method is currently implemented to check for validity after a constant-time cast, but it is planned to alter its definition in the future to perform the length calculation in addition to the UTF-8 check whenever this method is called.

pub fn to_string_lossy(&self) -> Cow<str>
[src]

Converts a CStr into a Cow<str>.

If the contents of the CStr are valid UTF-8 data, this function will return a Cow::Borrowed([&str]) with the the corresponding [&str] slice. Otherwise, it will replace any invalid UTF-8 sequences with U+FFFD REPLACEMENT CHARACTER and return a Cow::[Owned](String) with the result.

Note: This method is currently implemented to check for validity after a constant-time cast, but it is planned to alter its definition in the future to perform the length calculation in addition to the UTF-8 check whenever this method is called.

pub fn into_c_string(self: Box<CStr>) -> CString
[src]

Converts a Box<CStr> into a CString without copying or allocating.

Trait Implementations

impl Debug for CStr
[src]

impl PartialEq<CStr> for CStr
[src]

impl Eq for CStr
[src]

impl Ord for CStr
[src]

fn max(self, other: Self) -> Self
1.21.0
[src]

Compares and returns the maximum of two values. Read more

fn min(self, other: Self) -> Self
1.21.0
[src]

Compares and returns the minimum of two values. Read more

impl PartialOrd<CStr> for CStr
[src]

#[must_use]
fn lt(&self, other: &Rhs) -> bool
1.0.0
[src]

This method tests less than (for self and other) and is used by the < operator. Read more

#[must_use]
fn le(&self, other: &Rhs) -> bool
1.0.0
[src]

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more

#[must_use]
fn gt(&self, other: &Rhs) -> bool
1.0.0
[src]

This method tests greater than (for self and other) and is used by the > operator. Read more

#[must_use]
fn ge(&self, other: &Rhs) -> bool
1.0.0
[src]

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more

impl Hash for CStr
[src]

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

Feeds a slice of this type into the given [Hasher]. Read more

impl<'a> From<&'a CStr> for Box<CStr>
[src]

impl<'a> From<&'a CStr> for Arc<CStr>
[src]

impl<'a> From<&'a CStr> for Rc<CStr>
[src]

impl<'a> From<&'a CStr> for CString
[src]

impl<'a> Default for &'a CStr
[src]

impl AsRef<CStr> for CStr
[src]

impl AsRef<CStr> for CString
[src]

impl Borrow<CStr> for CString
[src]

impl ToOwned for CStr
[src]

type Owned = CString

fn clone_into(&self, target: &mut Self::Owned)
[src]

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

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

Auto Trait Implementations

impl Send for CStr

impl Sync for CStr

Blanket Implementations

impl<T> Borrow for T where
    T: ?Sized
[src]

impl<T> BorrowMut for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T