Expand description
§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.
C8Str is no_std compatible. C8String is available behind the alloc feature.
assert_eq!(c8!("hello").as_str(), "hello");
assert_eq!(c8!("hello").as_c_str(), CStr::from_bytes_with_nul(b"hello\0").unwrap());
// assert_eq!(c8!("hello").as_c_str(), c"hello")); // from rust 1.77§Features
alloc- Enable theC8Stringtype. This requires the standardallocorstdcrates.std- Implement theErrortrait fromstdfor this crate’s error types. Impliesalloc.
§Version history
- 0.1.1 - show documentation for all features on docs.rs
- 0.1.0 - first release
Macros§
- c8
- Makes a new
C8Strconstant from a string literal. This macro adds the null terminator for you and checks validity at compile time.
Structs§
- C8Str
C8Stris a string slice type combining the properties ofstrandCStr. Note that unlikeCStr, this will always be a normal slice so that trivial conversion to bothstrandCStrare possible. The crate may add a thin pointer alternative toC8Strin a future version, butC8Strwon’t change from being a slice.- C8Str
Error - Common error type for most of this crate
- C8String
alloc C8Stringis a string type combining the properties ofStringandCString. It’s the owned version ofC8Str.- NonZero
Char - A
charthat is guaranteed to be nonzero - NonZero
Char Error - Error returned from
TryFrom<char>::try_fromforNonZeroCharif the char was zero
Traits§
- String
Type alloc - Trait for standard utf-8 string types. Implemented for
&str,String,Box<str>andCow<'_, str>