Crates.io | easy_collections |
lib.rs | easy_collections |
version | 0.4.0 |
source | src |
created_at | 2020-12-31 03:58:42.000719 |
updated_at | 2023-06-20 10:20:50.765817 |
description | Wrappers around standard collections for ease of use and quick prototyping |
homepage | https://github.com/acheronfail/easy_collections |
repository | https://github.com/acheronfail/easy_collections |
max_upload_size | |
id | 329509 |
size | 40,518 |
These are wrappers around HashSet
and HashMap
which make them a little more convenient to use.
They aren't intended for use in main applications, but were created to make prototyping and writing short programs easier.
The struct EasySet
wraps HashSet
with some useful trait implementations.
use easy_collections::set;
let a = &set!{1, 2, 3};
let b = &set!{2, 3, 4};
assert_eq!(a & b, set!{2, 3}); // intersection
assert_eq!(a | b, set!{1, 2, 3, 4}); // union
assert_eq!(a ^ b, set!{1, 4}); // symmetric difference
assert_eq!(a - b, set!{1}); // difference
let c = &set!{1, 2, 3, 4};
assert!(a < c && b < c); // subset
assert!(c > a && c > b); // superset
assert!(*a == set!{1, 2, 3}); // equality
The struct EasyMap
wraps HashMap
with some useful trait implementations.
use easy_collections::{EasyMap, map};
// `42` here is the default value which is returned when no item exists in the map
// The default value is optional.
let map = map!{42; ("foo", 1), ("bar", 10), ("baz", 100)};
assert_eq!(map["foo"], 1);
assert_eq!(map["bar"], 10);
assert_eq!(map["baz"], 100);
assert_eq!(map["nope"], 42);
assert_eq!(map["nada"], 42);
assert_eq!(map["nuttin'"], 42);
// If you want to create a map with just a single value, and no default, use a trailing comma:
let map: EasyMap<&str, (&str, &str)> = map!{("foo", "bar")};
let map: EasyMap<&str, &str> = map!{("foo", "bar"),};
Also, both EasyMap
and EasySet
deref to their underlying collections, for example:
use std::collections::{HashMap, HashSet};
use easy_collections::{EasyMap, EasySet, map, set};
let easy: EasySet<_> = set!{"foo", "bar"};
let hash: &HashSet<_> = &*easy;
assert_eq!(&*easy, hash);
let easy: EasyMap<_, _> = map!{("foo", "bar"),};
let hash: &HashMap<_, _> = &*easy;
assert_eq!(&*easy, hash);
License: Unlicense OR MIT OR Apache-2.0