@@ -43,37 +43,23 @@ impl<I: Idx, T: Copy> AppendOnlyIndexVec<I, T> {
43
43
44
44
#[ derive( Default ) ]
45
45
pub struct AppendOnlyVec < T : Copy > {
46
- #[ cfg( not( parallel_compiler) ) ]
47
- vec : elsa:: vec:: FrozenVec < T > ,
48
- #[ cfg( parallel_compiler) ]
49
- vec : elsa:: sync:: LockFreeFrozenVec < T > ,
46
+ vec : parking_lot:: RwLock < Vec < T > > ,
50
47
}
51
48
52
49
impl < T : Copy > AppendOnlyVec < T > {
53
50
pub fn new ( ) -> Self {
54
- Self {
55
- #[ cfg( not( parallel_compiler) ) ]
56
- vec : elsa:: vec:: FrozenVec :: new ( ) ,
57
- #[ cfg( parallel_compiler) ]
58
- vec : elsa:: sync:: LockFreeFrozenVec :: new ( ) ,
59
- }
51
+ Self { vec : Default :: default ( ) }
60
52
}
61
53
62
54
pub fn push ( & self , val : T ) -> usize {
63
- #[ cfg( not( parallel_compiler) ) ]
64
- let i = self . vec . len ( ) ;
65
- #[ cfg( not( parallel_compiler) ) ]
66
- self . vec . push ( val) ;
67
- #[ cfg( parallel_compiler) ]
68
- let i = self . vec . push ( val) ;
69
- i
55
+ let mut v = self . vec . write ( ) ;
56
+ let n = v. len ( ) ;
57
+ v. push ( val) ;
58
+ n
70
59
}
71
60
72
61
pub fn get ( & self , i : usize ) -> Option < T > {
73
- #[ cfg( not( parallel_compiler) ) ]
74
- return self . vec . get_copy ( i) ;
75
- #[ cfg( parallel_compiler) ]
76
- return self . vec . get ( i) ;
62
+ self . vec . read ( ) . get ( i) . copied ( )
77
63
}
78
64
79
65
pub fn iter_enumerated ( & self ) -> impl Iterator < Item = ( usize , T ) > + ' _ {
0 commit comments