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 = 'ℤ'; // with explicit type annotation
    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 bytes
    println!("Size of string containing 'a': {}", "a".len()); // .len() gives the size of the string in bytes
    println!("Size of string containing 'ß': {}", "ß".len());
    println!("Size of string containing '国': {}", "国".len());
    println!("Size of string containing '𓅱': {}", "𓅱".len());
}

由打印结果可以看到,a是一个字节,德文的ß是两个字节,中文的是三个字节,古埃及的𓅱是4个字节。

布尔型

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

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