6 releases
0.2.3 | Jan 25, 2023 |
---|---|
0.2.2 | Aug 31, 2022 |
0.2.1 | Aug 2, 2021 |
0.2.0 | Jul 21, 2021 |
0.1.0 | Apr 2, 2021 |
#351 in Data structures
35 downloads per month
Used in icinga2-api
33KB
1K
SLoC
Enumoid
This crate is a Rust library which provides containers indexed by enums.
Dependency
[dependencies]
enumoid = "0.2"
Using Enumoid
The Enumoid trait provides a mapping between the values which inhabit a type
and the integers between 0 and n, where n is the number of distinct values.
This is used to provide several container data structures backed by fixed-size
arrays and generic over an Enumoid index of type T
.
For example, a total mapping:
let mut map = EnumMap::<FooBar, String>::new();
map[FooBar::Foo] = "Hello".to_string();
The Enumoid trait can be implemented for any enum type using the Enumoid derive macro.
#[derive(Enumoid)]
enum FooBar { Foo, Bar }
Licence
This crate is licensed under the Apache License, Version 2.0 (see LICENCE-APACHE or http://www.apache.org/licenses/LICENSE-2.0) or the MIT licence (see LICENCE-MIT or http://opensource.org/licenses/MIT), at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Dependencies
~0.9–1.4MB
~33K SLoC