1个不稳定版本
0.1.0 | 2024年3月23日 |
---|
#1539 在 算法 中
15KB
458 行
near_enough
有时,返回一个“足够接近”的结果比返回没有任何结果更有用。此crate提供查找两个值之间差异以及从集合中获得最接近匹配项的工具。
目前它仍在积极开发中,几乎可以肯定不是最高效的实现。
lib.rs
:
在编程和生活中,有时返回与给定搜索键最接近的匹配项比返回没有任何结果更有用。此crate提供了一组(小型)特性和默认实现,以方便实现这一点。
此crate的目标不是提供复杂的diffing算法,而是简单的工具(例如,在值集中查找最接近的整数)。
使用usize的简单示例
use near_enough::Closest;
let values: [usize; 5] = [0, 1, 3, 5, 9];
assert_eq!(values.closest(&2), Some(&1));
使用自定义类型的复杂示例
use near_enough::Closest;
use near_enough::Diff;
#[derive(Debug, Eq, PartialEq)]
struct LengthString(String);
impl Diff for LengthString {
type Output = usize;
fn diff(&self, other: &Self) -> usize {
self.0.len().diff(&other.0.len())
}
}
let values: [LengthString; 3] = [
LengthString("a".to_string()),
LengthString("bb".to_string()),
LengthString("dddd".to_string()),
];
assert_eq!(
values.closest(&LengthString("ccc".to_string())),
Some(&LengthString("bb".to_string()))
);