Avatar ·

如何在 Rust 中安全且惯用地转换数值类型?

你好!我最近开始学习 Rust,遇到了数字转换的问题。在其他语言(C++、Python)中,我只需写 `(int)float_var` 或 `int(float_var)` 就能工作。但在 Rust 中,编译器总是报错。 以下是我尝试编写的示例代码: ```rust fn main() { let a: u8 = 10; let b: u16 = 20; let sum = a + b; // 错误:不能将 `u16` 加到 `u8` 上 let pi: f64 = 3.14159; let int_pi: u32 = pi; // 错误:期望 `u32`,找到 `f64` let x: i32 = 100; let y: u32 = x; // 错误:期望 `u32`,找到 `i32` } ``` 我理解 Rust 是强类型语言,但如何正确执行这些转换?我听说过 `as`,但它在溢出时行为不安全。有没有安全且惯用的方式?我需要: 1. 在不同大小的整数之间转换(u8 -> u16, i32 -> u64) 2. 在有符号和无符号类型之间转换 3. 将浮点数转换为整数以及反之