| Crates.io | settrie |
| lib.rs | settrie |
| version | 0.1.3 |
| created_at | 2022-09-04 17:17:54.113757+00 |
| updated_at | 2024-07-02 10:29:36.202523+00 |
| description | Fast subset and superset queries |
| homepage | |
| repository | https://github.com/miochris/settrie |
| max_upload_size | |
| id | 658375 |
| size | 39,226 |
Fast subset and superset queries. It implemented Iztok Savnik's proposed data structure set-trie.
One difference from Iztok Savnik's data structure is, this implementation doesn't memorize a set which ends in a non-leaf node of existing set.
use settrie::SetTrie;
fn main(){
let mut set_trie = SetTrie::new();
set_trie.insert_set(&[1, 2, 3]);
set_trie.insert_set(&[1, 2, 3, 5]);
set_trie.insert_set(&[1, 2, 4]);
assert_eq!(
set_trie.get_supersets(&[1, 2]),
vec![vec![1, 2, 3, 5], vec![1, 2, 4]]
);
assert_eq!(set_trie.exist_subset(&vec![1, 2, 3, 5]), true);
assert_eq!(set_trie.exist_superset(&vec![1, 2]), true);
assert_eq!(
set_trie.get_all_supersets(),
vec![vec![1, 2, 3, 5], vec![1, 2, 4]]
);
assert_eq!(set_trie.get_supersets(&[1, 3, 5]), vec![vec![1, 2, 3, 5]]);
assert_eq!(
set_trie.get_subsets(&[1, 2, 3, 5, 7]),
vec![vec![1, 2, 3, 5]]
);
}