#trie #prefix-tree #retrieval-tree #digital-tree

lr_trie

Left-Right trie is trie capable of mapping any string to any string

7 stable releases (3 major)

new 4.0.1 Mar 24, 2025
3.3.1 Mar 23, 2025
2.0.2 Mar 21, 2025
1.5.1 Mar 21, 2025
1.3.0 Jul 28, 2024

#893 in Data structures

Download history 71/week @ 2024-12-09 48/week @ 2024-12-16 37/week @ 2025-02-10 72/week @ 2025-02-17 134/week @ 2025-02-24 510/week @ 2025-03-03 253/week @ 2025-03-10 487/week @ 2025-03-17

1,392 downloads per month

MIT license

70KB
1.5K SLoC

Left-Right Trie

Left-Right trie is trie that allows mapping of any string to any string with complexity based on alphabet used size.

const ONE: &str = "emoción";
const ANOTHER: &str = "emotion";
const REPLACEMENT: &str = "equilibrio sicofísico";

let mut trie = LrTrie::new();

let one = &KeyEntry::new(ONE).unwrap();
let another = &KeyEntry::new(ANOTHER).unwrap();
let replacement = &KeyEntry::new(REPLACEMENT).unwrap();

trie.insert(one, another);
assert!(trie.member(one, LeftRight::Left).is_some());
assert!(trie.member(another, LeftRight::Left).is_none());
assert!(trie.member(another, LeftRight::Right).is_some());

trie.insert(one, replacement);
assert_eq!(
    Some(String::from(REPLACEMENT)),
    trie.member(&one, LeftRight::Left)
);
assert!(trie.member(another, LeftRight::Right).is_none());
assert_eq!(
    Some(String::from(ONE)),
    trie.member(replacement, LeftRight::Right)
);

assert_eq!(Ok(()), trie.delete(one, LeftRight::Left));

assert!(trie.member(one, LeftRight::Left).is_none());
assert!(trie.member(replacement, LeftRight::Right).is_none());

assert_eq!(Err(()), trie.delete(replacement, LeftRight::Right));

No runtime deps