Skip to content

基本数据类型

整型

Rust 提供了多种原生类型(primitives),整数包括:

  • 有符号整数:i8i16i32i64i128isize(指针宽度)
  • 无符号整数: u8u16u32u64u128usize(指针宽度)

其中,符号是指 + (加号) 和 - (减号),所以有符号的整数可以是正数,也可以是负数(如+8,-8)。但无符号整数只能是正数,因为它们没有符号;iu 后面的数字表示该数字的位数,8位等于一个字节,所以 i8 是一个字节,i64 是8个字节,以此类推。

isizeusize 表示电脑的位数。32位计算机上的 isizeusize 等同于 i32u32,64位计算机上的 isizeusize 等同于 i64u64。示例:

rust
fn main() {
    let x = -2; 
    let y: u32 = 3; 
}

浮点型

Rust 也有两个原生的 浮点数floating-point numbers)类型,它们是带小数点的数字。

Rust 的浮点数类型是 f32f64,分别占 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个字节。

布尔型

布尔型的值只能是 truefalse。示例:

rust
fn main() {
    let t = true;
    let f: bool = false; 
}