Skip to content

【描述】

关键字 as 只用于有损转换无法避免时,否则尽可能利用 From::from 或 TryFrom::try_from 实现无 损转换。

【正例】

  • 考虑是否必须要做有损的算术转换,如非必要,应使用相同类型来避免转换。
Rust
let a: f64 = 64.0;

let b: f64 = a; // 符合

【正例】

  • 在将数据从低位转为高位时,建议使用 from 转换,代表无损转换:
Rust

let c: u16 = 512;
 
let p = u64::from(c); // 符合

【正例】

  • 在必须做数据有损的算术转换但不希望数据截断的情况下,使用 try_from 保证数据准确性:
Rust

let b: isize = 512;

let y: Result<i8, _> = i8::try_from(b); // 符合

【例外】

  • 在必须做数据有损的算术转换但业务场景允许数据截断,或无法通过 from / try_from 显式转换 时,可继续使用类型强转:
Rust

let a: f64 = 64.0;
let b: i64 = 100000;

let _: f32 = a as f32; let _: i16 = b as i16;