[−][src]Crate fixed_map
A fixed-size Map implementation.
This crate provides a map implementation that can make use of a fixed-size backing storage.
The Key derive
The Key derive is provided to construct optimized storage for a given Key.
For example:
use fixed_map::{Key, Map}; #[derive(Clone, Copy, Key)] enum Part { One, Two, } #[derive(Clone, Copy, Key)] enum Key { Simple, Composite(Part), String(&'static str), Number(u32), Singleton(()), } let mut map = Map::new(); map.insert(Key::Simple, 1); map.insert(Key::Composite(Part::One), 2); map.insert(Key::String("foo"), 3); map.insert(Key::Number(1), 4); map.insert(Key::Singleton(()), 5); assert_eq!(map.get(Key::Simple), Some(&1)); assert_eq!(map.get(Key::Composite(Part::One)), Some(&2)); assert_eq!(map.get(Key::Composite(Part::Two)), None); assert_eq!(map.get(Key::String("foo")), Some(&3)); assert_eq!(map.get(Key::String("bar")), None); assert_eq!(map.get(Key::Number(1)), Some(&4)); assert_eq!(map.get(Key::Number(2)), None); assert_eq!(map.get(Key::Singleton(())), Some(&5));
Unsafe Use
This crate uses unsafe for its iterators. This is needed because there is no proper way to associate generic lifetimes to associated types.
Instead, we associate the lifetime to the container (Map or Set) which wraps a set of unsafe derefs over raw //! pointers.
Re-exports
pub use self::map::Map; |
pub use self::set::Set; |
Modules
| key | Module for the trait to define a |
| map | Contains the fixed |
| set | Contains the fixed |
| storage | Module for the trait to define |
Derive Macros
| Key | Derive to implement the |