pub struct CFixedStr { /* private fields */ }
Expand description
This type represents a view of a fixed length buffer containing a C-style string. The string is terminated by the first null byte in the buffer, or by the length of the buffer if no null byte is present.
The length of the buffer is known as the limit of the CFixedStr.
The len()
method returns the length of the string within the buffer.
Any bytes after the first null byte are not considered part of the string and may contain garbage data. When comparing or hashing CFixedStrs, these bytes are not included.
§Performance
Be aware that many of the methods on this type which would normally be expected to run in constant time may run in time linear in the length of the string. For this reason, it is recommended to use the type only for interop with C code, and to convert to a standard string or byte buffer as soon as possible.
Implementations§
Source§impl CFixedStr
impl CFixedStr
Sourcepub unsafe fn from_ptr<'a>(ptr: *const c_char, limit: usize) -> &'a CFixedStr
pub unsafe fn from_ptr<'a>(ptr: *const c_char, limit: usize) -> &'a CFixedStr
Cast a raw C-style buffer to a CFixedStr.
Sourcepub unsafe fn from_mut_ptr<'a>(
ptr: *mut c_char,
limit: usize,
) -> &'a mut CFixedStr
pub unsafe fn from_mut_ptr<'a>( ptr: *mut c_char, limit: usize, ) -> &'a mut CFixedStr
Cast a raw C-style buffer to a mutable CFixedStr.
Sourcepub fn from_bytes(bytes: &[u8]) -> &CFixedStr
pub fn from_bytes(bytes: &[u8]) -> &CFixedStr
Create a CFixedStr from a byte slice.
Sourcepub fn from_bytes_mut(bytes: &mut [u8]) -> &mut CFixedStr
pub fn from_bytes_mut(bytes: &mut [u8]) -> &mut CFixedStr
Create a CFixedStr from a mutable byte slice.
Sourcepub fn from_c_str(c_str: &CStr) -> &CFixedStr
pub fn from_c_str(c_str: &CStr) -> &CFixedStr
Create a CFixedStr from a variable length CStr.
Sourcepub fn as_ptr(&self) -> *const c_char
pub fn as_ptr(&self) -> *const c_char
Returns the inner pointer to this CFixedStr.
§Safety
It is your responsibility to make sure the underlying memory is not freed to early.
Sourcepub fn as_mut_ptr(&mut self) -> *mut c_char
pub fn as_mut_ptr(&mut self) -> *mut c_char
Returns the inner pointer to this mutable CFixedStr.
§Safety
It is your responsibility to make sure the underlying memory is not freed to early.
Sourcepub fn limit(&self) -> usize
pub fn limit(&self) -> usize
Returns the limit of this CFixedStr. This corresponds to the longest possible string that could be stored here.
Sourcepub fn len(&self) -> usize
pub fn len(&self) -> usize
Returns the length of the CFixedStr. This operation takes linear time.
Sourcepub fn to_bytes(&self) -> &[u8] ⓘ
pub fn to_bytes(&self) -> &[u8] ⓘ
Coverts this CFixedStr to a byte slice. The length of the slice is equal to the length of the string up to but not including the first null byte.
Sourcepub fn to_bytes_mut(&mut self) -> &mut [u8] ⓘ
pub fn to_bytes_mut(&mut self) -> &mut [u8] ⓘ
Coverts this CFixedStr to a mutable byte slice. The length of the slice is equal to the length of the string up to but not including the first null byte.
Sourcepub fn to_bytes_extended(&self) -> &[u8] ⓘ
pub fn to_bytes_extended(&self) -> &[u8] ⓘ
Coverts this CFixedStr to a byte slice. The length of the slice is equal to the length of the string up to and including the first null byte, if it exists.
Sourcepub fn to_bytes_mut_extended(&mut self) -> &mut [u8] ⓘ
pub fn to_bytes_mut_extended(&mut self) -> &mut [u8] ⓘ
Coverts this CFixedStr to a mutable byte slice. The length of the slice is equal to the length of the string up to and including the first null byte, if it exists.
Sourcepub fn as_bytes_full(&self) -> &[u8] ⓘ
pub fn as_bytes_full(&self) -> &[u8] ⓘ
Coverts this CFixedStr to a byte slice. The length of the slice is equal to the limit of the CFixedStr.
Sourcepub fn as_bytes_mut_full(&mut self) -> &mut [u8] ⓘ
pub fn as_bytes_mut_full(&mut self) -> &mut [u8] ⓘ
Coverts this CFixedStr to a mutable byte slice. The length of the slice is equal to the limit of the CFixedStr.
Sourcepub fn to_str(&self) -> Result<&str, Utf8Error>
pub fn to_str(&self) -> Result<&str, Utf8Error>
Yields a &str slice if the CFixedStr contains valid UTF-8.
This function will calculate the length of this string and check for UTF-8 validity, and then return the &str if it’s valid.
Sourcepub fn to_string_lossy(&self) -> Cow<'_, str>
pub fn to_string_lossy(&self) -> Cow<'_, str>
Converts a CFixedStr into a Cow
This function will calculate the length of this string and then return the resulting
slice as a Cow<str>
, replacing any invalid UTF-8 sequences with U+FFFD REPLACEMENT CHARACTER
.
Sourcepub fn to_c_str(&self) -> Cow<'_, CStr>
pub fn to_c_str(&self) -> Cow<'_, CStr>
Converts a CFixedStr into a Cow
This function will calculate the length of this string, and then ensure it has a
terminating null byte. If a null byte is already present, the Borrowed
variant
can be returned.
Sourcepub fn into_c_fixed_string(self: Box<CFixedStr>) -> CFixedString
pub fn into_c_fixed_string(self: Box<CFixedStr>) -> CFixedString
Converts a Box<CFixedStr>
into a CFixedString
without copying or allocating.