Awesome
BiMap
A Motoko module for bijective maps.
A bimap (or "bidirectional map") is a map that preserves the uniqueness of its values as well as that of its keys.
Usage
let m = BiMap.New(
BiHashMap.empty<Nat, Text>(0, Nat.equal, Hash.hash),
BiHashMap.empty<Text, Nat>(0, Text.equal, Text.hash),
Text.equal,
);
m.insert(0, "a");
m.getByLeft(0);
// [(0, "a")];
m.getByRight("a");
// [(0, "a")];
Works with any object
that implements the following interface:
type Map<L, R> = {
// Returns the number of entries in this map.
size() : Nat;
// Returns an iterator over the key value pairs in this map.
entries() : Iter.Iter<(L, R)>;
// Gets the entry with the key `k` and returns its associated value if it existed or `null` otherwise.
get(k : L) : ?R;
// Removes the entry with the key `k` and returns the associated value if it existed or `null` otherwise.
remove(k : L) : ?R;
// Insert the value `v` at key `k`. Overwrites an existing entry with key `k`.
put(k : L, v : R) : ();
};
Predefined Empty Map Generators
- TrieMap
- HashMap