面试题答案
一键面试fn sort_generic<T: Ord>(iterable: &mut [T]) {
iterable.sort();
}
切片在这种场景下是很好选择的原因
- 通用性:切片
&[T]
可以表示任何类型T
的连续内存块,并且可以适配不同长度的可迭代对象。无论是数组、向量还是其他实现了AsRef<[T]>
或AsMut<[T]>
的类型,都可以方便地转换为切片,使得排序函数能够处理多种不同的可迭代容器,满足通用排序函数的需求。 - 高效性:切片直接指向内存中的数据,操作切片时不需要额外的复制操作(除了引用计数增加等极轻量操作),对于大型数据集排序时,避免数据复制能显著提升性能。
- 安全性:Rust 的切片是类型安全的,在编译期就能确保对切片的操作都是合法的,例如不会发生越界访问等问题,这保证了排序函数在处理不同类型可迭代对象时的安全性。