下面的代码,我得到一个traitcore::种::大小
没有实现类型Object'a
错误。我已经删除了触发错误不需要的所有其他代码。
fn main() {
}
pub trait Object {
fn select(&mut self);
}
pub struct Ball<'a>;
impl<'a> Object for Ball<'a> {
fn select(&mut self) {
// Do something
}
}
pub struct Foo<'a> {
foo: Vec<Object + 'a>,
}
游戏Geofence:http://is.gd/tjDxWl
完全错误是:
<anon>:15:1: 17:2 error: the trait `core::kinds::Sized` is not implemented for the type `Object+'a`
<anon>:15 pub struct Foo<'a> {
<anon>:16 foo: Vec<Object + 'a>,
<anon>:17 }
<anon>:15:1: 17:2 note: the trait `core::kinds::Sized` must be implemented because it is required by `collections::vec::Vec`
<anon>:15 pub struct Foo<'a> {
<anon>:16 foo: Vec<Object + 'a>,
<anon>:17 }
error: aborting due to previous error
playpen: application terminated with error code 101
我是个新手,不知道从这里该去哪里。有什么建议吗?
这里的根本问题是:
您要存储对象的向量。现在,向量是一个平面数组:每个条目后面都有一个。但是对象是一个特性,虽然你只为球实现了它,但你也可以为帽子和三角形实现它。但这些可能在内存中大小不同!所以Object本身没有大小。
有两种方法可以解决这个问题:
我希望这能奏效: ...但它没有: 游戏Geofence:http://is.gd/kxDt0P 那么,发生了什么事? 我不知道这个错误是什么意思。 是因为我使用的是Result,而这要求U,V不是大小的吗?在这种情况下,它们的尺寸为何?我没有写: 所有泛型现在都是动态调整大小还是什么?(在这种情况下,大小是什么?甚至是什么意思?) 怎么回事啊?
我有广泛的基本特征。有些类型只关心其功能的子集,所以我添加了一个子集,要求用户实现更小的功能集。 此代码失败: 出现以下错误: 有趣的是,当我删除上的通用性时,它就起作用了: stackoverflow上的其他一些帖子也提到了类似的问题,但它们通常都有关于外来特征的问题(来自标准库的)。在我的案例中,特质和类型都是本地的,因此就我所知,孤儿规则不应该生效。 基本上,错误提到下游板条箱可能实现tra
下面是我的xsd模式文件:
我有一个问题: 多个结构实现一个trait 都可以以相同的方式实现trait 我考虑过写这个(简短版本) 游戏场 这无法编译: 这里怎么了?或者有没有其他方法可以通用地实现此,而不必为和分别键入一次? 谢谢你们
我想为