元组 #
一、元组定义 #
1.1 基本语法 #
rust
fn main() {
let tuple = (1, 2.5, "hello");
println!("{:?}", tuple);
// 显式类型标注
let tuple2: (i32, f64, &str) = (1, 2.5, "hello");
println!("{:?}", tuple2);
// 单元素元组
let single = (1,);
println!("{:?}", single);
// 空元组(单元类型)
let unit = ();
println!("{:?}", unit);
}
1.2 访问元素 #
rust
fn main() {
let tuple = (1, 2.5, "hello");
// 索引访问
println!("第一个: {}", tuple.0);
println!("第二个: {}", tuple.1);
println!("第三个: {}", tuple.2);
}
1.3 解构 #
rust
fn main() {
let tuple = (1, 2.5, "hello");
// 完全解构
let (a, b, c) = tuple;
println!("a={}, b={}, c={}", a, b, c);
// 部分解构
let (x, _, _) = tuple;
println!("x={}", x);
}
二、元组操作 #
2.1 可变元组 #
rust
fn main() {
let mut tuple = (1, 2, 3);
tuple.0 = 10;
println!("{:?}", tuple);
// 解构修改
let (ref mut a, _, _) = tuple;
*a = 100;
println!("{:?}", tuple);
}
2.2 嵌套元组 #
rust
fn main() {
let nested = ((1, 2), (3, 4));
println!("nested.0.0 = {}", nested.0.0);
let ((a, b), (c, d)) = nested;
println!("a={}, b={}, c={}, d={}", a, b, c, d);
}
2.3 元组作为返回值 #
rust
fn divide(dividend: i32, divisor: i32) -> (i32, i32) {
(dividend / divisor, dividend % divisor)
}
fn main() {
let (quotient, remainder) = divide(10, 3);
println!("商={}, 余数={}", quotient, remainder);
}
三、实践示例 #
3.1 坐标点 #
rust
type Point = (f64, f64);
fn distance(p1: Point, p2: Point) -> f64 {
let (x1, y1) = p1;
let (x2, y2) = p2;
((x2 - x1).powi(2) + (y2 - y1).powi(2)).sqrt()
}
fn main() {
let p1 = (0.0, 0.0);
let p2 = (3.0, 4.0);
println!("距离: {}", distance(p1, p2));
}
3.2 颜色 #
rust
type Color = (u8, u8, u8);
fn to_hex(color: Color) -> String {
let (r, g, b) = color;
format!("#{:02X}{:02X}{:02X}", r, g, b)
}
fn main() {
let red: Color = (255, 0, 0);
let green: Color = (0, 255, 0);
println!("红色: {}", to_hex(red));
println!("绿色: {}", to_hex(green));
}
四、总结 #
本章学习了:
- 元组定义和访问
- 元组解构
- 元组操作
- 实际应用
下一章,我们将学习集合类型。
最后更新:2026-03-27