use std::cell::RefCell as StdRefCell;
pub struct TemplateRef<T> {
inner: StdRefCell<Option<T>>,
}
impl<T> TemplateRef<T> {
pub fn new() -> Self {
TemplateRef {
inner: StdRefCell::new(None),
}
}
pub fn with_value(value: T) -> Self {
TemplateRef {
inner: StdRefCell::new(Some(value)),
}
}
pub fn get(&self) -> std::cell::Ref<'_, Option<T>> {
self.inner.borrow()
}
pub fn set(&self, value: T) {
*self.inner.borrow_mut() = Some(value);
}
pub fn clear(&self) {
*self.inner.borrow_mut() = None;
}
}
impl<T> Default for TemplateRef<T> {
fn default() -> Self {
Self::new()
}
}