From 857f8687b44cbd8f0692cd8648bce716465fcdc2 Mon Sep 17 00:00:00 2001 From: Filipe Rodrigues Date: Tue, 27 Feb 2024 13:11:01 +0000 Subject: [PATCH] Moved `Effect::running` to a free function. --- dynatos-reactive/src/effect.rs | 21 ++++++++++++--------- dynatos-reactive/src/signal.rs | 4 ++-- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/dynatos-reactive/src/effect.rs b/dynatos-reactive/src/effect.rs index ce63cbf..88db485 100644 --- a/dynatos-reactive/src/effect.rs +++ b/dynatos-reactive/src/effect.rs @@ -77,11 +77,6 @@ impl Effect { } } - /// Returns the current running effect - pub fn running() -> Option { - EFFECT_STACK.with_borrow(|effects| effects.last().cloned()) - } - /// Returns if this effect is inert. /// /// An inert effect is one that will never be updated. @@ -201,10 +196,18 @@ impl fmt::Debug for WeakEffect { } } +/// Returns the current running effect +pub fn running() -> Option { + EFFECT_STACK.with_borrow(|effects| effects.last().cloned()) +} + #[cfg(test)] mod test { // Imports - use {super::*, std::cell::OnceCell}; + use { + super::{super::effect, *}, + std::cell::OnceCell, + }; /// Leaks a value and returns a `&'static T` /// @@ -222,7 +225,7 @@ mod test { let running = self::leaked(OnceCell::new()); let effect = Effect::new(move || { running - .set(Effect::running().expect("Future wasn't running")) + .set(effect::running().expect("Future wasn't running")) .expect("Unable to set running effect"); }); @@ -245,12 +248,12 @@ mod test { let running_bottom = self::leaked(OnceCell::new()); let effect = Effect::new(move || { running_top - .set(Effect::running().expect("Future wasn't running")) + .set(effect::running().expect("Future wasn't running")) .expect("Unable to set running effect"); let effect = Effect::new(move || { running_bottom - .set(Effect::running().expect("Future wasn't running")) + .set(effect::running().expect("Future wasn't running")) .expect("Unable to set running effect"); }); diff --git a/dynatos-reactive/src/signal.rs b/dynatos-reactive/src/signal.rs index 119f936..be0251f 100644 --- a/dynatos-reactive/src/signal.rs +++ b/dynatos-reactive/src/signal.rs @@ -5,7 +5,7 @@ // Imports use { - crate::{Effect, SignalReplace, SignalSet, SignalUpdate, SignalWith, Trigger, WeakEffect}, + crate::{effect, Effect, SignalReplace, SignalSet, SignalUpdate, SignalWith, Trigger, WeakEffect}, std::{cell::RefCell, fmt, marker::Unsize, mem, ops::CoerceUnsized, rc::Rc}, }; @@ -50,7 +50,7 @@ impl SignalWith for Signal { where F: FnOnce(&Self::Value) -> O, { - if let Some(effect) = Effect::running() { + if let Some(effect) = effect::running() { self.inner.trigger.add_subscriber(effect); }