数据类型与函数
原生数据类型
整数类型
| 长度 | 有符号 | 无符号 |
|---|---|---|
| 8位 | i8 | u8 |
| 16位 | i16 | u16 |
| 32位 | i32 | u32 |
| 64位 | i64 | u64 |
| 128位 | i128 | u128 |
| 架构相关 | isize | usize |
默认整数类型是 i32。
let a: i8 = -128; // -128 到 127 let b: u8 = 255; // 0 到 255 let c = 42; // 默认 i32 let d: i64 = 9_223_372_036_854_775_807; // 下划线提高可读性 let e: usize = 10; // 指针宽度,用于索引
浮点类型
let x: f32 = 3.14; // 32 位浮点 let y: f64 = 3.1415926535; // 64 位浮点(默认)
布尔类型
let is_ok: bool = true; let is_not: bool = false;
字符类型
char 是 4 字节的 Unicode 标量值:
let c = '中'; // Unicode 字符 let emoji = '😊'; // 表情符号 let letter = 'A';
复合类型
元组(Tuple)
固定长度的异构集合:
let tup: (i32, f64, char) = (42, 3.14, 'R'); // 解构(destructure) let (x, y, z) = tup; println!("{}, {}, {}", x, y, z); // 索引访问 println!("{}", tup.0); // 42 println!("{}", tup.1); // 3.14
数组(Array)
固定长度的同构集合(栈上分配):
let arr: [i32; 5] = [1, 2, 3, 4, 5]; let zeros = [0; 3]; // [0, 0, 0] println!("{}", arr[0]); // 1 println!("len: {}", arr.len()); // 5
访问越界索引会导致运行时 panic,Rust 会安全地检查边界。
函数
函数定义
fn greet(name: &str) { println!("你好,{}!", name); } fn main() { greet("Rust"); }
返回值
用 → 指定返回类型,最后一个表达式即为返回值:
fn add(x: i32, y: i32) -> i32 { x + y // 注意:没有分号,是表达式 } fn double(x: i32) -> i32 { return x * 2; // 也可以用 return,但通常省略 } fn main() { println!("{}", add(3, 5)); // 8 println!("{}", double(4)); // 8 }
表达式 vs 语句
- 语句(Statement) - 执行操作,不返回值,如
let x = 5; - 表达式(Expression) - 计算并返回值,如
x + 1
fn main() { let x = { let a = 2; let b = 3; a + b // 代码块作为表达式,返回 5 }; println!("{}", x); // 5 }
发散函数
用 ! 表示永不返回的函数:
fn forever() -> ! { loop { // 永不退出 } } fn panic_forever() -> ! { panic!("直接崩溃"); // panic! 也是发散函数 }
注释
// 这是单行注释 /* 这是多行注释 可以跨越多行 */ /// 文档注释(生成文档用) /// 可以包含 Markdown fn documented_func() {} //! 模块级别文档注释,写在文件开头
本章实践
计算圆的面积和周长:
fn circle_area(radius: f64) -> f64 { std::f64::consts::PI * radius * radius } fn circle_circumference(radius: f64) -> f64 { 2.0 * std::f64::consts::PI * radius } fn main() { let r = 5.0; println!("半径: {}", r); println!("面积: {:.2}", circle_area(r)); println!("周长: {:.2}", circle_circumference(r)); }
本章小结
- 原生类型:整数、浮点、布尔、字符
- 复合类型:元组和数组
- 函数用
fn声明,用→指定返回类型 - 最后一个表达式是返回值,
return可省略 - 语句和表达式的区别