use super::*;
impl<T: Clone + PartialEq + 'static> Previous<T> {
pub fn new() -> Self {
Self {
previous: Signal::create(None),
}
}
pub fn record(&self, current: T) {
self.get_previous().set(Some(current));
}
pub fn get_previous_snapshot(&self) -> Option<T> {
self.get_previous().get()
}
pub fn clear(&self) {
self.get_previous().set(None);
}
}
impl<T: Clone + PartialEq + Debug + 'static> Display for Previous<T> {
fn fmt(&self, formatter: &mut Formatter<'_>) -> FmtResult {
match self.get_previous().get() {
Some(value) => write!(formatter, "Previous(Some({value:?}))"),
None => write!(formatter, "Previous(None)"),
}
}
}
impl<T: Clone + PartialEq + 'static> Default for Previous<T> {
fn default() -> Self {
Self::new()
}
}