欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 旅游 > 【rCore OS 开源操作系统】Rust trait 特性快速上手

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

2024/10/25 23:01:25 来源:https://blog.csdn.net/Serio_gugugu/article/details/143098430  浏览:    关键词:【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 也可以这么用:

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

实现 trait

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

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

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

使用 trait

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

let s = String::from("Foo");
let s = s.append_bar();

配合范型使用

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

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

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com