reactive-cache 0.4.1

A lightweight, dependency-aware memoization library with automatic invalidation and lazy recomputation.
Documentation
#![allow(static_mut_refs)]

use std::rc::Weak;

use once_cell::sync::Lazy;

use crate::IMemo;

static mut MEMO_STACK: Lazy<Vec<Weak<dyn IMemo>>> = Lazy::new(Vec::new);

pub(crate) fn push(op: Weak<dyn IMemo>) {
    unsafe { MEMO_STACK.push(op) }
}

pub(crate) fn last() -> Option<&'static Weak<dyn IMemo>> {
    unsafe { MEMO_STACK.last() }
}

pub(crate) fn pop() -> Option<Weak<dyn IMemo>> {
    unsafe { MEMO_STACK.pop() }
}