19 个稳定版本

2.6.8 2023 年 2 月 11 日
2.6.2 2023 年 2 月 10 日
2.5.0 2022 年 8 月 16 日
1.2.1 2022 年 8 月 6 日
0.1.1 2022 年 5 月 20 日

588Rust 模式 中排名

Download history 5/week @ 2024-03-11 62/week @ 2024-04-01

165 每月下载量
kafkaesque 中使用

MIT 许可证

7KB
59

派生字段间的简单转换,这些字段主要是解包并将类似命名的字段从源转换为目标。示例用法

use namewise;
use std::collections::HashSet;

struct Source {
    a: &'static str,
    text: String,
    numeric: i16,
    truth: bool,
    truths: Vec<bool>,
}

#[derive(namewise::From)]
#[namewise_from(from_type = "Source")]
struct Destination {
    a: String,
    text: String,
    #[namewise_from(from_name = "numeric")]
    number: i64,
    #[namewise_from(collect)]
    truths: HashSet<bool>,
}

这应该等同于

use std::collections::HashSet;

struct Source {
    a: &'static str,
    text: String,
    numeric: i16,
    truth: bool,
    truths: Vec<bool>,
}

struct Destination {
    a: String,
    text: String,
    number: i64,
    truths: HashSet<bool>,
}

impl From<Source> for Destination {
    fn from(value: Source) -> Destination {
        Destination {
            a: value.a.into(),
            text: value.text.into(),
            number: value.numeric.into(),
            truths: value.truths.into_iter().collect(),
        }
    }
}

依赖项

~1.2–1.7MB
~35K SLoC