@@ -22,8 +22,10 @@ fn tree_revision<T: Into<Value>>(mut tree: RefMut<Tree>, key: u64, val: T) {
2222}
2323
2424fn tree_rollback ( mut tree : RefMut < Tree > , key : u64 ) {
25- if let Some ( need_del) = tree. get_mut ( & key) . map ( |e| e. rollback ( ) . is_err ( ) ) && need_del{
26- tree. remove ( & key) ;
25+ if let Some ( need_del) = tree. get_mut ( & key) . map ( |e| e. rollback ( ) . is_err ( ) ) {
26+ if need_del {
27+ tree. remove ( & key) ;
28+ }
2729 }
2830}
2931
@@ -85,28 +87,46 @@ impl Storage {
8587 }
8688
8789 pub fn enter ( & mut self ) {
88- MGR . with_borrow_mut ( |m| {
90+ MGR . with ( |m| {
8991 for ( k, v) in self . tree ( ) . iter ( ) {
90- if m. tls . borrow ( ) . contains_key ( & k) {
91- tree_revision ( m. tls . borrow_mut ( ) , * k, v. clone_value ( ) ) ;
92+ if m. borrow_mut ( ) . tls . borrow ( ) . contains_key ( & k) {
93+ tree_revision ( m. borrow_mut ( ) . tls . borrow_mut ( ) , * k, v. clone_value ( ) ) ;
9294 } else {
93- m. tls . borrow_mut ( ) . insert ( * k, v. clone ( ) ) ;
95+ m. borrow_mut ( ) . tls . borrow_mut ( ) . insert ( * k, v. clone ( ) ) ;
9496 }
9597 }
9698 let keys = self . tree ( ) . keys ( ) . cloned ( ) . collect ( ) ;
97- m. stack . push ( RefCell :: new ( keys) ) ;
99+ m. borrow_mut ( ) . stack . push ( RefCell :: new ( keys) ) ;
98100 } ) ;
101+ // MGR.with_borrow_mut(|m| {
102+ // for (k, v) in self.tree().iter() {
103+ // if m.tls.borrow().contains_key(&k) {
104+ // tree_revision(m.tls.borrow_mut(), *k, v.clone_value());
105+ // } else {
106+ // m.tls.borrow_mut().insert(*k, v.clone());
107+ // }
108+ // }
109+ // let keys = self.tree().keys().cloned().collect();
110+ // m.stack.push(RefCell::new(keys));
111+ // });
99112 self . isview += 1 ;
100113 }
101114
102115 pub fn exit ( & mut self ) {
103- MGR . with_borrow_mut ( |m| {
104- if let Some ( keys) = m. stack . pop ( ) {
116+ MGR . with ( |m| {
117+ if let Some ( keys) = m. borrow_mut ( ) . stack . pop ( ) {
105118 keys. borrow ( )
106119 . iter ( )
107- . for_each ( |k| tree_rollback ( m. tls . borrow_mut ( ) , * k) ) ;
120+ . for_each ( |k| tree_rollback ( m. borrow_mut ( ) . tls . borrow_mut ( ) , * k) ) ;
108121 }
109122 } ) ;
123+ // MGR.with_borrow_mut(|m| {
124+ // if let Some(keys) = m.stack.pop() {
125+ // keys.borrow()
126+ // .iter()
127+ // .for_each(|k| tree_rollback(m.tls.borrow_mut(), *k));
128+ // }
129+ // });
110130 self . isview -= 1 ;
111131 }
112132
0 commit comments