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 数据结构
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
提供了几个实用函数,允许您根据需要操作内部值或标识符。