当前位置: 首页 > news >正文

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

文章目录

  • Rust编程语言入门教程(三)-trait
    • 什么是 trait?
    • trait使用举例

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

什么是 trait?

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

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

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

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

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

trait使用举例

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 方法。

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

Person: Alice
Book: Rust Programming

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

http://www.lryc.cn/news/257130.html

相关文章:

  • LeetCode-1566. 重复至少 K 次且长度为 M 的模式【数组 枚举】
  • QT5.4.1无法打开文件
  • 【1day】金和OA某接口存在未授权访问漏洞
  • 使用Rust 构建C 组件
  • AI:大模型技术
  • 揭开WPF里面XAML可以通过http引入命名空间的神秘面纱
  • 什么是高防IP,高防IP该如何选择。
  • Linux 进程
  • Docker部署开源分布式任务调度平台DolphinScheduler并实现远程访问办公
  • SQL语言重温
  • Java学习手册——第五篇数据类型
  • 机器学习算法性能评估常用指标总结
  • java面试题-ArrayList 和 LinkedList 的区别是什么
  • k8s中部署基于nfs的StorageClass
  • c语言一维数组总结详解
  • Redis 持久化 —— 超详细操作演示!
  • 使用Java实现桶排序算法
  • 5.题目:编号1624 小蓝吃糖果
  • 基于SpringBoot+thymeleaf协同过滤算法山河旅游推荐系统(Java毕业设计)
  • TypeScript 之 console的使用
  • 西南科技大学C++程序设计实验十(函数模板与类模板)
  • Python 解析JSON实现主机管理
  • 一体化污水处理设备材质怎么选
  • 德国进口高速主轴电机在机器人上的应用及选型方案
  • 【软考中级——软件设计师】备战经验 笔记总结分享
  • 146. LRU 缓存 --力扣 --JAVA
  • 【C++】POCO学习总结(十):Poco::Util::Application(应用程序框架)
  • 探索医学影像:如何通过ROI灰度直方图和ROI区域方格图揭示隐秘细节?
  • SASS基本语法总结
  • 【C++】简单工厂模式