Rust 学习笔记 25:高级特性 (Advanced Features)

Rust 学习笔记 25:高级特性 (Advanced Features) “With great power comes great responsibility.” – Uncle Ben (actually unsafe block) Rust 通常强制执行内存安全规则,但有时我们需要绕过它们(比如操作硬件、与 C 交互)。这时,Unsafe Rust 就派上用场了。 此外,Rust 的 Trait 和类型系统还有很多高级用法,能让你的代码更具表现力。 1. Unsafe Rust unsafe 关键字给我们开启了 5 种超能力: 解引用裸指针 (Raw Pointers)。 调用不安全的函数/方法(包括 FFI)。 访问或修改可变静态变量 (Mutable Static Variables)。 实现不安全 Trait (unsafe trait)。 访问 union 的字段。 裸指针: 1let mut num = 5; 2let r1 = &num as *const i32; 3let r2 = &mut num as *mut i32; 4 5unsafe { 6 println!("r1 is: {}", *r1); 7} 编译器不会检查裸指针是否有效、是否为空、是否遵守所有权规则。你自己要负责。 ...

2026-04-15 · 2 min · 236 words · 老墨

Rust 学习笔记 15:Traits (特质)

Rust 学习笔记 15:Traits (特质) “If it walks like a duck and quacks like a duck, it must be a Trait.” 在 Go 语言中,接口 (Interface) 是隐式实现的。只要你的方法签名对上了,你就实现了接口。 在 Rust 中,Traits (特质) 必须要显式实现 (impl Trait for Type)。 1. 定义与实现 Trait 定义一个 Summary Trait: 1pub trait Summary { 2 fn summarize(&self) -> String; 3} 为 NewsArticle 和 Tweet 实现它: 1impl Summary for Tweet { 2 fn summarize(&self) -> String { 3 format!("{}: {}", self.username, self.content) 4 } 5} 2. 默认实现 (Default Implementations) Trait 中可以提供默认实现,这有点像 Java 8 的 default method。 ...

2025-05-20 · 2 min · 286 words · 老墨