3
我正在尝试开发一种批处理系统。其中我想使用某种Process
结构,它拥有所有与流程相关的部分。当前实现使用PhantomData
执行该类型的约束:避免结构中的PhantomData强制执行类型约束
pub struct Process<P: Producer<U>, T: Transformer<U, V>, C: Consumer<V>, U,V>
{
producer: P,
transformer: T,
consumer: C,
p1: PhantomData<U>,
p2: PhantomData<V>,
}
的想法是,类型由Producer
发射将由Transformer
可以使用(也许为不同的类型)和所消耗由Consumer
。因此类型必须匹配。
Process
结构应该拥有执行Producer
,Transformer
和Consumer
特征的项目。我想这就是为什么我需要使用类型参数。既然不能直接使用特质像
...
producer: Producer<U>,
...
,因为在编译时未知大小的。
有没有更好的方法来做到这一点?我对Rust很新,所以我可能会在错误的方向思考。
该解决方案有效,但与PhantomData
字段看起来有点奇怪。也许这只是PhantomData
用于?
哇,谢谢!这正是我正在寻找的东西,它看起来不再滥用PhantomData;) –