#key #traits #comparison #specifying #structure #no-std

no-std 带键

通过指定键实现比较特性

1 个不稳定版本

0.1.3 2021年2月21日
0.1.2 2021年2月21日
0.1.1 2021年2月21日
0.1.0 2021年2月21日

#2367数据结构

MIT 许可证

11KB
254

keyed

.github/workflows/ci.yml docs

通过指定键实现比较特性,这可能会使实现基于键的比较变得稍微容易一些。


lib.rs:

keyed

使实现基于键的比较变得稍微容易。用法

  1. 为您的类型实现 Key 特性。
  2. 将您的值包装在 Keyed 结构中。

示例

use keyed::{Key, Keyed};

#[derive(Debug)]
struct Item<T> {
    key: i32,
    value: T,
}

impl<T> Key for Item<T> {
    type Output = i32;

    fn key(&self) -> Self::Output {
        self.key
    }
}

let lhs = Keyed(Item { key: 4, value: 3 });
let rhs = Keyed(Item { key: 4, value: 7 });

assert_eq!(lhs, rhs);

如果您的键是内部数据的引用,您可以使用 RefKey 特性和 RefKeyed 包装器

use keyed::{RefKey, RefKeyed};

#[derive(Debug)]
struct Item<T> {
    key: i32,
    value: T,
}

impl<T> RefKey for Item<T> {
    type Output = i32;

    fn key(&self) -> &Self::Output {
        &self.key
    }
}

let lhs = RefKeyed(Item { key: 4, value: 3 });
let rhs = RefKeyed(Item { key: 4, value: 7 });

assert_eq!(lhs, rhs);

无运行时依赖