Struct uefi::CStr16 [−][src]
#[repr(transparent)]pub struct CStr16(_);
Expand description
An UCS-2 null-terminated string
This type is largely inspired by std::ffi::CStr
, see the documentation of
CStr
for more details on its semantics.
Implementations
Wraps a raw UEFI string with a safe C string wrapper
Safety
The function will start accessing memory from ptr
until the first
null byte. It’s the callers responsability to ensure ptr
points to
a valid string, in accessible memory.
Creates a C string wrapper from a u16 slice
Since not every u16 value is a valid UCS-2 code point, this function must do a bit more validity checking than CStr::from_bytes_with_nul
Unsafely creates a C string wrapper from a u16 slice.
Safety
It’s the callers responsability to ensure chars is a valid UCS-2 null-terminated string, with no interior null bytes.
Converts this C string to a u16 slice
Converts this C string to a u16 slice containing the trailing 0 char
Writes each Char16
as a [´char´] (4 bytes long in Rust language) into the buffer.
It is up the the implementer of core::fmt::Write
to convert the char to a string
with proper encoding/charset. For example, in the case of [core::alloc::string::String
]
all Rust chars (UTF-32) get converted to UTF-8.
Example
let firmware_vendor_c16_str: CStr16 = ...;
// crate "arrayvec" uses stack-allocated arrays for Strings => no heap allocations
let mut buf = arrayvec::ArrayString::<128>::new();
firmware_vendor_c16_str.as_str_in_buf(&mut buf);
log::info!("as rust str: {}", buf.as_str());