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 |
#2622 in Data structures
675 downloads per month
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
~18K SLoC