【发布时间】:2017-12-13 10:55:55
【问题描述】:
可以通过将构造函数作为闭包参数传递给wrap 函数来初始化元组结构A 或枚举B。
这不适用于结构体D,它的字段名为x:
fn wrap<A, B, F>(item: A, f: F) -> B
where
F: Fn(A) -> B,
{
f(item)
}
#[derive(Debug)]
struct A<T>(T);
#[derive(Debug)]
enum B<T> {
C(T),
}
#[derive(Debug)]
struct D<T> {
x: T,
}
fn main() {
println!("{:?}", wrap(1, A)); // prints A(1)
println!("{:?}", wrap(1, B::C)); // prints C(1)
// println!("{:?}", wrap(1, D)); // sounds good, doesn’t work
}
是否有可能以某种方式使其适用于具有命名字段的结构?
【问题讨论】: