主要观点:作者对 Rust 语言感兴趣多年,认为其类型安全、内存安全且强调正确性,在工作中发现 Rust 编译器能捕获很多 Python 等动态语言易出现的错误,但 Rust 也并非完美,与 Java 有相似之处也有不同,如 Java 有接口但存在空引用等问题,Rust 有 trait 但并非所有东西都适合用 trait ,在所有权等问题上也有多种处理方式,同时作者认为不应强迫 Rust 成为纯粹的面向对象语言,应接受 Rust 本身的特点。
关键信息:
- 在 Apollo 工作时,Python 中很多错误可被 Rust 编译器捕获。
- Java 编译时检查有帮助,但编译器不完美,存在 null 引用问题。
- Rust 中 trait 类似 Java 接口,但并非一切都用 trait ,可使用 generics 或 boxing 。
- 所有权问题存在多种处理方式,如使用 &'a dyn Named 或 Arc<dyn Named> 。
- 不应强迫 Rust 成为纯粹面向对象语言,可多用函数。
重要细节:
- 在 Apollo 工作时,Python 中因编译器不足导致的错误比例较高。
- Java 中几乎一切都可为 null ,直到运行时才发现错误。
- Rust 中 trait 定义的代码在编译时无法确定 Named 的大小,可通过 boxing 或 generics 解决。
- generics 是在编译时确定具体类型,trait object 是在运行时确定。
- 在处理 Stripe 相关事件时,可选择用函数而不用服务对象来避免复杂性。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。