Rust 程序设计语言 简体中文版 1.85.0
对象中的指针来知晓需要调用哪个方法。这种查找会带来在静态分发中不会产生的运行时开 销。动态分发也阻止编译器有选择地内联方法代码,这会相应地禁用一些优化,Rust 还定义 了一些规则,称为 dyn 兼容性(dyn compatibility),用于规定可以和不可以在哪些地方使用 动态分发。这些规则超出了本讨论范围,但你可以在参考资料中详细了解。尽管在编写示例 18-5 和可以支持示例 18-9 中的 approve 方法增加默认实现;然而这样做行不通:当将 State 用作 trait 对象时,trait 并不知道 self 具体是什么类型,因此无法在编译时确定返回类型。(这是 前面提到的 dyn 兼容性规则之一。) 另一个重复是 Post 中 request_review 和 approve 这两个类似的实现。它们都会对 Post 的 state 字段调用 Option::take,如果 state 2024。 本书基于 Rust 2024 edition 惯用法编写。 Cargo.toml 中的 edition 字段表明代码应该使用哪个版本编译。如果该字段不存在,其默认 为 2015 以提供后向兼容性。 每个项目都可以选择不同于默认的 2015 edition 的版本。这样,版本可能会包含不兼容的修 改,比如新增关键字可能会与代码中的标识符冲突并导致错误。不过除非选择兼容这些修改, (旧)代码仍将能够编译,即便升级了0 码力 | 562 页 | 3.23 MB | 9 天前3
共 1 条
- 1