11 unstable releases (3 breaking)
0.4.1 | May 27, 2024 |
---|---|
0.4.0 | May 27, 2024 |
0.3.5-alpha | May 27, 2024 |
0.2.0 | Apr 26, 2024 |
0.1.2 | Apr 24, 2024 |
#2398 in Data structures
Used in structz
7KB
60 lines
stringz
Convert strings to types to make it available as generic parameters.
Install
cargo add stringz
For no_std
users:
cargo add stringz --no-default-features
Example
use stringz::{TypedString, string};
fn test_hello<T: TypedString>() {
assert_eq!(T::value(), "hello");
}
test_hello::<string!("hello")>();
Explanation
The string
macro converts "hello"
to the following tuple type:
(Character<'h'>, Character<'e'>, Character<'l'>, Character<'l'>, Character<'o'>)
Note: The above form is only for ease of understanding, the actual Tuple
type of
tuplez is used.
All generated types are zero-sized types:
use stringz::string;
assert_eq!(std::mem::size_of::<string!("no matter how long it is")>(), 0);
lib.rs
:
Convert strings to types to make it available as generic parameters.
Install
cargo add stringz
For no_std
users:
cargo add stringz --no-default-features
Example
use stringz::{TypedString, string};
fn test_hello<T: TypedString>() {
assert_eq!(T::value(), "hello");
}
test_hello::<string!("hello")>();
Explanation
The string
macro converts "hello"
to the following tuple type:
(Character<'h'>, Character<'e'>, Character<'l'>, Character<'l'>, Character<'o'>)
Note: The above form is only for ease of understanding, the actual Tuple
type of
tuplez is used.
All generated types are zero-sized types:
use stringz::string;
assert_eq!(std::mem::size_of::<string!("no matter how long it is")>(), 0);
Dependencies
~0.5–1MB
~20K SLoC