设置
寻找最简单的解决方案,而改变类型的结构更新语法是不稳定的。我有以下结构:
struct A<T> {
i1: i32,
i2: i32,
pd: PhantomData<T>,
s: String,
}
字符串
注意事项
实际上,结构体有更多的字段,它们有长的有意义的名称。此外,它们中的一些具有第三方类型和/或表示一些外部资源(例如,第三方资源)。HTTP连接等)。
问题
我必须实现这个函数:
fn into_unit<T>(a: A<T>) -> A<()>;
型
什么是最简单的方法,而不需要我重复所有的字段?
我的尝试
下面是我对frunk
的尝试,但它需要一些破译才能理解,所以它不一定比纯粹的析构方法简单:
fn into_unit<T>(a: A<T>) -> A<()> {
let a = frunk::into_labelled_generic(a);
frunk::from_labelled_generic(hlist![field![_, PhantomData::<()>], ...a].sculpt().0)
}
型
1条答案
按热度按时间kpbwa7wx1#
您可以将结构体定义 Package 在一个宏中,该宏将生成相应的
into_unit
实现:字符串
Playground