c8str
This crate provides the C8Str and C8String types, which combine the properties
of Rust native utf-8 strings and C style null terminated strings. These types guarantee that:
- The string is valid utf-8
- The string ends with a null terminator
- The string doesn't contain any null bytes before the end
Both types provide methods to get references to both &str (with or without the null
terminator) and &CStr, or a pointer to *const c_char. They dereference to &str
without the null terminator.
The c8 macro creates compile time constants of type &C8Str from string literals.
The c8string macro creates a C8String verified at compile time, and the c8format
macro can format into C8Strings.
The WithC8Str trait provides a convenience method for accessing an object as a &C8Str.
C8Str is no_std compatible. C8String is available behind the alloc feature.
# use c8;
assert_eq!;
assert_eq!;
Features
alloc- Enable theC8Stringtype. This requires the standardallocorstdcrates.
Recent changes
-
0.2.1:
- Fix
c8formatmacro
- Fix
-
0.2.0:
- Add
c8formatmacro - Add
WithC8Strtrait - Add some methods
- Change
C8String::newto take no args and create an empty string without allocating - Impl
Index<RangeFrom<usize>>forC8Str - MSRV 1.81
- Add
-
0.1.2
- Make
C8Str::from_ptr[_unchecked]const
- Make
-
0.1.1
- Show documentation for all features on docs.rs
-
0.1.0
- First release