bool { a >= b -6ren">
gpt4 book ai didi

rust - 对于数字类型的 "fuzzy compare",我可以使用什么特征?

转载 作者:行者123 更新时间:2023-11-29 07:48:30 25 4
gpt4 key购买 nike

我正在尝试用 Rust 编写一个“模糊比较”函数。

这是一个例子:

fn fuzzy_cmp(a: f64, b: f64, tolerance: f64) -> bool {
a >= b - tolerance && a <= b + tolerance
}

我在将其转换为通用版本时遇到问题。是否存在将自然数和 float 分组,同时允许对它们执行算术运算的特征?像这样:

fn fuzzy_cmp<T: Numbers>(a: T, b: T, tolerance: T) -> bool {
a >= b - tolerance && a <= b + tolerance
}

我想在以下情况下使用此功能:

fuzzy_cmp(x, 20u64, 5u64)
fuzzy_cmp(y, 20f64, 5f64)
// ... etc

我已经尝试过 Ord 特性,但它不起作用:

28:23 error: binary operation `-` cannot be applied to type `T`
a >= b - tolerance && a <= b + tolerance
^~~~~~~~~~~~~

Trait core::num::Num 似乎已被弃用,所以我什至没有尝试使用它。

最佳答案

您无需指定 T 应为内置数字类型,只需指定它必须支持您的公式所需的加法、减法和比较特性即可:

fn fuzzy_cmp<T: Add<T, T> + Sub<T, T> + PartialOrd>(a: T, b: T, tolerance: T) -> bool {
a >= b - tolerance && a <= b + tolerance
}

关于rust - 对于数字类型的 "fuzzy compare",我可以使用什么特征?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27546063/

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