类型转换 Casting

基础数据类型, 可以使用 as 进行转换, 其中的数值精度问题与C语言保持一致.

C/C++默认是进行隐式类型转换的, 这种做法尽管比较方便灵活, 但也容易产生问题. 而 Rust 就要求使用显式的类型转换, 即不同类型之前做转换, 必须在代码上显式地描述出来, 否则编译器就报错. 比如:

let x = 42;
if x {
  // do something.
}

必需显式地写下:

#![allow(unused)]
fn main() {
let x = 42;
if x != 0 {
  // do something.
}
}

另一个例子, C 代码片段如下:

int sum = -42;
unsigned int pos_sum = sum;
assert(pos_sum == 4294967254);

用 Rust 来写同样的表达式:

#![allow(unused)]
fn main() {
let sum = -42i32;
let pos_sum = sum as u32;
assert_eq!(pos_sum, 4294967254);
}

其它转换方式