Rust中的每一个值都有其特定的数据类型,Rust会根据数据的类型来决定应该如何处理它们。Rust中的两种不同数据类型子集:标量类型(scalar)和复合类型(compound)。
Rust是一门静态类型语言,这意味着它在编译程序的过程中需要知道所有变量的具体类型。大多数时候编译器可以自动推导数据类型。但是在有些时候 —— 比如通过parse将一个String类型转换为数值类型时,就必须显式地添加一个类型标注:
fn main() {
let num : u32 = "123".parse().unwrap();
println!("num = {}", num);
}
标量类型时单个值类型的统称。Rust中内建了4中基础的标量类型:整数、浮点数、布尔值及字符。
目录整数类型
表示整数,比如:i8、u8、i16、u16、i32、u32、i64、u64、isize、usize。
较特殊的两个整数类型 usize 和 isize 主要用作某些集合的索引。
浮点数类型
可以带小数的类型,比如:f32、f64。
布尔类型
bool,bool类型只包括两个值 —— true 和 false。
布尔类型最主要的用途是在if表达式内作为条件使用。
字符类型
char,char类型表示单个字符。char类型使用单引号制定,而不同于字符串使用双引号指定。
Rust中的char类型占4字节,是一个Unicode标量值,这也意味着它可以表示比ASCII多得多的字符内容。例如下面的程序:
fn main() {
let a = 'y';
let b = '✔';
let c = '☺';
println!("a = {}, b = {}, c = {}", a, b, c); // 输出 a = y, b = ✔, c = ☺
}