E0033

未匹配的标注

trait 类型被解引用

错误代码示例:

let trait_obj: &SomeTrait = &"some_value";

// 试图隐式解引用创建大小位置的本地变量
let &invalid = trait_obj;

// 可以调用方法而不绑定到指向的值
trait_obj.method_one();
trait_obj.method_two();

trait 类型的指针不能被模式隐式解引用。每个 trait 都定义了一个类型,但是由于 trait 实现的大小不是固定的,所以这个类型没有编译时大小 (compile-time size)。因此,对 trait 类型的访问都必须通过指针。如果遇到此错误,应尽量避免解引用指针。

有关更多 trait 对象 的内容可以参阅 Reference 中的 Trait Objects 章节。

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/rust-rcei-2020/...

译文地址:https://learnku.com/docs/rust-rcei-2020/...

上一篇 下一篇
贡献者:1
讨论数量: 0
发起讨论 只看当前版本


暂无话题~