Cantor is a general toolkit for working with types that have a small number of values (typically,
but not exclusively enum
s). This crate defines the Finite
trait and implements several
efficient zero-allocation algorithms on top of it.
Applications
- Iterating over possible values
- Value compression
- Array-based maps
- Bitmap sets
Example
// Define a "Finite" type
// Value iteration
let mut num_values = 0;
for _ in iter
assert_eq!;
// Value compression
let value = B;
assert_eq!;
let compressed = compress;
assert_eq!;
assert_eq!;
// Array map
let mut map = default;
map = 1;
map = 2;
assert_eq!;
assert_eq!;
assert_eq!;
// Bitmap set
let mut set = none;
set.include;
set.include;
set.include;
assert_eq!;
assert!;
assert!;