基本数据类型
整型
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 = 'ℤ'; // 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个字节。
布尔型
布尔型的值只能是true
或 false
。示例:
rust
fn main() {
let t = true;
let f: bool = false;
}