Moved Effect::running to a free function.

This commit is contained in:
2024-02-27 13:11:01 +00:00
parent 7b4ced1a42
commit 857f8687b4
2 changed files with 14 additions and 11 deletions

View File

@@ -77,11 +77,6 @@ impl Effect {
}
}
/// Returns the current running effect
pub fn running() -> Option<WeakEffect> {
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<WeakEffect> {
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");
});

View File

@@ -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<T: ?Sized> SignalWith for Signal<T> {
where
F: FnOnce(&Self::Value) -> O,
{
if let Some(effect) = Effect::running() {
if let Some(effect) = effect::running() {
self.inner.trigger.add_subscriber(effect);
}