11#![ allow( static_mut_refs) ]
22
3- use std:: rc:: Rc ;
3+ use std:: rc:: Weak ;
44
55use once_cell:: sync:: Lazy ;
66
77use crate :: { Effect , Observable } ;
88
99static mut CALL_STACK : Lazy < Vec < & ' static dyn Observable > > = Lazy :: new ( Vec :: new) ;
1010
11- static mut CURRENT_EFFECT : Option < Rc < Effect > > = None ;
11+ static mut CREATING_EFFECT : Option < Weak < Effect > > = None ;
1212
1313pub ( crate ) fn push ( op : & ' static dyn Observable ) {
1414 unsafe { CALL_STACK . push ( op) }
@@ -22,16 +22,16 @@ pub(crate) fn pop() -> Option<&'static dyn Observable> {
2222 unsafe { CALL_STACK . pop ( ) }
2323}
2424
25- pub ( crate ) fn current_effect_push ( effect : Rc < Effect > ) {
26- assert ! ( unsafe { CURRENT_EFFECT . is_none( ) } ) ;
27- unsafe { CURRENT_EFFECT = Some ( effect) }
25+ pub ( crate ) fn creating_effect_push ( effect : Weak < Effect > ) {
26+ assert ! ( unsafe { CREATING_EFFECT . is_none( ) } ) ;
27+ unsafe { CREATING_EFFECT = Some ( effect) }
2828}
2929
30- pub ( crate ) fn current_effect_peak ( ) -> Option < Rc < Effect > > {
31- unsafe { CURRENT_EFFECT . clone ( ) }
30+ pub ( crate ) fn creating_effect_peak ( ) -> Option < Weak < Effect > > {
31+ unsafe { CREATING_EFFECT . clone ( ) }
3232}
3333
34- pub ( crate ) fn current_effect_pop ( ) -> Rc < Effect > {
35- assert ! ( unsafe { CURRENT_EFFECT . is_some( ) } ) ;
36- unsafe { CURRENT_EFFECT . take ( ) . unwrap ( ) }
34+ pub ( crate ) fn creating_effect_pop ( ) -> Weak < Effect > {
35+ assert ! ( unsafe { CREATING_EFFECT . is_some( ) } ) ;
36+ unsafe { CREATING_EFFECT . take ( ) . unwrap ( ) }
3737}
0 commit comments