主要观点:作者从高级语言转向 Rust 语言,在使用 as
进行类型转换时遇到意外行为,开始避免使用 as
,并介绍了替代 as
的方法 TryFrom
。
关键信息:
- 许多从 Python 等高级语言转向 Rust 的人起初感到沮丧,Rust 类型系统更严格。
- Python 中动态类型和类型强制转换虽方便但易导致微妙错误,如
get_half
和get_half_floor
函数的行为不一致。 - Rust 函数对参数类型要求严格,使用
as
可绕过类型限制,但可能导致溢出等意外行为,如get_half_floor
函数在处理u8
类型时。 - 替代
as
的方法是使用TryFrom
,它能在类型转换可能出错时告知程序员并让其决定如何处理,虽更冗长但更安全。
重要细节: - Rust 有 14 种内置数字类型,Python 有 3 种,JS 有 1 或 2 种。
- Rust 中
get_half
函数只接受f64
类型参数,其他类型需转换。 as
用于类型转换时,若转换为较小尺寸值可能导致溢出,如将 288 转换为u8
时只保留 8 位低位二进制数。- 使用
TryFrom
时可通过match
处理转换错误,如在get_half_floor
函数中处理u8
类型转换。 - 文中还提到了一些相关资源和感谢的人,如 YARR!、David Glivar、Nicole Tietz-Sokolskaya 等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。