Crates.io | c8str |
lib.rs | c8str |
version | 0.1.1 |
source | src |
created_at | 2024-07-22 17:12:38.756342 |
updated_at | 2024-07-22 22:52:18.887149 |
description | String types that are both utf-8 and null terminated |
homepage | |
repository | https://github.com/maia-s/c8str-rs |
max_upload_size | |
id | 1311401 |
size | 56,279 |
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:
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.
# use c8str::c8;
# use core::ffi::CStr;
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
alloc
- Enable the C8String
type. This requires the standard alloc
or std
crates.std
- Implement the Error
trait from std
for this crate's error types. Implies alloc
.