Rust 中的泛型、特性与测试
泛型类型参数、特性约束和生命周期结合
在 Rust 里,我们可以在一个函数中同时指定泛型类型参数、特性约束和生命周期。下面是一个示例代码:
use std::fmt::Display;
fn longest_with_an_announcement<'a, T>(x: &'a str, y: &'a str, ann: T) -> &'a str
where T: Display
{
println!("Announcement! {}", ann);
if x.len() > y.len() {
x
} else {
y
}
}
这个函数会返回两个字符串切片中较长的那个。它新增了一个泛型类型 T 的参数 ann ,该参数可以是任何实现了 Display 特性的类型,这由 where 子句指定。在比较字符串切片长度之前,会先打印这个额外的参数,所以 Display 特性约束是必要的。由于生命周期也是一种泛型,所以生命周期参数 'a 和泛型类型参数 T 的声明都放在函数名后面的尖括号内的同一列表中。
自动化测试的重要性
Edsger W. Dijkstra 在 1972 年的文章中提到:“程序测试可以有效地发
超级会员免费看
订阅专栏 解锁全文
52

被折叠的 条评论
为什么被折叠?



