元组 #

一、元组定义 #

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