【Rust】trait-派生
环境
- Rust 1.56.1
- VSCode 1.61.2
概念
参考:https://doc.rust-lang.org/rust-by-example/trait/derive.html
示例
编译器可以通过 #[derive]
属性提供派生(自动实现)功能,以下 trait 支持派生:
- 比较 trait:
Eq
,PartialEq
,Ord
,PartialOrd
Clone
,用来从&T
创建副本T
Copy
,使类型具有 “复制语义”而非 “移动语义”。Hash
,从&T
计算哈希值(hash)。Default
,创建数据类型的一个空实例。Debug
,使用{:?}
formatter 来格式化一个值。
main.rs
// 自动实现比较的 trait
#[derive(PartialEq, PartialOrd)]
struct Centimeters(f64);
// 自动实现 Debug trait
#[derive(Debug)]
struct Inches(i32);
impl Inches {
fn to_centimeters(&self) -> Centimeters {
let &Inches(inches) = self;
Centimeters(inches as f64 * 2.54)
}
}
struct Seconds(i32);
fn main() {
let _one_second = Seconds(1);
// 编译错误,没有实现 Debug trait
// println!("One second looks like: {:?}", _one_second);
// 编译错误,没有实现比较的 trait
// let _this_is_true = (_one_second == _one_second);
let foot = Inches(12);
println!("One foot equals {:?}", foot);
let meter = Centimeters(100.0);
let cmp = if foot.to_centimeters() < meter {
"smaller"
} else {
"bigger"
};
println!("One foot is {} than one meter.", cmp);
}
总结
了解了 Rust 中 trait 的派生,可以使用属性来自动生成一个 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框架的用法!