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

lr_trie

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

8 stable releases (3 major)

4.0.2 Mar 25, 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

#823 in Data structures

Download history 14/week @ 2024-12-18 95/week @ 2025-02-12 67/week @ 2025-02-19 329/week @ 2025-02-26 386/week @ 2025-03-05 237/week @ 2025-03-12 814/week @ 2025-03-19 158/week @ 2025-03-26 2/week @ 2025-04-02

1,253 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