关于Rust中原始类型的更好的算术

vir*_*tor 0 casting rust integer-arithmetic

有没有一种更好的方法可以在不同的原始类型(使用自动升级)上进行算术运算,而不是显式的转换和展开?

例如,如果喜欢:

let a: u8 = 1;
let b: u16 = 2;
let c: u32 = 3;
Run Code Online (Sandbox Code Playgroud)

我可以以某种方式摆脱所有演员阵容:

let total: u64 = a.to_u64().unwrap() + b.to_u64().unwrap() + c.to_u64().unwrap();
Run Code Online (Sandbox Code Playgroud)

Dog*_*ert 5

是的,你可以使用as:

let total: u64 = a as u64 + b as u64 + c as u64;
Run Code Online (Sandbox Code Playgroud)

有关类型转换的更多信息:http://doc.rust-lang.org/reference.html#type-cast-expressions

  • 注意:在过去,你过去只能为一个类型`impl Add <Right,Result> for Left`实现一个trait因此只对`u8`实现一次...``right`等于` u8`.在路上使用相关类型时,可以重新设计`Add`特性,以便对给定的`Left`实现多次,例如允许'u8 + u32`产生`u32`.但关联类型尚未准备就绪. (2认同)