#collection #set #map #operator #easy #wrapper

easy_collections

围绕标准集合的包装,以便于使用和快速原型设计

7 个不稳定版本

0.4.0 2023年6月20日
0.3.2 2021年1月3日
0.2.0 2021年1月2日
0.1.1 2020年12月31日

#1810 in 数据结构

Download history 1/week @ 2024-05-20 66/week @ 2024-07-08

66 每月下载次数
用于 2 crates

Unlicense OR MIT OR Apache-2.0

26KB
478

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

easy_collections

这些是围绕 HashSetHashMap 的包装,使它们使用起来更加方便。它们并不打算用于主应用,而是为了使原型设计和编写短程序更容易而创建的。

使用方法

结构体 EasySet 使用一些有用的特实现来包装 HashSet

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

结构体 EasyMap 使用一些有用的特实现来包装 HashMap

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"),};

此外,EasyMapEasySet 都将它们的基础集合解引用,例如

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);

许可证:Unlicense OR MIT OR Apache-2.0

依赖项