gpt4 book ai didi

rust - 在 Rust 中为 Option 做 max 的惯用方法

转载 作者:行者123 更新时间:2023-12-04 00:50:57 27 4
gpt4 key购买 nike

我在 Option 中有一个数字。我需要用它的最大值和其他值替换它,或者如果我的号码是 None,则使用其他值。

为此我编写了一个函数:

fn max(a: Option<u32>, b: u32) -> Option<u32> {
if a.is_some() {
Some(std::cmp::max(a.unwrap(), b))
} else {
Some(b)
}
}

但我无法停止思考使用 Option 的方法有更好更简洁的方法。你能帮帮我吗?

最佳答案

使用 map :

fn max(a: Option<u32>, b: u32) -> Option<u32> {
a.map(|v| std::cmp::max(v, b))
}

Playground

map_or默认未包装的术语:

fn max(a: Option<u32>, b: u32) -> Option<u32> {
a.map_or(Some(b), |v| Some(std::cmp::max(v, b)))
}

Playground

您实际上不需要返回的Option:

fn max(a: Option<u32>, b: u32) -> u32 {
a.map_or(b, |v| std::cmp::max(v, b))
}

关于rust - 在 Rust 中为 Option<number> 做 max 的惯用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66720237/

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