【Rust】特质-trait
环境
- Rust 1.56.1
- VSCode 1.61.2
概念
参考:https://doc.rust-lang.org/rust-by-example/trait.html
示例
trait 一般翻译成特质,之后的内容不翻译,类似其它语言中的接口。
main.rs
struct Sheep {
naked: bool,
name: &'static str,
}
trait Animal {
// Self 表示实现的类型,注意关联函数和方法的区别
fn new(name: &'static str) -> Self;
fn name(&self) -> &str;
fn noise(&self) -> &str;
// 可以进行默认实现
fn talk(&self) {
println!("{} says {}", self.name(), self.noise());
}
}
impl Sheep {
fn is_naked(&self) -> bool {
self.naked
}
fn shear(&mut self) {
if self.is_naked() {
println!("{} is already naked...", self.name());
} else {
println!("{} gets a haircut!", self.name);
self.naked = true;
}
}
}
impl Animal for Sheep {
fn new(name: &'static str) -> Sheep {
Sheep {
name: name,
naked: false,
}
}
fn name(&self) -> &str {
self.name
}
fn noise(&self) -> &str {
if self.is_naked() {
"baaaaah?"
} else {
"baaaaah!"
}
}
fn talk(&self) {
// 可以覆盖默认的方法
println!("{} pauses briefly... {}", self.name, self.noise());
}
}
fn main() {
// 类型注解必须要
let mut dolly: Sheep = Animal::new("Dolly");
dolly.talk();
dolly.shear();
dolly.talk();
}
总结
了解了 Rust 中 trait 的定义方式和实现方式。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!