[−][src]Crate fast_map
A small library and custom derive to create a map-like struct that uses match expressions to get
and insert
values.
If you know your keys at compile-time, this library will likely be faster than HashMap
for supported map operations.
Provides the following operations on the wrapping struct (via derive
macros):
MyMap::get
, returnsResult<Option<&V>, Error>
MyMap::get_mut
, returnsResult<Option<&mut V>, Error>
MyMap::insert
, returnsResult<Option<V>, Error>
, whereV
is the old value if one existsMyMap::remove
, returnsResult<Option<V>, Error>
MyMap::values
, returns an iterator over&V
s
If you know that your operations cannot fail (e.g. if your key type is an enum
, and you list all variants as keys),
you can add infallible = true
to your derive attributes, which will unwrap
the result of your map operations.
Usage
fn main() { pub enum A { A, B, C, D }; #[derive(Default, fast_map::FastMap)] // We know this cannot fail, since we list all the `enum` variants, so we add `infallible = true` #[fast_map(infallible = true, keys(A::A, A::B, A::C, A::D))] struct Foo(fast_map::Map4<A, String>); let mut foo = Foo::default(); foo.insert(A::B, "B".into()); assert_eq!(foo.get(A::B), Some(&"B".to_string())); assert_eq!(foo.get(A::C), None); foo.insert(A::C, "C".into()); assert_eq!(foo.values().collect::<Vec<_>>().len(), 2); }
Changelog
0.2.1
- Add the non-erroring operations back as depending on macro attribute (
infallible = true
). Default isfalse
.
0.2.0
- Removed
easy
andstrict
MapLike
traits. It's better to handle unknown keys explicitly, even forget
s. - Added
get_mut
operation to the wrapping struct
Structs
Map1 | Container for a |
Map2 | Container for a |
Map3 | Container for a |
Map4 | Container for a |
Map5 | Container for a |
Map6 | Container for a |
Map7 | Container for a |
Map8 | Container for a |
Map9 | Container for a |
Map10 | Container for a |
Map11 | Container for a |
Map12 | Container for a |
Map13 | Container for a |
Map14 | Container for a |
Map15 | Container for a |
Map16 | Container for a |
Map17 | Container for a |
Map18 | Container for a |
Map19 | Container for a |
Map20 | Container for a |
Map21 | Container for a |
Map22 | Container for a |
Map23 | Container for a |
Map24 | Container for a |
Map25 | Container for a |
Map26 | Container for a |
Map27 | Container for a |
Map28 | Container for a |
Map29 | Container for a |
Map30 | Container for a |
Map31 | Container for a |
Map32 | Container for a |
Map48 | Container for a |
Map64 | Container for a |
Values | Iterator over existing values |
Enums
Error | Currently just |
Derive Macros
FastMap |