类型转换
Rust 不提供原生类型之间的隐式类型转换(coercion),但可以使用 as
关键字进行显 式类型转换(casting)。
// 不显示类型转换产生的溢出警告。
#![allow(overflowing_literals)]
fn main() {
let decimal = 65.4321_f32;
// 可以显式转换
let integer = decimal as u8;
let character = integer as char;
println!("Casting: {} -> {} -> {}", decimal, integer, character);
// 232 的二进制补码是 -24
println!(" 232 as a i8 is : {}", 232 as i8);
}
字面量
对数值字面量,只要把类型作为后缀加上去,就完成了类型说明。比如指定字面量 42
的 类型是 i32
,只需要写 42i32
。
无后缀的数值字面量,其类型取决于怎样使用它们。如果没有限制,编译器会对整数使用 i32
,对浮点数使用 f64
。
类型推断
类型推断引擎不仅仅是在初始化时考虑右值,还会考察变量之后如何使用来进行类型推导。
别名
可以用 type
语句给已有的类型取个新的名字。类型的名字必须遵循驼峰命名法(像是 CamelCase
这样),否则编译器将给出错误。原生类型是例外,比如: usize
、f32
,等等。
// `NanoSecond` 是 `u64` 的新名字。
type NanoSecond = u64;
type Inch = u64;