react/use_ref/traits.rs
1use std::rc::Rc;
2
3pub trait ReadRef<T> {
4 fn current(&self) -> T;
5}
6
7pub trait WriteRef<T> {
8 fn set_current(&self, v: T);
9}
10
11pub trait MutableRef<T>: WriteRef<T> + ReadRef<T> {}
12
13impl<T, S: WriteRef<T> + ReadRef<T>> MutableRef<T> for S {}
14
15impl<T, F: ?Sized + Fn(T)> WriteRef<T> for F {
16 fn set_current(&self, v: T) {
17 self(v)
18 }
19}
20
21impl<T, F: ?Sized + Fn(T)> WriteRef<T> for Rc<F> {
22 fn set_current(&self, v: T) {
23 self(v)
24 }
25}