Skip to main content

Observe

Trait Observe 

Source
pub trait Observe {
    type Observer<'ob, S, D>: Observer<'ob, Head = S, InnerDepth = D>
       where Self: 'ob,
             D: Unsigned,
             S: AsDerefMut<D, Target = Self> + ?Sized + 'ob;
    type Spec;
}
Expand description

A trait for types that can be observed for mutations.

Types implementing Observe can be wrapped in Observers that track mutations. The trait is typically derived using the #[derive(Observe)] macro and used in observe! macros.

A single type T may have many possible Observer<'ob, Target = T> implementations in theory, each with different change-tracking strategies. The Observe trait selects one of these as the default observer to be used by #[derive(Observe)] and other generic code that needs an observer for T.

When you #[derive(Observe)] on a struct, the macro requires that each field type implements Observe so it can select an appropriate default observer for that field. The Observer associated type of each field’s Observe implementation determines which observer will be instantiated in the generated code.

§Example

use morphix::adapter::Json;
use morphix::{Observe, observe};
use serde::Serialize;

#[derive(Serialize, Observe)]
struct MyStruct {
    field: String,
}

let mut data = MyStruct { field: "value".to_string() };
let Json(mutation) = observe!(data => {
    // Mutations through observer are tracked
    data.field.push_str(" modified");
}).unwrap();

Required Associated Types§

Source

type Observer<'ob, S, D>: Observer<'ob, Head = S, InnerDepth = D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Associated observer type.

This associated type specifies the default observer implementation for the type, when used in contexts where an Observe implementation is required.

Source

type Spec

Associated specification type for this observable.

The Spec associated type is used as a marker to select specialized implementations of observers in certain contexts. For most types, this will be DefaultSpec, but types can specify alternative specs to enable specialized observation strategies.

§Usage

One important use of Spec is to select the appropriate observer implementation for wrapper types like Option<T>:

This allows Option<T> to automatically inherit more accurate or efficient change detection strategies based on its element type, without requiring manual implementation.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl Observe for IpAddr

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for SocketAddr

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for Month

Available on crate feature chrono only.
Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for Weekday

Available on crate feature chrono only.
Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for bool

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for char

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for f32

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for f64

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for i8

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for i16

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for i32

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for i64

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for i128

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for isize

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for str

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, ShallowHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = DefaultSpec

Source§

impl Observe for u8

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for u16

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for u32

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for u64

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for u128

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for ()

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for usize

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for String

Source§

type Observer<'ob, S, D> = StringObserver<'ob, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = DefaultSpec

Source§

impl Observe for Ipv4Addr

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for Ipv6Addr

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for SocketAddrV4

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for SocketAddrV6

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for AtomicBool

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = DefaultSpec

Source§

impl Observe for AtomicI8

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = DefaultSpec

Source§

impl Observe for AtomicI16

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = DefaultSpec

Source§

impl Observe for AtomicI32

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = DefaultSpec

Source§

impl Observe for AtomicI64

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = DefaultSpec

Source§

impl Observe for AtomicIsize

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = DefaultSpec

Source§

impl Observe for AtomicU8

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = DefaultSpec

Source§

impl Observe for AtomicU16

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = DefaultSpec

Source§

impl Observe for AtomicU32

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = DefaultSpec

Source§

impl Observe for AtomicU64

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = DefaultSpec

Source§

impl Observe for AtomicUsize

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = DefaultSpec

Source§

impl Observe for Duration

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for SystemTime

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for Months

Available on crate feature chrono only.
Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for NaiveDate

Available on crate feature chrono only.
Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for NaiveDateTime

Available on crate feature chrono only.
Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for IsoWeek

Available on crate feature chrono only.
Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for Days

Available on crate feature chrono only.
Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for NaiveWeek

Available on crate feature chrono only.
Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for NaiveTime

Available on crate feature chrono only.
Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for FixedOffset

Available on crate feature chrono only.
Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for Utc

Available on crate feature chrono only.
Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for TimeDelta

Available on crate feature chrono only.
Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for WeekdaySet

Available on crate feature chrono only.
Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for NonNilUuid

Available on crate feature uuid only.
Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl Observe for Uuid

Available on crate feature uuid only.
Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl<K, V: Observe> Observe for BTreeMap<K, V>

Source§

type Observer<'ob, S, D> = BTreeMapObserver<'ob, K, <V as Observe>::Observer<'ob, V, Zero>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = DefaultSpec

Source§

impl<K, V: Observe> Observe for HashMap<K, V>

Source§

type Observer<'ob, S, D> = HashMapObserver<'ob, K, <V as Observe>::Observer<'ob, V, Zero>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = DefaultSpec

Source§

impl<T> Observe for Option<T>
where T: Observe + OptionObserveImpl<T::Spec>,

Source§

type Observer<'ob, S, D> = <T as OptionObserveImpl<<T as Observe>::Spec>>::Observer<'ob, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = <T as Observe>::Spec

Source§

impl<T> Observe for (T₁, T₂, …, Tₙ)
where T: Observe + TupleObserveImpl<T::Spec>,

This trait is implemented for tuples up to 12 items long.

Source§

type Observer<'ob, S, D> = <T as TupleObserveImpl<<T as Observe>::Spec>>::Observer<'ob, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = <T as Observe>::Spec

Source§

impl<T> Observe for PhantomData<T>

Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Source§

impl<T: Observe + ?Sized> Observe for &mut T

Source§

type Observer<'ob, S, D> = DerefObserver<'ob, <T as Observe>::Observer<'ob, S, Succ<D>>> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = <T as Observe>::Spec

Source§

impl<T: Observe + ?Sized> Observe for Box<T>

Source§

type Observer<'ob, S, D> = DerefObserver<'ob, <T as Observe>::Observer<'ob, S, Succ<D>>> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = <T as Observe>::Spec

Source§

impl<T: Observe> Observe for [T]

Source§

type Observer<'ob, S, D> = SliceObserver<'ob, UnsafeCell<Vec<<T as Observe>::Observer<'ob, T, Zero>>>, (), S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = DefaultSpec

Source§

impl<T: Observe> Observe for Vec<T>

Source§

type Observer<'ob, S, D> = VecObserver<'ob, <T as Observe>::Observer<'ob, T, Zero>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = DefaultSpec

Source§

impl<T: Observe, const N: usize> Observe for [T; N]

Source§

type Observer<'ob, S, D> = ArrayObserver<'ob, N, <T as Observe>::Observer<'ob, T, Zero>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = DefaultSpec

Source§

impl<T: RefObserve + ?Sized> Observe for &T

Source§

type Observer<'ob, S, D> = DerefObserver<'ob, <T as RefObserve>::Observer<'ob, S, Succ<D>>> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = <T as RefObserve>::Spec

Source§

impl<T: RefObserve + ?Sized> Observe for Rc<T>

Source§

type Observer<'ob, S, D> = DerefObserver<'ob, <T as RefObserve>::Observer<'ob, S, Succ<D>>> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = <T as RefObserve>::Spec

Source§

impl<T: RefObserve + ?Sized> Observe for Arc<T>

Source§

type Observer<'ob, S, D> = DerefObserver<'ob, <T as RefObserve>::Observer<'ob, S, Succ<D>>> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = <T as RefObserve>::Spec

Source§

impl<Tz: TimeZone> Observe for DateTime<Tz>

Available on crate feature chrono only.
Source§

type Observer<'ob, S, D> = GeneralObserver<'ob, SnapshotHandler<<S as AsDeref<D>>::Target>, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob

Source§

type Spec = SnapshotSpec

Implementors§