【发布时间】:2015-09-25 15:53:29
【问题描述】:
我想创建一个通用元组结构Producer,它可以容纳任何类型P,它实现了下面定义的特征Produce<T>。这会产生(预期的)注释错误:
trait Produce<T> {
fn get(&mut self) -> T;
}
// ERROR: parameter `T` is never used [E0392]
struct Producer<P,T>(P) where P: Produce<T>;
如果这是一个非元组结构,我可以通过添加 PhantomData<T> 字段并编写构造函数 Producer::new(p: P) 来将其隐藏为实现细节来解决此问题。但是,我在 Builder API 中将这种类型用作元组结构系列之一,因此使用传统的 struct + 构造函数感觉非常不合适。
有什么办法可以做到吗?
【问题讨论】: