4 releases
0.1.3 | Mar 11, 2023 |
---|---|
0.1.2 | Mar 11, 2023 |
0.1.1 | Mar 11, 2020 |
0.1.0 | Mar 11, 2020 |
#5 in #atoms
4KB
66 lines
Atomize
Elixir style atoms for Rust
From Elixir: An atom is a constant whose value is its own name. Some other languages call these symbols. They are often useful to enumerate over distinct values.
Creating an Atom
use atomize::{a, Atom};
fn main() {
// `a!(apple)` will always create the same value
let apple: Atom = a!(apple);
assert_eq!(apple, a!(apple));
}
Atom Equality
Atoms are compared in O(1) time. In fact, they compile to simple u64 and so are compared in a single x64 operation
assert_eq!(a!(orange), a!(orange));
assert_ne!(a!(orange), a!(apple));
Mixing
Atoms can also be mixed
let apple_and_orange = a!(apple) + a!(orange);
assert_eq!(apple_and_orange, a!(orange) + a!(apple));
Dependencies
~1.5MB
~38K SLoC