#identifier #utility #key

nightly ident

一个用于封装具有不可变标识符的类型并在集合中存储/访问此类类型的实用程序包

10个版本

使用旧Rust 2015

0.3.10 2018年8月3日
0.3.9 2018年6月8日
0.2.8 2018年5月27日
0.2.6 2018年3月15日
0.1.4 2018年3月14日

#1931 in 数据结构

0BSD 许可证

25KB
317

ident

一个Rust实用程序包,用于封装具有不可变标识符的类型,并通过该标识符在集合中存储/访问此类类型。

如何使用此包?

首先将包添加到您的 Cargo.toml

[dependencies]
ident = "*" # or the specific version you want to use.

并将包导入到您的 main.rs/lib.rs

extern crate ident;

use ident::*;

好的,但这个包做什么

假设您有一些类型

#[derive(Clone)]
struct Foo {
    x: usize
}

impl Foo {
    pub fn new(x: usize) -> Self {
        Self { x }
    }
    pub fn do_stuff(&mut self) {
        //Your code.
    }
}

并且您有一个 Foo 的集合

use std::collections::HashMap;

fn main() {
    let mut my_foos = HashMap::with_capacity(2);
    my_foos.insert(5, Foo::new(10));
    my_foos.insert(10, Foo::new(5));

    let mut foo = my_foos.get(&5).unwrap().clone();
    foo.do_stuff();
}

通常很有用记住您从哪里得到了您的内容(在这个例子中是 my_foos[5])。这通常意味着创建一个新的变量,您必须记住在所有地方传递它,但使用 ident

use ident::*;
use std::collections::HashMap;

fn main() {
    let mut my_foos = HashMap::with_capacity(2);
    my_foos.insert(5, Foo::new(10));
    my_foos.insert(10, Foo::new(5));

    let mut foo = WithIdent::new(5, my_foos.get(5).unwrap().clone());
    foo.do_stuff();
}

我们能够在访问值的同时获取与值捆绑在一起的

这是一个简单的用例

  • 使用 "标识符" 获取和插入在标准集合中实现。
  • Rust能够在不需要您干预的情况下推断您的值的类型。
  • WithIdent 提供了几个实用函数,允许您根据需要操作内部值或标识符。

没有运行时依赖