#difference #finding #match #returning #set #near #values

near_enough

用于查找两个值之间的差异,并从集合中获得最接近的匹配项的工具

1个不稳定版本

0.1.0 2024年3月23日

#1539算法

MIT/Apache

15KB
458

near_enough

Rust

有时,返回一个“足够接近”的结果比返回没有任何结果更有用。此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()))
);

无运行时依赖