Expand description
A no_std typemap with trait-based value-presence guarantees (on nightly)
aka: A map from a type to a value of that type, without needing std/alloc
§Example
use typemap_core::{typemap, Contains, TypeMapGet};
fn uses_options<Opts: Contains<&'static str> + Contains<u32>>(opts: &Opts) {
println!("str: \"{}\", u32: {}", opts.get::<&str>(), opts.get::<u32>());
}
let options = typemap!(u128 = 34u128, &str = "Hello, world!", u32 = 45u32);
uses_options(&options);
§Nightly
Nightly is not required to use this library, but it is reccomended to at least check your code on nightly
occasionally given the nature of the Contains<T>
and ContainsMut<T>
traits.
On nightly, these traits ensure that you can only call the methods that panic
when they are guaranteed not to panic.
On stable, we can’t implement it properly, so it merely has a blanket impl so that your trait bounds
setup for nightly do not cause issues on stable.
Macros§
- typemap
- Helper for creating a value of a typemap.
- typemap_
ty - Helper for expressing the type of a typemap.
Structs§
Traits§
- Contains
- The Contains trait marks a map as containing at least one instance of a given type that can be accessed
- Contains
Mut - The ContainsMut trait marks a map as containing at least one instance of a given type that can be mutated
- Type
MapGet - The TypeMapGet trait allows for obtaining values of types from a typemap.
- Type
MapSet - The TypeMapSet trait allows for setting values of types in a typemap.