Tailwind CSSTailwind CSS
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • 搜索未来:SEO与GEO双引擎实战手册
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • Rust 开发入门
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • 搜索未来:SEO与GEO双引擎实战手册
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • Rust 开发入门
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain

2.2 数据类型:标量类型与复合类型

在 Rust 中,数据类型是静态且强类型的,这意味着所有变量的类型在编译时都必须明确。Rust 的类型系统主要分为两大类:标量类型和复合类型。理解这两类类型是掌握 Rust 语法的基础。

标量类型

标量类型代表一个单一的值。Rust 有四种主要的标量类型:整数、浮点数、布尔值和字符。

1. 整数类型

整数类型分为有符号(i)和无符号(u)两种,每种都有不同的长度(位数)。

长度有符号无符号
8-biti8u8
16-biti16u16
32-biti32u32
64-biti64u64
128-biti128u128
archisizeusize
  • 有符号整数:可以存储正数和负数,范围从 -(2^(n-1)) 到 2^(n-1) - 1。
  • 无符号整数:只能存储正数,范围从 0 到 2^n - 1。
  • isize 和 usize:其长度取决于程序运行的计算机架构(64 位系统上为 64 位,32 位系统上为 32 位)。通常用于索引集合。

默认类型:整数类型默认为 i32。

let a: i8 = -128;       // 有符号 8 位整数
let b: u32 = 255;       // 无符号 32 位整数
let c: isize = 100;     // 与架构相关的有符号整数
let d = 10;             // 默认类型:i32

2. 浮点类型

Rust 有两种浮点数类型:f32(32 位单精度)和 f64(64 位双精度)。默认类型是 f64,因为现代 CPU 上其速度与 f32 相近,但精度更高。

let x = 2.0;            // f64 (默认)
let y: f32 = 3.0;       // f32

3. 布尔类型

布尔类型(bool)只有两个值:true 和 false。主要用于条件判断。

let is_rust_fun: bool = true;
let is_difficult = false;  // 类型推断为 bool

4. 字符类型

Rust 的 char 类型代表一个 Unicode 标量值,这意味着它可以表示比 ASCII 更多的字符(如中文、日文、emoji 等)。char 类型使用单引号定义,占用 4 个字节。

let letter: char = 'A';
let emoji: char = '😊';
let chinese_char: char = '中';

复合类型

复合类型可以将多个值组合成一个类型。Rust 有两种原生的复合类型:元组和数组。

1. 元组 (Tuple)

元组是一个将多个不同类型的值组合在一起的复合类型。元组的长度是固定的,一旦声明,就不能增长或缩小。

  • 创建元组:使用圆括号 () 包含一组值。
  • 访问元组元素:可以使用点号 . 后跟索引来访问,或者通过模式匹配解构。
// 创建元组
let tup: (i32, f64, char) = (500, 6.4, 'R');

// 通过索引访问
let first = tup.0;      // 500
let second = tup.1;     // 6.4

// 解构元组
let (x, y, z) = tup;
println!("The values are: {}, {}, {}", x, y, z); // 输出:The values are: 500, 6.4, R

2. 数组 (Array)

数组是一个将多个相同类型的值组合在一起的复合类型。与元组类似,数组的长度也是固定的。

  • 创建数组:使用方括号 [] 包含一组值,或者使用 [初始值; 长度] 的语法。
  • 访问数组元素:使用方括号 [] 加索引访问,索引从 0 开始。
// 创建数组
let arr: [i32; 5] = [1, 2, 3, 4, 5];

// 使用初始值创建数组(所有元素相同)
let same = [3; 5];  // 等同于 [3, 3, 3, 3, 3]

// 访问数组元素
let first = arr[0];  // 1
let third = arr[2];  // 3

数组越界访问:如果尝试访问超出数组长度的索引,Rust 会在运行时抛出 panic,确保内存安全,避免访问无效内存。

let arr = [1, 2, 3];
let invalid = arr[10]; // 程序会 panic 并退出

总结

类型类别类型名称示例说明
标量整数let a: i32 = 42;有符号/无符号,不同长度
标量浮点数let b: f64 = 3.14;单精度/双精度
标量布尔let c: bool = true;true 或 false
标量字符let d: char = 'R';Unicode 字符,4 字节
复合元组let e: (i32, f64) = (10, 2.5);固定长度,可包含不同类型
复合数组let f: [i32; 3] = [1, 2, 3];固定长度,所有元素类型相同

掌握这些基础类型是编写 Rust 程序的起点。在后续章节中,我们将学习如何利用这些类型构建更复杂的数据结构。

Last Updated:: 5/9/26, 2:49 PM