gpt4 book ai didi

rust - Rust 标准库有 Min/Max 特性吗?

转载 作者:行者123 更新时间:2023-12-02 09:04:45 30 4
gpt4 key购买 nike

我想用其最小值初始化 T 类型的变量,例如 T::min() 。在 Rust 1.40.0 中是否可能不需要外部依赖?

另一种方法是将变量设置为 None ,但这会在每次我想增加变量时引入 None 检查的开销。

最佳答案

标准库中没有这样的特性。

但是,如果您愿意为您感兴趣的类型创建适当的特征并实现它们,则可以为没有外部依赖关系的任意类型使用 min 和 max 的通用概念,例如:

use core::fmt::Display;

trait Min {
fn min() -> Self;
}

trait Max {
fn max() -> Self;
}

impl Min for u8 {
fn min() -> u8 {
std::u8::MIN
}
}

impl Max for u8 {
fn max() -> u8 {
std::u8::MAX
}
}

impl Min for i32 {
fn min() -> i32 {
std::i32::MIN
}
}

impl Max for i32 {
fn max() -> i32 {
std::i32::MAX
}
}

fn print_min_max<T: Min + Max + Display>() {
println!("{} -> {}", T::min(), T::max());
}

fn main() {
let m: i32 = Min::min();
println!("{}", m);

print_min_max::<u8>();
print_min_max::<i32>();
}

这打印:

-2147483648
0 -> 255
-2147483648 -> 2147483647

Playground

关于rust - Rust 标准库有 Min/Max 特性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59869067/

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