The keys should be first sorted by length and then lexicographically.
character type
static immutable sortedKeys = ["", "a", "b", "aab", "abb", "aaaaa"]; static immutable table = MirStringTable!ubyte(sortedKeys); // CTFE static assert (table[""] == 0); static assert (table["a"] == 1); static assert (table["b"] == 2); static assert (table["abb"] == 4); assert (table["aaaaa"] == 5);
import mir.utility: simpleSort; auto keys = ["aaaaa", "abb", "", "b", "a", "aab"]; // sorts keys by length and then lexicographically. keys.simpleSort!smallerStringFirst; assert(keys == ["", "a", "b", "aab", "abb", "aaaaa"]);
Fast string table used to get key's id. The keys should be first sorted by length and then lexicographically.