gpt4 book ai didi

rust - 如何在没有Ord的情况下找到向量的最小值?

转载 作者:行者123 更新时间:2023-12-03 11:25:20 25 4
gpt4 key购买 nike

我有一个向量 RTSPUrl我想找到最小的项目。

struct RTSPUrl { /* fields omitted */ }

fn main() {
let rtsp_urls = std::vec::Vec::<RTSPUrl>::new();
let minimum_element = rtsp_urls.iter().min();
}
然而编译器提示 RTSPUrl应该实现 Ord .
error[E0277]: the trait bound `RTSPUrl: std::cmp::Ord` is not satisfied
--> src/main.rs:5:44
|
5 | let minimum_element = rtsp_urls.iter().min();
| ^^^ the trait `std::cmp::Ord` is not implemented for `RTSPUrl`
|
= note: required because of the requirements on the impl of `std::cmp::Ord` for `&RTSPUrl`
但是这种类型不是来自我的箱子,因为它是由 protobuf 生成的。我还有什么可以做的吗?

最佳答案

您可以使用 min_by 并自己实现排序:

let minimum_element = rtsp_urls.iter().min_by(|a, b| {
// return an Ordering based on a and b
Ordering::Equal
});
或者,如果您只是按 RTSPUrl 的某些属性进行订购确实实现了 Ord ,您可以使用 min_by_key :
let minimum_element = rtsp_urls.iter().min_by_key(|url| {
// return something that implements Ord based on url
url.something()
});
您没有指定什么 RTSPUrl看起来或您希望它如何排序,但这些选项之一应该有效。 Link to playground .
相同的模式( *_by()*_by_key() )用于其他地方,如 max slice.sort .

关于rust - 如何在没有Ord的情况下找到向量的最小值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64362740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com