use std::ops::DerefMut; use crate::{store::Store, MappedStore}; use dioxus_signals::Readable; impl Store where Lens: Readable + 'static, T: DerefMut + 'static, { /// Returns a store that dereferences the original value. The dereferenced store shares the same /// subscriptions and tracking as the original store, but allows you to access the methods of the underlying type. /// /// # Example /// /// ```rust, no_run /// use dioxus_stores::*; /// let store = use_store(|| Box::new(vec![1, 2, 3])); /// let deref_store = store.deref(); /// // The dereferenced store can access the store methods of the underlying type. /// assert_eq!(deref_store.len(), 3); /// ``` pub fn deref(self) -> MappedStore { let map: fn(&T) -> &T::Target = |value| value.deref(); let map_mut: fn(&mut T) -> &mut T::Target = |value| value.deref_mut(); self.into_selector().map(map, map_mut).into() } }