我正在尝试在Rust中显示向量的最小值,但找不到找到它的好方法。
这是我创建向量的方式i32:
let mut v = vec![5, 6, 8, 4, 2, 7];
Run Code Online (Sandbox Code Playgroud)
我的目标是在无需排序的情况下获取该向量的最小值。
i32在Rust 中获得向量最小值的最佳方法是什么?
小智 23
let mut v = vec![5, 6, 8, 4, 2, 7];
let minValue = *v.iter().min().unwrap();
Run Code Online (Sandbox Code Playgroud)
let minValue = vec.iter().min();
match minValue {
Some(min) => println!( "Min value: {}", min ),
None => println!( "Vector is empty" ),
}
Run Code Online (Sandbox Code Playgroud)
https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.min
Run Code Online (Sandbox Code Playgroud)fn min(self) -> Option<Self::Item> where Self::Item: Ord,返回迭代器的最小元素。
如果几个元素相等地最小,则返回第一个元素。如果迭代器为空,则返回None。
我发现这个Gist具有在Swift和Rust中表达的一些常见的C#/。NET Linq操作,非常方便:https : //gist.github.com/leonardo-m/6e9315a57fe9caa893472c2935e9d589
你好@octano 正如 Dai 已经回答的那样,最小/最大返回 Option<> 值,所以你只能像示例中那样匹配它:
fn main() {
let vec_to_check = vec![5, 6, 8, 4, 2, 7];
let min_value = vec_to_check.iter().min();
match min_value {
None => println!("Min value was not found"),
Some(i) => println!("Min Value = {}", i)
}
}
Run Code Online (Sandbox Code Playgroud)