6 个版本 (3 个破坏性版本)
0.4.0 | 2024 年 4 月 3 日 |
---|---|
0.3.0 | 2022 年 5 月 11 日 |
0.2.0 | 2021 年 9 月 12 日 |
0.1.2 | 2021 年 9 月 11 日 |
#1405 在 Rust 模式
每月 34 下载
13KB
270 行
thisisplural
#[derive(Plural)]
用于创建与任何集合类型。
功能
- 自动实现
From
,Into
,FromIterator
,IntoIterator
和.len()
或::with_capacity
等方法。 - 支持任何类似
Vec
和HashMap
的集合。
示例
// This implements `From`, `Into`, `FromIterator`, `IntoIterator`.
#[derive(Plural)]
struct Numbers(Vec<u32>);
// use `From` trait
let my_favorite_numbers: Numbers = vec![].into();
// methods like `len()` are implemented
assert_eq!(my_favorite_numbers.len(), 0);
assert!(my_favorite_numbers.is_empty());
// `FromIterator` allows this `collect()`
let doubled_numbers: Numbers = my_favorite_numbers.iter().map(|x| x * 2).collect();
// `HashMap` like collections are also supported
#[derive(Plural)]
struct FavoriteNumbers(HashMap<&'static str, Numbers>);
// construct the struct with using `FromIterator`
let favorite_numbers =
FavoriteNumbers::from_iter([("ryo33", my_favorite_numbers), ("someone", doubled_numbers)]);
// use it in a `for` loop (`IntoIterator` trait)
for (name, numbers) in favorite_numbers {
// use Deref trait
println!("{} has {} favorite number(s)", name, numbers.0.len());
}
依赖
~250–690KB
~16K SLoC