1 个不稳定版本

0.1.0 2021年10月31日

#8#converted

自定义许可

6KB
66 行代码(不包括注释)

type-change

可以将具有相同名称字段的类型转换为另一种类型。

用法

use type_change::From;

#[derive(Clone)]
struct Foo {
    id: i64,
    name: String,
}

#[derive(From)]
#[from(Foo)]
struct Bar {
    id: i64,
    name: String,
}

// equal to follows
//
// impl From<Foo> for Bar {
//     fn from(foo: Foo) -> Bar {
//         Bar { id: foo.id, name: foo.name }
//     }
// }
//

let foo = Foo { id: 1, name: "foo".to_string() };
let bar = Bar { name: "bar".to_string(), ..foo.clone().into() };
assert_eq!(foo.id, bar.id);

注意事项

  • 只有具有相同字段名称的结构体才能进行转换。
  • 所有字段名称必须匹配且可访问。

贡献

感谢!


lib.rs:

可以将具有相同名称字段的类型转换为另一种类型。

用法

use type_change::From;

#[derive(Clone)]
struct Foo {
    id: i64,
    name: String,
}

#[derive(From)]
#[from(Foo)]
struct Bar {
    id: i64,
    name: String,
}

// equal to follows
//
// impl From<Foo> for Bar {
//     fn from(foo: Foo) -> Bar {
//         Bar { id: foo.id, name: foo.name }
//     }
// }
//

let foo = Foo { id: 1, name: "foo".to_string() };
let bar = Bar { name: "bar".to_string(), ..foo.clone().into() };
assert_eq!(foo.id, bar.id);

注意事项

  • 只有具有相同字段名称的结构体才能进行转换。
  • 所有字段名称必须匹配且可访问。

贡献

感谢!

依赖关系

~1.5MB
~35K 行额外代码