我希望这能奏效:
trait Task<R, E> {
fn run(&self) -> Result<R, E>;
}
mod test {
use super::Task;
struct Foo;
impl<uint, uint> Task<uint, uint> for Foo {
fn run(&self) -> Result<uint, uint> {
return Err(0);
}
}
fn can_have_task_trait() {
Foo;
}
}
fn main() {
test::can_have_task_trait();
}
...但它没有:
<anon>:10:3: 14:4 error: the trait `core::kinds::Sized` is not implemented for the type `<generic #0>`
<anon>:10 impl<uint, uint> Task<uint, uint> for Foo {
<anon>:11 fn run(&self) -> Result<uint, uint> {
<anon>:12 return Err(0);
<anon>:13 }
<anon>:14 }
<anon>:10:3: 14:4 note: the trait `core::kinds::Sized` must be implemented because it is required by `Task`
<anon>:10 impl<uint, uint> Task<uint, uint> for Foo {
<anon>:11 fn run(&self) -> Result<uint, uint> {
<anon>:12 return Err(0);
<anon>:13 }
<anon>:14 }
<anon>:10:3: 14:4 error: the trait `core::kinds::Sized` is not implemented for the type `<generic #1>`
<anon>:10 impl<uint, uint> Task<uint, uint> for Foo {
<anon>:11 fn run(&self) -> Result<uint, uint> {
<anon>:12 return Err(0);
<anon>:13 }
<anon>:14 }
<anon>:10:3: 14:4 note: the trait `core::kinds::Sized` must be implemented because it is required by `Task`
<anon>:10 impl<uint, uint> Task<uint, uint> for Foo {
<anon>:11 fn run(&self) -> Result<uint, uint> {
<anon>:12 return Err(0);
<anon>:13 }
<anon>:14 }
error: aborting due to 2 previous errors
playpen: application terminated with error code 101
Program ended.
游戏Geofence:http://is.gd/kxDt0P
那么,发生了什么事?
我不知道这个错误是什么意思。
是因为我使用的是Result,而这要求U,V不是大小的吗?在这种情况下,它们的尺寸为何?我没有写:
Task<Sized? R, Sized? E>
所有泛型现在都是动态调整大小还是什么?(在这种情况下,大小是什么?甚至是什么意思?)
怎么回事啊?
Rust不提供“泛型专门化”:您将您的特性定义为任务
仅使用特定类型(如您尝试使用
例如,如果你写了:
trait Foo<R> {}
struct Bar;
struct Baz;
impl<Baz> Foo<Baz> for Bar {}
您不应该期望实现区中的
Baz
与struct Baz
相同:它被隐藏,就像函数的var
参数将隐藏var
全局变量一样。
然而,当您使用原始类型执行此操作时,却获得了这个神秘的错误消息,而不是简单的阴影,这可能是一个错误,您应该有阴影或更清晰的错误消息。
你只需要删除
impl Task<uint, uint> for Foo { ... }
我认为您所遇到的错误是编译器对未使用的类型参数感到困惑。此超级精简版本也会出现这种情况:
trait Tr {}
impl<X> Tr for () {}
下面的代码,我得到一个trait没有实现类型错误。我已经删除了触发错误不需要的所有其他代码。 游戏Geofence:http://is.gd/tjDxWl 完全错误是: 我是个新手,不知道从这里该去哪里。有什么建议吗?
编译以下代码时: 我得到一个错误: 错误消息试图说明什么?还有,怎么修? 有一个相关的问题,但解决方案是修改特征<code>a</code>(在我的例子中对应于<code>可绘制</code>),但这在这里是不可能的,因为<code>可以绘制</code>来自外部库。
作为学习Rust的一个简单练习,我决定实现一个简单的二进制搜索: 在构建时,我得到了这个我不理解的错误。什么是类型?变量mid始终是usize,但即使使用cast,我也会遇到这个编译错误。
虽然Rust中的所有整数类型都实现了强调总排序的,但浮点类型只实现了。这意味着可能存在无法比较的浮点值。这似乎很难理解,因为浮点数可以被认为是实数的近似值,实数碰巧是一个完全有序的集合。即使加上正无穷大和负无穷大,也会使实数集保持完全有序。为什么在铁锈这个奇怪的选择? 这种限制意味着通用排序/搜索算法只能假设数字的部分排序。IEEE 754标准似乎提供了一个总排序谓词。 NaN在通用代码中是个大问
我想在main函数中打印Tweet数据类型的实例,但摘要特征不实现调试特征。有没有办法在特征或任何工作上实现特征。取消注释第二行并注释第一行将工作,因为字符串类型实现了显示特征。 error[E0277]: 未实现 -- 错误:由于以前的错误而中止 有关此错误的更多信息,请尝试。错误:无法编译。 要了解更多信息,请使用--verbose再次运行该命令。
问题内容: 说我有3个这样的课程: 难道那么有可能确定一个特定的对象是否是他的一个实例,或? 我认为这样的事情可能会起作用: 但是经过一点阅读之后,我认为它始终会被评为B,因为它只是测试强制转换是否有效,并且两者之间没有实质性差异。 问题答案: 做这个: