#hash-map #comparison #iteration #collection #detect #track #case

comparer

一个简单的库,用于跟踪在多次迭代中对HashMap的更改

3个不稳定版本

0.2.0 2024年7月20日
0.1.11 2024年7月20日
0.1.1 2024年7月19日
0.1.0 2024年7月19日

472数据结构

Download history 257/week @ 2024-07-14 69/week @ 2024-07-21 31/week @ 2024-07-28

每月357 次下载

MIT 许可证

10KB
68

一个简单的库,用于跟踪在多次迭代中对HashMap的更改。

此库旨在检测自上次检查以来HashMap是否已更新或是否未更改。您可以将您的HashMap与之前的版本进行比较,以查看是否有任何更改或添加的内容。

使用案例

当您需要从比较中返回bool时,简单的使用案例

use std::collections::HashMap;
use comparer::HashMapComparer;

let mut my_hashmap = HashMap::<u8, &str>::new();
let comparer = HashMapComparer::<u8, &str>::new();

my_hashmap.insert(1, "foo");
// HashMap has new values
assert_eq!(false, comparer.is_same_update(&my_hashmap));
// Hashmap has not received new values
assert_eq!(true, comparer.is_same_update(&my_hashmap));

my_hashmap.insert(2, "bar");
// HashMap has new values
assert_eq!(false, comparer.is_same_update(&my_hashmap));

当您需要返回比较结果中更改的值时,使用案例

//Example usage
use std::collections::HashMap;
use comparer::HashMapComparer;

let comparer = HashMapComparer::<u8, &str>::new();
let mut my_hashmap = HashMap::<u8, &str>::new();
let mut results: Vec<HashMap<u8, &str>> = vec![];

my_hashmap.insert(1, "foo");
my_hashmap.insert(2, "bar");
my_hashmap.insert(4, "foo");

for i in 0..5 {
    my_hashmap.insert(i, "foo");
    results.push(comparer.update_and_compare(&my_hashmap).unwrap());
 }

assert_eq!(
    vec![
         // In the first comparison comparer always returns the whole hashmap because all values in it is new
         HashMap::<u8, &str>::from_iter(vec![(0, "foo"), (4, "foo"), (2, "bar"), (1, "foo")]),
         // Returns empty hashmap because value 1: "foo" didn't change
         HashMap::<u8, &str>::new(),
         // Returns hashmap with 2: "foo" because it was changed from 2: "bar"
         HashMap::<u8, &str>::from_iter(vec![(2, "foo")]),
         // Returns hashmap with 3: "foo" because it's a new value
         HashMap::<u8, &str>::from_iter(vec![(3, "foo")]),
         // Returns empty hashmap because value 4: "foo" didn't change
         HashMap::<u8, &str>::new(),
       ],
     results
 );

此库不使用任何第三方crate,只使用标准Rust库中的crate :)

无运行时依赖