easy_collections

Crates.ioeasy_collections
lib.rseasy_collections
version0.4.0
sourcesrc
created_at2020-12-31 03:58:42.000719
updated_at2023-06-20 10:20:50.765817
descriptionWrappers around standard collections for ease of use and quick prototyping
homepagehttps://github.com/acheronfail/easy_collections
repositoryhttps://github.com/acheronfail/easy_collections
max_upload_size
id329509
size40,518
(acheronfail)

documentation

README

crate documentation Average time to resolve an issue Percentage of issues still open

easy_collections

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.

Usage

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

Commit count: 19

cargo fmt