【发布时间】:2017-03-29 02:19:34
【问题描述】:
我有两个需要作为类型参数相互传递的通用特征。代码归结为这一点
pub trait Entity<T: EntityRenderer<Self>>
where Self: Sized
{
fn get_renderer(&self) -> &T;
}
pub trait EntityRenderer<T: Entity<Self>>
where Self: Sized
{
fn get_animation_frame(&T) -> u32;
}
Entity 需要知道EntityRenderer 是什么类型,反之亦然。后来,我有
entities: Vec<Box<Entity>>
这是一个问题,因为我无法解析Entity 的类型参数。我也不能将需要类型参数的任何一个函数都设为泛型,因为 Rust 的编译器不会让具有泛型方法的特征成为特征对象。
有什么解决方法吗?还是我违反了某种我不知道的内存安全法?
【问题讨论】: