[][src]Struct sgx_trts::c_str::CString

pub struct CString { /* fields omitted */ }

A type representing an owned C-compatible string

Methods

impl CString
[src]

pub fn new<T: Into<Vec<u8>>>(t: T) -> Result<CString, NulError>
[src]

Creates a new C-compatible string from a container of bytes.

This method will consume the provided data and use the underlying bytes to construct a new string, ensuring that there is a trailing 0 byte.

Errors

This function will return an error if the bytes yielded contain an internal 0 byte. The error returned will contain the bytes as well as the position of the nul byte.

pub unsafe fn from_vec_unchecked(v: Vec<u8>) -> CString
[src]

Creates a C-compatible string from a byte vector without checking for interior 0 bytes.

This method is equivalent to new except that no runtime assertion is made that v contains no 0 bytes, and it requires an actual byte vector, not anything that can be converted to one with Into.

pub unsafe fn from_raw(ptr: *mut c_char) -> CString
[src]

Retakes ownership of a CString that was transferred to C.

Additionally, the length of the string will be recalculated from the pointer.

Safety

This should only ever be called with a pointer that was earlier obtained by calling into_raw on a CString. Other usage (e.g. trying to take ownership of a string that was allocated by foreign code) is likely to lead to undefined behavior or allocator corruption.

pub fn into_raw(self) -> *mut c_char
[src]

Transfers ownership of the string to a C caller.

The pointer must be returned to Rust and reconstituted using from_raw to be properly deallocated. Specifically, one should not use the standard C free function to deallocate this string.

Failure to call from_raw will lead to a memory leak.

pub fn into_string(self) -> Result<String, IntoStringError>
[src]

Converts the CString into a String if it contains valid Unicode data.

On failure, ownership of the original CString is returned.

pub fn into_bytes(self) -> Vec<u8>
[src]

Returns the underlying byte buffer.

The returned buffer does not contain the trailing nul separator and it is guaranteed to not have any interior nul bytes.

pub fn into_bytes_with_nul(self) -> Vec<u8>
[src]

Equivalent to the into_bytes function except that the returned vector includes the trailing nul byte.

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

Returns the contents of this CString as a slice of bytes.

The returned slice does not contain the trailing nul separator and it is guaranteed to not have any interior nul bytes.

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

Equivalent to the as_bytes function except that the returned slice includes the trailing nul byte.

pub fn as_c_str(&self) -> &CStr
[src]

Extracts a CStr slice containing the entire string.

pub fn into_boxed_c_str(self) -> Box<CStr>
[src]

Converts this CString into a boxed CStr.

Methods from Deref<Target = CStr>

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.

Trait Implementations

impl Deref for CString
[src]

type Target = CStr

The resulting type after dereferencing.

impl Debug for CString
[src]

impl PartialEq<CString> for CString
[src]

impl Eq for CString
[src]

impl Ord for CString
[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<CString> for CString
[src]

impl Hash for CString
[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 From<CString> for Vec<u8>
[src]

impl From<Box<CStr>> for CString
[src]

impl From<CString> for Box<CStr>
[src]

impl From<CString> for Arc<CStr>
[src]

impl From<CString> for Rc<CStr>
[src]

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

impl Drop for CString
[src]

impl Index<RangeFull> for CString
[src]

type Output = CStr

The returned type after indexing.

impl Clone for CString
[src]

fn clone_from(&mut self, source: &Self)
1.0.0
[src]

Performs copy-assignment from source. Read more

impl Default for CString
[src]

fn default() -> CString
[src]

Creates an empty CString.

impl AsRef<CStr> for CString
[src]

impl Borrow<CStr> for CString
[src]

Auto Trait Implementations

impl Send for CString

impl Sync for CString

Blanket Implementations

impl<T, U> TryFrom for T where
    T: From<U>, 
[src]

type Error = !

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

The type returned in the event of a conversion error.

impl<T> From for T
[src]

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

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

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

The type returned in the event of a conversion error.

impl<T, U> Into for T where
    U: From<T>, 
[src]

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