#迭代器 #特质 #结构体 #转换 #便利

structinator_traits

允许将数据从迭代器传输到结构体的特质库

2 个不稳定版本

0.2.0 2024年7月11日
0.1.5 2023年8月4日

#1763 in Rust 模式

Download history 4/week @ 2024-05-26 8/week @ 2024-06-30 115/week @ 2024-07-07 13/week @ 2024-07-14 55/week @ 2024-07-28

183 每月下载量
用于 2 个包(通过 structinator

Apache-2.0

6KB

structinator_traits 旨在与 structinator 一起使用,这是一个自动实现 SpecifyCreatableStruct 特质的库。然而,这个库也非常有用,因为它包含传递给 create_struct 的参数必须迭代的类型,或者可以用来混合自定义和自动实现的 SpecifyCreatableStruct。更多信息,请查看下面的文档。


lib.rs:

Struct-inator 特质

这是一个实现特质的库,SpecifyCreatableStruct - 当实现时,允许 Rust Iterators 和实现 SpecifyCreatableStruct 的类型之间快速轻松地转换。

更具体地说,任何实现 SpecifyCreatableStruct 的类型必须实现 create_struct,这是一个将 Iterator 转换为 NamedField<I> 的函数,其中 IInnerIteratorType 相同

您可以自己实现此特质,或者可以使用 structinator 自动为用户定义的结构体实现它

示例

use structinator_traits::*;
use structinator::iter_convertable;
use enum_unwrapper::unique_try_froms;
#[unique_try_froms()]
enum WaffleInfo {
    Topping(u8),
    Layers(u16),
}
#[iter_convertable(WaffleInfo)]
struct Waffles {
    syrup_amount: u8,
    butter_amount: u8,
    layer_count: u16,
}
fn main() {
    let mut iterator = [NamedField::<WaffleInfo> {
        name: String::from("butter_amount"),
       wrapped_value: WaffleInfo::Topping(44),
    }, NamedField::<WaffleInfo> {
        name: String::from("layer_count"),
        wrapped_value: WaffleInfo::Layers(444),
    }, NamedField::<WaffleInfo> {
        name: String::from("syrup_amount"),
        wrapped_value: WaffleInfo::Topping(4),
    }].into_iter();
    let generated_struct = Waffles::create_struct(&mut iterator).unwrap();
    assert_eq!(4,generated_struct.syrup_amount);
    assert_eq!(44,generated_struct.butter_amount);
    assert_eq!(444,generated_struct.layer_count);
}

无运行时依赖项