在其他语言(如 Java)中,库可用于将对象字段映射到另一个对象(如mapstruct)。它对于将控制器和服务彼此隔离确实很有用。
PersonDto personDto = mapper.businessToDto(personBusiness);
Run Code Online (Sandbox Code Playgroud)
我找不到如何用 Rust 来做到这一点?我没有发现任何图书馆可以帮助解决这个问题,也没有任何方法可以做到这一点。任何资源将不胜感激!
在 Rust 中,你通常通过Fromtrait 来实现:
struct Person {
name: String,
age: u8,
}
struct PersonDto {
name: String,
age: u64,
}
impl From<Person> for PersonDto {
fn from(p: Person) -> Self {
Self {
name: p.name,
age: p.age.into(),
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以你可以进行Into转换:
let person = Person { name: "Alex".to_string(), age: 42 };
let person_dto: PersonDto = person.into();
// or via an explicit `T::from:
let person_dto = PersonDto::from(person);
Run Code Online (Sandbox Code Playgroud)