【发布时间】:2021-08-14 19:13:19
【问题描述】:
我有两个具有相同名称、字段(和字段类型)的相同结构,它们位于不同的模块中。这些是由派生宏构造的,并且希望轻松地从一个转换为另一个。
例如
mod a {
struct A {
field1: String,
field2: String,
}
}
mod b {
struct A {
field1: String,
field2: String,
}
}
我希望能够做到let a: a::A = a::A::from(b::A) 或类似的。
impl From<b::A> for a::A 需要在from() 方法中写入两个结构中的所有字段。如果没有所有相关的样板文件,有什么方法可以实现这一点?
【问题讨论】:
-
您能详细介绍一下派生宏吗?也许是 MRE?
-
@DenysSéguret 这些是由
graphql-clientcrate 构造的结构。它为每个查询创建结构,但在我的情况下,我为所有查询使用一个片段,因此生成的结构都是相同的 -
相关:github.com/graphql-rust/graphql-client/issues/312 但看起来他们并没有设法解决重构问题
-
谢谢@DenysSéguret - 我以前见过这个问题,但忽略了描述中提出的解决方法,它可以解决问题
标签: struct rust type-conversion