基本数据类型
整型
Rust 提供了多种原生类型(primitives),整数包括:
- 有符号整数:
i8、i16、i32、i64、i128和isize(指针宽度) - 无符号整数:
u8、u16、u32、u64、u128和usize(指针宽度)
其中,符号是指 + (加号) 和 - (减号),所以有符号的整数可以是正数,也可以是负数(如+8,-8)。但无符号整数只能是正数,因为它们没有符号;i 或 u 后面的数字表示该数字的位数,8位等于一个字节,所以 i8 是一个字节,i64 是8个字节,以此类推。
isize 和 usize 表示电脑的位数。32位计算机上的 isize 和 usize 等同于 i32 和 u32,64位计算机上的 isize 和 usize 等同于 i64 和 u64。示例:
rust
fn main() {
let x = -2;
let y: u32 = 3;
}浮点型
Rust 也有两个原生的 浮点数(floating-point numbers)类型,它们是带小数点的数字。
Rust 的浮点数类型是 f32 和 f64,分别占 32 位和 64 位,默认类型是 f64,所有的浮点型都是有符号的。示例:
rust
fn main() {
let x = 2.0;
let y: f32 = 3.0;
}字符
Rust 的 char 类型是语言中最原生的字母类型。下面是一些声明 char 值的例子:
rust
fn main() {
let c = 'z';
let z: char = 'ℤ'; // 显式类型标注
let heart_eyed_cat = '😻';
}char 总是一个字符,并且使用单引号 '' 声明;而字符串使用双引号 "" 声明。
Rust 的 char 类型的大小为四个字节(four bytes),并代表了一个 Unicode 标量值,这意味着它可以比 ASCII 表示更多内容。所有的 char 都使用4个字节的内存,因为4个字节足以容纳任何种类的字符:
- 基本字母和符号通常需要4个字节中的1个:
a b 1 2 + - = $ @ - 其他字母,如德语的 Umlauts 或重音,需要4个字节中的2个:
ä ö ü ß è é à ñ - 韩文、日文或中文字符需要3或4个字节:
国
当使用字符(char)作为字符串(String)的一部分时,字符串被编码以使用每个字符所需的最小内存量。
使用len()函数可以打印字符串的长度:
rust
fn main() {
println!("Size of a char: {}", std::mem::size_of::<char>()); // 4个字节
println!("Size of string containing 'a': {}", "a".len()); // .len() 返回字符串的字节长度
println!("Size of string containing 'ß': {}", "ß".len());
println!("Size of string containing '国': {}", "国".len());
println!("Size of string containing '𓅱': {}", "𓅱".len());
}由打印结果可以看到,a 是1个字节,德文的 ß 是2个字节,中文的 国 是3个字节,古埃及的 𓅱 是4个字节。
布尔型
布尔型的值只能是 true 或 false。示例:
rust
fn main() {
let t = true;
let f: bool = false;
}