pub struct NtUnicodeStrMut<'a> { /* private fields */ }Expand description
A mutable reference to a UNICODE_STRING (equivalent of &mut str).
See the module-level documentation for more details.
Implementations§
Source§impl<'a> NtUnicodeStrMut<'a>
 
impl<'a> NtUnicodeStrMut<'a>
Sourcepub fn as_mut_ptr(&mut self) -> *mut Self
 
pub fn as_mut_ptr(&mut self) -> *mut Self
Returns a *mut NtUnicodeStrMut pointer
(mainly for non-Rust interfaces that expect a mutable UNICODE_STRING*).
Sourcepub fn as_mut_slice(&mut self) -> &'a mut [u16]
 
pub fn as_mut_slice(&mut self) -> &'a mut [u16]
Returns a mutable slice to the raw u16 codepoints of the string.
Sourcepub fn as_mut_u16str(&mut self) -> &'a U16Str
 
pub fn as_mut_u16str(&mut self) -> &'a U16Str
Sourcepub fn as_unicode_str(&'a self) -> &NtUnicodeStr<'a>
 
pub fn as_unicode_str(&'a self) -> &NtUnicodeStr<'a>
Returns an immutable NtUnicodeStr reference for this string.
Sourcepub fn clear(&mut self)
 
pub fn clear(&mut self)
Truncates this string, removing all contents.
While this means the string will have a length of zero, it does not touch its capacity.
Sourcepub const unsafe fn from_raw_parts(
    buffer: *mut u16,
    length: u16,
    maximum_length: u16,
) -> Self
 
pub const unsafe fn from_raw_parts( buffer: *mut u16, length: u16, maximum_length: u16, ) -> Self
Creates an NtUnicodeStrMut from a u16 string buffer, a byte length of the string,
and a buffer capacity in bytes (also known as “maximum length”).
The string is expected to consist of valid UTF-16 characters.
The buffer may or may not be NUL-terminated.
In any case, length does NOT include the terminating NUL character.
This function is unsafe and you are advised to use any of the safe try_from_*
functions over this one if possible.
§Safety
Behavior is undefined if any of the following conditions are violated:
- lengthmust be less than or equal to- maximum_length.
- buffermust be valid for at least- maximum_lengthbytes.
- buffermust point to- lengthconsecutive properly initialized bytes.
- buffermust be valid for the duration of lifetime- 'a.
Sourcepub fn pop(&mut self) -> Option<Result<char>>
 
pub fn pop(&mut self) -> Option<Result<char>>
Removes the last character from the string and returns it.
An NtStringError::UnpairedUtf16Surrogate error is returned if the last character is an unpaired surrogate.
In that case, the unpaired surrogate codepoint is removed from the string anyway.
None is returned if this string is empty.
Sourcepub fn try_from_u16(buffer: &mut [u16]) -> Result<Self>
 
pub fn try_from_u16(buffer: &mut [u16]) -> Result<Self>
Creates an NtUnicodeStrMut from an existing u16 string buffer without a terminating NUL character.
The string is expected to consist of valid UTF-16 characters.
The given buffer becomes the internal buffer of the NtUnicodeStrMut and therefore won’t be NUL-terminated.
See the module-level documentation for the implications of that.
This function has O(1) complexity.
If you have a NUL-terminated buffer, either use try_from_u16_until_nul or convert from a U16CStr
using the corresponding TryFrom implementation.
Sourcepub fn try_from_u16_until_nul(buffer: &mut [u16]) -> Result<Self>
 
pub fn try_from_u16_until_nul(buffer: &mut [u16]) -> Result<Self>
Creates an NtUnicodeStrMut from an existing u16 string buffer that contains at least one NUL character.
The string is expected to consist of valid UTF-16 characters.
The string will be terminated at the NUL character.
An NtStringError::NulNotFound error is returned if no NUL character could be found.
As a consequence, this function has O(n) complexity.
The resulting internal buffer of NtUnicodeStrMut will be NUL-terminated.
See the module-level documentation for the implications of that.
Use try_from_u16 if you have a buffer that is not NUL-terminated.
You can also convert from a NUL-terminated U16CStr in O(1) via the corresponding TryFrom implementation.
Methods from Deref<Target = NtUnicodeStr<'a>>§
Sourcepub fn as_ptr(&self) -> *const Self
 
pub fn as_ptr(&self) -> *const Self
Returns a *const NtUnicodeStr pointer
(mainly for non-Rust interfaces that expect an immutable UNICODE_STRING*).
Sourcepub fn capacity(&self) -> u16
 
pub fn capacity(&self) -> u16
Returns the capacity (also known as “maximum length”) of this string, in bytes.
Sourcepub fn chars(&self) -> Chars<'_> ⓘ
 
pub fn chars(&self) -> Chars<'_> ⓘ
Returns an iterator over the chars of this string.
As the string may contain invalid UTF-16 characters (unpaired surrogates), the returned iterator is an
iterator over Result<char>.
Unpaired surrogates are returned as an NtStringError::UnpairedUtf16Surrogate error.
If you would like a lossy iterator over chars directly, use chars_lossy instead.
Sourcepub fn chars_lossy(&self) -> CharsLossy<'_> ⓘ
 
pub fn chars_lossy(&self) -> CharsLossy<'_> ⓘ
Returns an iterator over the chars of this string.
Any invalid UTF-16 characters (unpaired surrogates) are automatically replaced by
U+FFFD REPLACEMENT CHARACTER (�).
If you would like to treat them differently, use chars instead.
Trait Implementations§
Source§impl<'a> Debug for NtUnicodeStrMut<'a>
 
impl<'a> Debug for NtUnicodeStrMut<'a>
Source§impl<'a> Deref for NtUnicodeStrMut<'a>
 
impl<'a> Deref for NtUnicodeStrMut<'a>
Source§impl<'a> Display for NtUnicodeStrMut<'a>
 
impl<'a> Display for NtUnicodeStrMut<'a>
Source§impl<'a> Ord for NtUnicodeStrMut<'a>
 
impl<'a> Ord for NtUnicodeStrMut<'a>
Source§impl<'a, 'b> PartialEq<&str> for NtUnicodeStrMut<'a>
 
impl<'a, 'b> PartialEq<&str> for NtUnicodeStrMut<'a>
Source§impl<'a, 'b> PartialEq<NtUnicodeStr<'a>> for NtUnicodeStrMut<'b>
 
impl<'a, 'b> PartialEq<NtUnicodeStr<'a>> for NtUnicodeStrMut<'b>
Source§impl<'a, 'b> PartialEq<NtUnicodeStrMut<'a>> for &str
 
impl<'a, 'b> PartialEq<NtUnicodeStrMut<'a>> for &str
Source§impl<'a, 'b> PartialEq<NtUnicodeStrMut<'a>> for NtUnicodeStr<'b>
 
impl<'a, 'b> PartialEq<NtUnicodeStrMut<'a>> for NtUnicodeStr<'b>
Source§impl<'a, 'b> PartialEq<NtUnicodeStrMut<'a>> for NtUnicodeStrMut<'b>
 
impl<'a, 'b> PartialEq<NtUnicodeStrMut<'a>> for NtUnicodeStrMut<'b>
Source§impl<'a, 'b> PartialEq<NtUnicodeStrMut<'a>> for NtUnicodeString
Available on crate feature alloc only. 
impl<'a, 'b> PartialEq<NtUnicodeStrMut<'a>> for NtUnicodeString
alloc only.Source§impl<'a, 'b> PartialEq<NtUnicodeStrMut<'a>> for str
 
impl<'a, 'b> PartialEq<NtUnicodeStrMut<'a>> for str
Source§impl<'a, 'b> PartialEq<NtUnicodeString> for NtUnicodeStrMut<'a>
Available on crate feature alloc only. 
impl<'a, 'b> PartialEq<NtUnicodeString> for NtUnicodeStrMut<'a>
alloc only.Source§impl<'a, 'b> PartialEq<str> for NtUnicodeStrMut<'a>
 
impl<'a, 'b> PartialEq<str> for NtUnicodeStrMut<'a>
Source§impl<'a, 'b> PartialOrd<&str> for NtUnicodeStrMut<'a>
 
impl<'a, 'b> PartialOrd<&str> for NtUnicodeStrMut<'a>
Source§impl<'a, 'b> PartialOrd<NtUnicodeStr<'a>> for NtUnicodeStrMut<'b>
 
impl<'a, 'b> PartialOrd<NtUnicodeStr<'a>> for NtUnicodeStrMut<'b>
Source§impl<'a, 'b> PartialOrd<NtUnicodeStrMut<'a>> for &str
 
impl<'a, 'b> PartialOrd<NtUnicodeStrMut<'a>> for &str
Source§impl<'a, 'b> PartialOrd<NtUnicodeStrMut<'a>> for NtUnicodeStr<'b>
 
impl<'a, 'b> PartialOrd<NtUnicodeStrMut<'a>> for NtUnicodeStr<'b>
Source§impl<'a, 'b> PartialOrd<NtUnicodeStrMut<'a>> for NtUnicodeStrMut<'b>
 
impl<'a, 'b> PartialOrd<NtUnicodeStrMut<'a>> for NtUnicodeStrMut<'b>
Source§impl<'a, 'b> PartialOrd<NtUnicodeStrMut<'a>> for NtUnicodeString
Available on crate feature alloc only. 
impl<'a, 'b> PartialOrd<NtUnicodeStrMut<'a>> for NtUnicodeString
alloc only.Source§impl<'a, 'b> PartialOrd<NtUnicodeStrMut<'a>> for str
 
impl<'a, 'b> PartialOrd<NtUnicodeStrMut<'a>> for str
Source§impl<'a, 'b> PartialOrd<NtUnicodeString> for NtUnicodeStrMut<'a>
Available on crate feature alloc only. 
impl<'a, 'b> PartialOrd<NtUnicodeString> for NtUnicodeStrMut<'a>
alloc only.Source§impl<'a, 'b> PartialOrd<str> for NtUnicodeStrMut<'a>
 
impl<'a, 'b> PartialOrd<str> for NtUnicodeStrMut<'a>
Source§impl<'a> TryFrom<&'a mut U16CStr> for NtUnicodeStrMut<'a>
 
impl<'a> TryFrom<&'a mut U16CStr> for NtUnicodeStrMut<'a>
Source§fn try_from(value: &'a mut U16CStr) -> Result<Self>
 
fn try_from(value: &'a mut U16CStr) -> Result<Self>
Converts a mutable U16CStr reference into an NtUnicodeStrMut.
The internal buffer will be NUL-terminated. See the module-level documentation for the implications of that.
Source§type Error = NtStringError
 
type Error = NtStringError
Source§impl<'a> TryFrom<&'a mut U16Str> for NtUnicodeStrMut<'a>
 
impl<'a> TryFrom<&'a mut U16Str> for NtUnicodeStrMut<'a>
Source§fn try_from(value: &'a mut U16Str) -> Result<Self>
 
fn try_from(value: &'a mut U16Str) -> Result<Self>
Converts a U16Str reference into an NtUnicodeStr.
The internal buffer will NOT be NUL-terminated. See the module-level documentation for the implications of that.