【rCore OS 开源操作系统】Rust trait 特性快速上手

trait 特性快速上手

什么是 trait

一些权威资料的描述是这样的:

Note: Traits are similar to a feature often called interfaces in other languages, although with some differences.

也就是说trait (特性)类似于其他语言中通常称为interfaces的功能,但存在一些差异。

OK,那作为初学者我就不求甚解,就先理解为它可以当 interface 来使用就好了

那学过其他语言,我们知道 interface 是干什么的呢?

就是定义某个类型,有那些属性、方法

由于 Rust 是超级强类型的语言,约束比较多,trait 只允许定义方法

所以 trait 也可以这么用:

rust 复制代码
// 这样定义一个叫做 AppendBar 的特性
trait AppendBar {
    fn append_bar(self) -> Self;
}

实现 trait

然后就是所谓的跟interface不一样之处了------如何把它和类型关联呢?

不过其实也就是语法不太一样

rust 复制代码
// 给 String 类型实现这个特性
impl AppendBar for String {
    fn append_bar(self) -> Self {
        self + "Bar"
    }
}

使用 trait

这样以来,之后所有String类型的变量,都可以调用 append_bar 方法:

rust 复制代码
let s = String::from("Foo");
let s = s.append_bar();

配合范型使用

如果我们无法准确描述所需要的类型,但是我们知道它必须要具备一个或者几个trait,那就可以这么描述这个类型:

rust 复制代码
fn some_func<T: SomeTrait + OtherTrait>(item: T) -> bool {
    item.some_function() && item.other_function()
}

这样就用范型描述了一个同时满足SomeTraitOtherTrait的类型T

相关推荐
Y1nhl13 分钟前
搜广推校招面经八十一
开发语言·人工智能·pytorch·深度学习·机器学习·推荐算法·搜索算法
胡攀峰13 分钟前
第12章 微调生成模型
人工智能·大模型·llm·sft·强化学习·rlhf·指令微调
yuanlaile14 分钟前
AI大模型自然语言处理能力案例演示
人工智能·ai·自然语言处理
Algorithm157614 分钟前
谈谈接口和抽象类有什么区别?
java·开发语言
YiSLWLL15 分钟前
使用Tauri 2.3.1+Leptos 0.7.8开发桌面小程序汇总
python·rust·sqlite·matplotlib·visual studio code
yu41062116 分钟前
Rust 语言使用场景分析
开发语言·后端·rust
良艺呐^O^17 分钟前
uniapp实现app自动更新
开发语言·javascript·uni-app
小白白搭建18 分钟前
WordPress AI 原创文章自动生成插件 24小时全自动生成SEO原创文章 | 多语言支持 | 智能配图与排版
人工智能
Jamence20 分钟前
多模态大语言模型arxiv论文略读(三十九)
人工智能·语言模型·自然语言处理
ai大模型木子44 分钟前
嵌入模型(Embedding Models)原理详解:从Word2Vec到BERT的技术演进
人工智能·自然语言处理·bert·embedding·word2vec·ai大模型·大模型资料