4个版本
新增 0.1.4 | 2024年8月23日 |
---|---|
0.1.3 | 2024年8月10日 |
0.1.2 | 2024年8月10日 |
0.1.1 |
|
0.1.0 | 2024年8月10日 |
391 在 过程宏 中
每月 202 次下载
7KB
small_iter_fields
此crate添加了 #[derive(IterFields)]
和 #[derive(LenFields)]
。
它适用于
- 枚举
已知限制
- 枚举变体必须没有数据
示例
use std::collections::HashMap;
use small_iter_fields::{IterFields, LenFields};
#[derive(IterFields, LenFields, Hash, PartialEq, Eq)]
enum Stage {
Start,
Middle,
End,
}
let mut vec: Vec<Stage> = Vec::with_capacity(Stage::len());
assert!(vec.capacity() >= 3);
for stage in Stage::iter_fields() {
vec.push(stage);
};
assert!(vec.contains(&Stage::Start));
assert!(vec.contains(&Stage::Middle));
assert!(vec.contains(&Stage::End));
let map: HashMap<Stage, Vec<i32>> = Stage::to_hashmap(Vec::new());
assert!(map.capacity() >= 3);
assert_eq!(map.get(&Stage::Start), Some(&Vec::new()));
许可证
MIT 或 Apache-2.0
lib.rs
:
示例
use std::collections::HashMap;
use small_iter_fields::{IterFields, LenFields};
#[derive(IterFields, LenFields, Hash, PartialEq, Eq)]
enum Stage {
Start,
Middle,
End,
}
let mut vec: Vec<Stage> = Vec::with_capacity(Stage::len());
assert!(vec.capacity() >= 3);
for stage in Stage::iter_fields() {
vec.push(stage);
};
assert!(vec.contains(&Stage::Start));
assert!(vec.contains(&Stage::Middle));
assert!(vec.contains(&Stage::End));
let map: HashMap<Stage, Vec<i32>> = Stage::to_hashmap(Vec::new());
assert!(map.capacity() >= 3);
assert_eq!(map.get(&Stage::Start), Some(&Vec::new()));
枚举必须没有与之关联的数据
use small_iter_fields::IterFields;
#[derive(IterFields)]
enum DataEnum {
Data(bool),
}
依赖
~250–690KB
~17K SLoC