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 行额外代码