trying

Crates.iotrying
lib.rstrying
version0.5.1
sourcesrc
created_at2021-10-22 14:44:48.466472
updated_at2023-07-29 08:20:29.827982
descriptionBasic trie crate
homepage
repositoryhttps://github.com/garypen/trying
max_upload_size
id469390
size677,022
Gary Pennington (garypen)

documentation

README

trying

Provides a simple Trie implementation for storing "keys" composed of "atoms".

The trie imposes restrictions on the key, atom and value types:

(where A represents the Atom type that the key will be represented as)

With these restrictions in place, the trie implements a reasonably efficient mechanism for:

  • prefix matching
  • representing large quantities of data with common prefixes
  • finding shortest unique prefix
  • finding alternative values
  • finding longest common prefixes

For Example:

use trying::trie::TrieVec;
use unicode_segmentation::UnicodeSegmentation;

// Declare a trie which will store &str keys
// with usize values.
let mut trie = TrieVec::<&str, usize>::new();
let s = "a̐éö̲\r\n";
let input = s.graphemes(true);
// Insert our graphemes into the trie
trie.insert(input.clone());
// Anything which implements IntoIterator<Item=&str> can now be used
// to interact with our Trie
assert!(trie.contains(input.clone()));
assert!(trie.remove(input.clone()).is_none());
assert!(!trie.contains(input));

If you don't need prefix matching, then a HashMap is almost always a better choice than a trie...

Crates.io

API Docs

Installation

[dependencies]
trying = "0.5"

Features are available.

License

Apache 2.0 licensed. See LICENSE for details.

Commit count: 31

cargo fmt