This collectables
Rust crate provides helpers
for BTreeMap, BTreeSet, HashMapSet, etc. By SixArm.com.
This crate provides two general-purpose collections helpers:
BTreeMapToSet
HashMapToSet
Example that maps a word to a set of other words:
```rust // Use this crate use collectables::*;
// Create an empty hash map, where each vaue is a hash set.
let mut a: HashMapToSet
/// Create some example strings let hello = String::from("hello"); // English example let ninhao = String::from("nǐn hǎo"); // Chinese example let hola = String::from("hola"); // Spanish example
// Insert items, such as mapping the word "hello" to various tranlations. // The first parameter is a map key; the second parameter is a set item. a.subinsert(hello.tostring(), ninhao.tostring()); a.subinsert(hello.tostring(), hola.tostring());
// Does the collection contain a word map key to a word set item? asserteq!(a.subcontains(&hello, &ninhao), true);
// Remove an item from the map key set. a.sub_remove(&hello, &ninhao);
// These collections helpers are implemented as trait extensions, // thus all HashMap functions and HashSet functions are available, // and can be intermixed with the HashMapSet trait extensions. assert_eq!(a.get(&hello).unwrap().contains(&hola), true);
This crate provides two specific-purpose collections helpers:
BTreeMapOfFileLenToSetOfPathBuf is based on BTreeMap
HashMapOfFileLenToSetOfPathBuf is based on HashMap
The helpers are implemented as trait extensions i.e. the helpers add functions to existing Rust std::collections code.
```rust // Use this crate use collectables::*;
// Create a path to an existing file let alpha = std::path::PathBuf::from("alpha.txt");
// Create a collection to map the file length to a set of path buffers. let mut a: HashMapOfFileLenToSetOfPathBuf = HashMapOfFileLenToSetOfPathBuf::new();
// Insert the path, which uses the path metadata file length as a map key. a.subinsertpath(alpha.clone());
// Does the collection contain a path? asserteq!(a.subcontains_path(&alpha), true);
// Remove an item from the map key set a.subremovepath(alpha.clone()); ```
Contact: Joel Parker Henderson joel@joelparkerhenderson.com
License: MIT or Apache-2.0 or GPL-2.0-only