新手,比如下面的示例, 在 C++
中可以通过传入自定义函数对 vector 进行排序,Rust 似乎要实现 Ordering
,不太清楚应该怎么使用自定义的函数。
fn my_cmp(s: &str, t: &str) -> bool {
s.starts_with("123")
}
fn main() {
let mut arr = vec!["abc", "efg", "123"];
// arr.sort_by(|a, b| my_cmp(a, b));
}
1
h404bi 2021-10-25 11:40:02 +08:00 1
> 似乎要实现 Ordering
sort_by 是的。可以看看 sort_by 的签名 https://doc.rust-lang.org/std/vec/struct.Vec.html#method.sort_by ,传入的比较函数需要返回 Ordering 枚举类型。my_cmp 根据这个签名去实现即可,不能简单返回 bool 。 |
3
Observer42 2021-10-26 18:54:37 +08:00
sort(_unstable)_by_key 可以根据 key 排序,只要 key 实现了 Ord
|