#hash-map #vec #collection #derive

已删除 thisisplural_derive

#[derive(Plural)] 用于创建与 Vec、HashMap 等无缝的新类型

0.1.0 2021年9月11日

#376 in #vec

MIT/Apache

7KB
151 代码行

thisisplural

GitHub MIT/Apache 2.0 Crates.io docs.rs

#[derive(Plural)] 用于创建与 Vec、HashMap 等无缝的新类型。

功能

  • #[derive(Plural)] 实现了 FromIntoFromIteratorIntoIteratorDerefDerefMut
  • 支持 VecHashMap(在此处添加其他集合非常容易)。

示例

#[derive(Plural)]
struct Numbers(Vec<u32>);

// use From trait
let mut my_favorite_numbers: Numbers = vec![].into();

// use DerefMut trait.
my_favorite_numbers.push(42);

// HashMap is also supported
#[derive(Plural)]
struct FavoriteNumbers(HashMap<&'static str, Numbers>);

// use FromIterator trait
let favorite_numbers = FavoriteNumbers::from_iter([("ryo33", my_favorite_numbers)]);

// use IntoIterator trait
for (name, numbers) in favorite_numbers {
		// use Deref trait
		println!("{} has {} favorite number(s)", name, numbers.len());
}

依赖关系

~1.5MB
~36K SLoC