Rust编程语言入门教程(三)-trait

文章目录

Rust编程语言入门教程(三)-trait

什么是 trait?

trait 是 Rust 中的接口,它定义了类型使用这个接口的行为。你可以类比到自己熟悉的语言中理解,trait 对于 Rust 而言,相当于 interface 之于 Java。

在开发复杂系统的时候,我们常常会强调接口和实现要分离。因为这是一种良好的设计习惯,它把调用者和实现者隔离开,双方只要按照接口开发,彼此就可以不受对方内部改动的影响。

trait 就是这样。它可以把数据结构中的行为单独抽取出来,使其可以在多个类型之间共享;也可以作为约束,在泛型编程中,限制参数化类型必须符合它规定的行为。

如果你把 trait 类比为父类,实现 trait 的类型类比为子类,那么缺省实现的方法就相当于子类中可以重载但不是必须重载的方法。

在 Rust 中,"trait" 是一个关键字,用于定义抽象的类型行为和方法集合。

trait使用举例

rust 复制代码
trait Printable {
    fn print(&self);
}

struct Person {
    name: String,
}

impl Printable for Person {
    fn print(&self) {
        println!("Person: {}", self.name);
    }
}

struct Book {
    title: String,
}

impl Printable for Book {
    fn print(&self) {
        println!("Book: {}", self.title);
    }
}

fn main() {
    let person = Person { name: "Alice".to_string() };
    let book = Book { title: "Rust Programming".to_string() };

    person.print();
    book.print();
}

我们定义了一个 trait,名为 Printable,它定义了一个 print 方法。然后,我们为 Person 结构体和 Book 结构体分别实现了 Printable trait。

在 main 函数中,我们创建了一个 person 对象和一个 book 对象,并调用了它们的 print 方法。由于它们都实现了 Printable trait,因此可以以相同的方式调用 print 方法。

运行这个示例程序将会输出以下结果:

rust 复制代码
Person: Alice
Book: Rust Programming

在这个例子中,trait 提供了一种将不同类型统一对待的方式。通过实现相同的 trait,我们可以在代码中以一致的方式处理不同的类型,并共享相同的行为和方法。

相关推荐
Zenova EdgeOS12 分钟前
Go 工业边缘错误处理实战:用 errors 构建可追溯错误链
开发语言·数据库·golang
取名真是23 分钟前
Python 算法知识点从基础到进阶
开发语言·python·算法
FRing0344 分钟前
vue2干货总结3(computed计算属性、watch监听器)
开发语言·前端·vue.js·vue2
Patrick_Wilson1 小时前
Go 为什么需要 defer?从函数怎么收尾说起
后端·go·编程语言
苏三说技术1 小时前
DeepSeek Harness入驻B站,评论区被干成了大型插件集市!
后端
橙序员小站2 小时前
我一句话让 AI 把公众号工作台搭完了:部署实测记录
后端
Fatbobman(东坡肘子)2 小时前
快速消失的硬盘容量 -- 肘子的 Swift 周报 #160
开发语言·人工智能·redis·ios·swiftui·iphone·swift
Patrick_Wilson2 小时前
从文本输出理解 Go 方法与接口
后端·go·编程语言
揽星河..2 小时前
【C语言】底层程序设计
c语言·开发语言
JavaPub-rodert2 小时前
从零搭建通用管理后台:ShiyuAdmin 的 Go、React 与 RBAC 实践
开发语言·react.js·golang