Rust 如何使用自定义的排序方式对字符串构成的 vector 进行排序?

2021-10-25 11:05:37 +08:00
 homie2018

新手,比如下面的示例, 在 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));
}

1418 次点击
所在节点    Rust
3 条回复
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 。
homie2018
2021-10-25 16:37:51 +08:00
@h404bi 好的,非常感谢,看来得研究一下 Ordering 了。
Observer42
2021-10-26 18:54:37 +08:00
sort(_unstable)_by_key 可以根据 key 排序,只要 key 实现了 Ord

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/810290

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX