
新手,比如下面的示例, 在 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 > 似乎要实现 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 |