File tree Expand file tree Collapse file tree 3 files changed +8
-20
lines changed
Expand file tree Collapse file tree 3 files changed +8
-20
lines changed Original file line number Diff line number Diff line change @@ -9,10 +9,10 @@ impl Effect {
99 let e = Rc :: new ( Effect { f : Box :: new ( f) } ) ;
1010
1111 crate :: current_effect_push ( e. clone ( ) ) ;
12-
1312 e. run ( ) ;
13+ crate :: current_effect_pop ( ) ;
1414
15- crate :: current_effect_pop ( )
15+ e
1616 }
1717
1818 pub ( crate ) fn run ( & self ) {
Original file line number Diff line number Diff line change 1- pub enum Trace {
2- Push ,
3- Pop ,
4- }
5-
6- pub enum MemoOperator {
7- Memo ( Trace ) ,
8- Pop ,
9- }
10-
111mod cache;
122mod call_stack;
133
Original file line number Diff line number Diff line change @@ -61,14 +61,12 @@ where
6161 {
6262 self . dependents . borrow_mut ( ) . push ( * last) ;
6363 }
64- if let Some ( e) = call_stack:: current_effect_peak ( )
65- && !self
66- . effects
67- . borrow ( )
68- . iter ( )
69- . any ( |w| w. as_ptr ( ) == Rc :: as_ptr ( & e) )
70- {
71- self . effects . borrow_mut ( ) . push ( Rc :: downgrade ( & e) ) ;
64+
65+ if let Some ( e) = call_stack:: current_effect_peak ( ) {
66+ let e = Rc :: downgrade ( & e) ;
67+ if !self . effects . borrow ( ) . iter ( ) . any ( |w| Weak :: ptr_eq ( w, & e) ) {
68+ self . effects . borrow_mut ( ) . push ( e) ;
69+ }
7270 }
7371
7472 self . value . borrow ( )
You can’t perform that action at this time.
0 commit comments