Rust 入门:关联类型与默认泛型类型参数



Rust 入门:关联类型与默认泛型类型参数

Rust 里,泛型(Generic)让代码更灵活,但有时写起来会很复杂。为此,Rust 提供了关联类型默认泛型类型参数,帮助简化代码,让接口设计更优雅。


一、关联类型(Associated Types)

关联类型是特质(trait)里定义的一个类型占位符,由实现该特质的类型具体指定。

举例说明

假设定义一个“容器”特质,表示这个类型可以存放某种元素:

trait Container {
    type Item;  // 关联类型,具体类型由实现者确定

    fn add(&mut self, item: Self::Item);
    fn remove(&mut self) -> Option<Self::Item>;
}

这里 Item 就是关联类型,意思是“容器里装的东西是什么类型”。


实现例子

struct IntStack {
    items: Vec<i32>,
}

impl Container for IntStack {
    type Item = i32;  // 指定关联类型为 i32

    fn add(&mut self, item: i32) {
        self.items.push(item);
    }

    fn remove(&mut self) -> Option<i32> {
        self.items.pop()
    }
}

这样写,调用者不用每次都告诉容器元素类型是什么,因为它已经和类型绑定了。


二、默认泛型类型参数(Default Generic Type Parameters)

有时候,泛型参数有个“默认值”,调用者可以选择写或者不写。

举例

struct Point<T = i32> {
    x: T,
    y: T,
}

fn main() {
    let p1 = Point { x: 10, y: 20 };          // 使用默认类型 i32
    let p2 = Point::<f64> { x: 1.1, y: 2.2 }; // 显式指定 f64
}

这里 Point 的泛型类型参数 T 默认是 i32,如果不写,默认就是 i32


三、结合使用例子

关联类型和默认泛型参数常用在设计灵活又易用的特质和结构体上。


四、小结

特性作用示例场景
关联类型(Associated Types)在特质中定义一个类型占位符,由实现者指定具体类型容器元素类型、迭代器输出类型
默认泛型类型参数(Default Generic Parameters)泛型参数有默认类型,调用时可省略结构体、函数参数默认类型简化调用

理解这两个特性后,你可以写出更简洁、清晰、易扩展的 Rust 代码。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人才程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值