1
+ use ahash:: { HashMap , HashMapExt } ;
1
2
use crates_index_diff:: Change :: * ;
2
- use std:: collections:: HashSet ;
3
3
4
4
#[ allow( dead_code) ]
5
5
pub enum Step {
@@ -13,10 +13,10 @@ pub fn baseline(mode: Step) -> Result<(), Box<dyn std::error::Error + Send + Syn
13
13
let baseline = scope. spawn ( || -> Result < _ , crates_index:: Error > {
14
14
let index = crates_index:: Index :: new_cargo_default ( ) ?;
15
15
let start = std:: time:: Instant :: now ( ) ;
16
- let mut versions = HashSet :: new ( ) ;
16
+ let mut versions = HashMap :: new ( ) ;
17
17
for krate in index. crates ( ) {
18
18
for version in krate. versions ( ) {
19
- versions. insert ( version. checksum ( ) . to_owned ( ) ) ;
19
+ versions. insert ( version. checksum ( ) . to_owned ( ) , version . is_yanked ( ) ) ;
20
20
}
21
21
}
22
22
Ok ( ( versions, start. elapsed ( ) ) )
@@ -47,7 +47,7 @@ pub fn baseline(mode: Step) -> Result<(), Box<dyn std::error::Error + Send + Syn
47
47
steps. push ( commits. len ( ) - 1 ) ;
48
48
}
49
49
50
- let mut versions = HashSet :: default ( ) ;
50
+ let mut versions = HashMap :: default ( ) ;
51
51
let mut previous = None ;
52
52
let num_steps = steps. len ( ) ;
53
53
for ( step, current) in steps
@@ -67,11 +67,13 @@ pub fn baseline(mode: Step) -> Result<(), Box<dyn std::error::Error + Send + Syn
67
67
match change {
68
68
Added ( v) | AddedAndYanked ( v) => {
69
69
// found a new crate, add it to the index
70
- versions. insert ( v. checksum . to_owned ( ) ) ;
70
+ versions. insert ( v. checksum . to_owned ( ) , v . yanked ) ;
71
71
}
72
72
Unyanked ( v) | Yanked ( v) => {
73
- // yanked/unyanked crates must be part of the index
74
- assert ! ( versions. contains( & v. checksum) )
73
+ * versions
74
+ . get_mut ( & v. checksum )
75
+ . expect ( "these events mean `Added*` events have been emitted" ) =
76
+ v. yanked
75
77
}
76
78
Deleted {
77
79
versions : deleted, ..
0 commit comments