3 个不稳定版本

0.2.1 2022 年 7 月 15 日
0.2.0 2022 年 7 月 15 日
0.1.0 2022 年 7 月 14 日

#191 in #variant

MIT 许可证

4KB

用于分离枚举迭代器的特剛

该特剛帮助将枚举的向量拆分为一个包含每个变体的向量的元组。它受到了当使用 collect 时,与 Result<Vec<_>, _> 一起使用的 Result 行为的启发。请告诉我是否可以在 Rust 中不使用宏实现此类功能。

使用 derive 宏,会产生对 Self&Self&mut Self 的实现。

use separable::Separable;

#[derive(Separable)]
enum Temperature {
    Celsius(f64),
    Fahrenheit(f64),
    Kelvin(f64)
}

fn main() {
    // A bunch of measurements...
    let measurements = vec![
        Temperature::Celsius(23.0),
        Temperature::Fahrenheit(2.0),
        Temperature::Celsius(22.5),
        Temperature::Kelvin(288.0),
        Temperature::Celsius(23.1),
        Temperature::Fahrenheit(5.0)
    ];
    
    // We separate the values of each variant, in order
    let (celsius, fahrenheit, kelvin) = measurements.into_iter().collect();
    
    // Quick verification
    assert_eq!(celsius, vec![23.0f64, 22.5f64, 23.1f64]);
    assert_eq!(fahrenheit, vec![2.0f64, 5.0f64]);
    assert_eq!(kelvin, vec![288.0f64]);
}

依赖项

~1.5MB
~35K SLoC