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§
Sourcetype Observer<'ob, S, D>: Observer<'ob, Head = S, InnerDepth = D>
where
Self: 'ob,
D: Unsigned,
S: AsDerefMut<D, Target = Self> + ?Sized + 'ob
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.
Sourcetype Spec
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>:
DefaultSpec→ useOptionObserverwrappingT’s observerSnapshotSpec→ useSnapshotObserver<Option<T>>for snapshot-based change detection
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
impl Observe for IpAddr
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
type Spec = SnapshotSpec
Source§impl Observe for SocketAddr
impl Observe for SocketAddr
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
type Spec = SnapshotSpec
Source§impl Observe for Month
Available on crate feature chrono only.
impl Observe for Month
chrono only.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
type Spec = SnapshotSpec
Source§impl Observe for Weekday
Available on crate feature chrono only.
impl Observe for Weekday
chrono only.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
type Spec = SnapshotSpec
Source§impl Observe for bool
impl Observe for bool
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
type Spec = SnapshotSpec
Source§impl Observe for char
impl Observe for char
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
type Spec = SnapshotSpec
Source§impl Observe for f32
impl Observe for f32
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
type Spec = SnapshotSpec
Source§impl Observe for f64
impl Observe for f64
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
type Spec = SnapshotSpec
Source§impl Observe for i8
impl Observe for i8
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
type Spec = SnapshotSpec
Source§impl Observe for i16
impl Observe for i16
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
type Spec = SnapshotSpec
Source§impl Observe for i32
impl Observe for i32
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
type Spec = SnapshotSpec
Source§impl Observe for i64
impl Observe for i64
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
type Spec = SnapshotSpec
Source§impl Observe for i128
impl Observe for i128
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
type Spec = SnapshotSpec
Source§impl Observe for isize
impl Observe for isize
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
type Spec = SnapshotSpec
Source§impl Observe for str
impl Observe for str
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
type Spec = DefaultSpec
Source§impl Observe for u8
impl Observe for u8
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
type Spec = SnapshotSpec
Source§impl Observe for u16
impl Observe for u16
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
type Spec = SnapshotSpec
Source§impl Observe for u32
impl Observe for u32
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
type Spec = SnapshotSpec
Source§impl Observe for u64
impl Observe for u64
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
type Spec = SnapshotSpec
Source§impl Observe for u128
impl Observe for u128
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
type Spec = SnapshotSpec
Source§impl Observe for ()
impl Observe for ()
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
type Spec = SnapshotSpec
Source§impl Observe for usize
impl Observe for usize
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
type Spec = SnapshotSpec
Source§impl Observe for String
impl Observe for String
type Observer<'ob, S, D> = StringObserver<'ob, S, D> where Self: 'ob, D: Unsigned, S: AsDerefMut<D, Target = Self> + ?Sized + 'ob
type Spec = DefaultSpec
Source§impl Observe for Ipv4Addr
impl Observe for Ipv4Addr
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
type Spec = SnapshotSpec
Source§impl Observe for Ipv6Addr
impl Observe for Ipv6Addr
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
type Spec = SnapshotSpec
Source§impl Observe for SocketAddrV4
impl Observe for SocketAddrV4
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
type Spec = SnapshotSpec
Source§impl Observe for SocketAddrV6
impl Observe for SocketAddrV6
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
type Spec = SnapshotSpec
Source§impl Observe for AtomicBool
impl Observe for AtomicBool
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
type Spec = DefaultSpec
Source§impl Observe for AtomicI8
impl Observe for AtomicI8
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
type Spec = DefaultSpec
Source§impl Observe for AtomicI16
impl Observe for AtomicI16
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
type Spec = DefaultSpec
Source§impl Observe for AtomicI32
impl Observe for AtomicI32
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
type Spec = DefaultSpec
Source§impl Observe for AtomicI64
impl Observe for AtomicI64
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
type Spec = DefaultSpec
Source§impl Observe for AtomicIsize
impl Observe for AtomicIsize
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
type Spec = DefaultSpec
Source§impl Observe for AtomicU8
impl Observe for AtomicU8
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
type Spec = DefaultSpec
Source§impl Observe for AtomicU16
impl Observe for AtomicU16
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
type Spec = DefaultSpec
Source§impl Observe for AtomicU32
impl Observe for AtomicU32
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
type Spec = DefaultSpec
Source§impl Observe for AtomicU64
impl Observe for AtomicU64
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
type Spec = DefaultSpec
Source§impl Observe for AtomicUsize
impl Observe for AtomicUsize
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
type Spec = DefaultSpec
Source§impl Observe for Duration
impl Observe for Duration
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
type Spec = SnapshotSpec
Source§impl Observe for SystemTime
impl Observe for SystemTime
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
type Spec = SnapshotSpec
Source§impl Observe for Months
Available on crate feature chrono only.
impl Observe for Months
chrono only.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
type Spec = SnapshotSpec
Source§impl Observe for NaiveDate
Available on crate feature chrono only.
impl Observe for NaiveDate
chrono only.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
type Spec = SnapshotSpec
Source§impl Observe for NaiveDateTime
Available on crate feature chrono only.
impl Observe for NaiveDateTime
chrono only.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
type Spec = SnapshotSpec
Source§impl Observe for IsoWeek
Available on crate feature chrono only.
impl Observe for IsoWeek
chrono only.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
type Spec = SnapshotSpec
Source§impl Observe for Days
Available on crate feature chrono only.
impl Observe for Days
chrono only.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
type Spec = SnapshotSpec
Source§impl Observe for NaiveWeek
Available on crate feature chrono only.
impl Observe for NaiveWeek
chrono only.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
type Spec = SnapshotSpec
Source§impl Observe for NaiveTime
Available on crate feature chrono only.
impl Observe for NaiveTime
chrono only.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
type Spec = SnapshotSpec
Source§impl Observe for FixedOffset
Available on crate feature chrono only.
impl Observe for FixedOffset
chrono only.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
type Spec = SnapshotSpec
Source§impl Observe for Utc
Available on crate feature chrono only.
impl Observe for Utc
chrono only.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
type Spec = SnapshotSpec
Source§impl Observe for TimeDelta
Available on crate feature chrono only.
impl Observe for TimeDelta
chrono only.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
type Spec = SnapshotSpec
Source§impl Observe for WeekdaySet
Available on crate feature chrono only.
impl Observe for WeekdaySet
chrono only.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
type Spec = SnapshotSpec
Source§impl Observe for NonNilUuid
Available on crate feature uuid only.
impl Observe for NonNilUuid
uuid only.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
type Spec = SnapshotSpec
Source§impl Observe for Uuid
Available on crate feature uuid only.
impl Observe for Uuid
uuid only.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
type Spec = SnapshotSpec
Source§impl<K, V: Observe> Observe for BTreeMap<K, V>
impl<K, V: Observe> Observe for BTreeMap<K, V>
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
type Spec = DefaultSpec
Source§impl<K, V: Observe> Observe for HashMap<K, V>
impl<K, V: Observe> Observe for HashMap<K, V>
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
type Spec = DefaultSpec
Source§impl<T> Observe for (T₁, T₂, …, Tₙ)
This trait is implemented for tuples up to 12 items long.
impl<T> Observe for (T₁, T₂, …, Tₙ)
This trait is implemented for tuples up to 12 items long.
Source§impl<T> Observe for PhantomData<T>
impl<T> Observe for PhantomData<T>
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
type Spec = SnapshotSpec
Source§impl<T: Observe> Observe for [T]
impl<T: Observe> Observe for [T]
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
type Spec = DefaultSpec
Source§impl<T: Observe> Observe for Vec<T>
impl<T: Observe> Observe for Vec<T>
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
type Spec = DefaultSpec
Source§impl<T: Observe, const N: usize> Observe for [T; N]
impl<T: Observe, const N: usize> Observe for [T; N]
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
type Spec = DefaultSpec
Source§impl<T: RefObserve + ?Sized> Observe for &T
impl<T: RefObserve + ?Sized> Observe for &T
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
type Spec = <T as RefObserve>::Spec
Source§impl<T: RefObserve + ?Sized> Observe for Rc<T>
impl<T: RefObserve + ?Sized> Observe for Rc<T>
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
type Spec = <T as RefObserve>::Spec
Source§impl<T: RefObserve + ?Sized> Observe for Arc<T>
impl<T: RefObserve + ?Sized> Observe for Arc<T>
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
type Spec = <T as RefObserve>::Spec
Source§impl<Tz: TimeZone> Observe for DateTime<Tz>
Available on crate feature chrono only.
impl<Tz: TimeZone> Observe for DateTime<Tz>
chrono only.