Rust 学习笔记 14:泛型 (Generics)

Rust 学习笔记 14:泛型 (Generics) “Abstraction without overhead.” 泛型是静态类型语言提高代码复用率的关键。 在 Go 中,我们习惯了 interface{} (或 any) 带来的运行时动态检查,或者复制粘贴代码。 Rust 的泛型则不同,它在编译期通过单态化 (Monomorphization) 展开代码,运行时没有性能损耗。 1. 泛型函数 假设我们要写一个找最大值的函数,既能找 i32 也能找 char。 1fn get_largest<T: PartialOrd + Copy>(list: &[T]) -> T { 2 let mut largest = list[0]; 3 for &item in list { 4 if item > largest { // 需要 T 实现 PartialOrd 5 largest = item; 6 } 7 } 8 largest 9} 这里 T 是类型参数。<T: PartialOrd + Copy> 叫做 Trait Bound(类似 Java 的 T extends ... 或 Go 的 T interface ...)。它告诉编译器:这个 T 不是任意类型,它必须能比较大小,而且能被 Copy(为了简单起见,这里假设是栈上数据)。 ...

2025-04-26 · 2 min · 220 words · 老墨