Skip to main content

ReflectIntermediate

Trait ReflectIntermediate 

Source
pub trait ReflectIntermediate {
    // Provided methods
    fn patch_change(&mut self, _change: &Change) { ... }
    fn before_patch_change(&mut self) { ... }
    fn after_patch_change(&mut self) { ... }
}
Expand description

Trait used to enable patching changes directly into data. Prefer to implement using ReflectIntermediate derive macro.

§Example

use serde::{Serialize, Deserialize};
use serde_intermediate::{Change, ReflectIntermediate};

#[derive(Debug, PartialEq, Serialize, Deserialize, ReflectIntermediate)]
struct Foo(bool);

let mut a = Foo(false);
let b = Foo(true);
let change = Change::data_difference(&a, &b, &Default::default()).unwrap();
a.patch_change(&change);
assert_eq!(a, b);

Provided Methods§

Source

fn patch_change(&mut self, _change: &Change)

Source

fn before_patch_change(&mut self)

Source

fn after_patch_change(&mut self)

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl ReflectIntermediate for ()

Source§

impl ReflectIntermediate for AtomicBool

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for AtomicI8

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for AtomicI16

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for AtomicI32

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for AtomicI64

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for AtomicIsize

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for AtomicU8

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for AtomicU16

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for AtomicU32

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for AtomicU64

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for AtomicUsize

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for NonZeroI8

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for NonZeroI16

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for NonZeroI32

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for NonZeroI64

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for NonZeroI128

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for NonZeroIsize

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for NonZeroU8

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for NonZeroU16

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for NonZeroU32

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for NonZeroU64

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for NonZeroU128

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for NonZeroUsize

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for PathBuf

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for String

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for bool

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for char

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for f32

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for f64

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for i8

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for i16

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for i32

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for i64

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for i128

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for isize

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for u8

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for u16

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for u32

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for u64

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for u128

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl ReflectIntermediate for usize

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, X, Y, Z> ReflectIntermediate for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, X, Y, Z)

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, X, Y> ReflectIntermediate for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, X, Y)

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, X> ReflectIntermediate for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, X)

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V> ReflectIntermediate for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V)

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U> ReflectIntermediate for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U)

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T> ReflectIntermediate for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T)

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S> ReflectIntermediate for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S)

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R> ReflectIntermediate for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R)

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q> ReflectIntermediate for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q)

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P> ReflectIntermediate for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P)

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O> ReflectIntermediate for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O)

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N> ReflectIntermediate for (A, B, C, D, E, F, G, H, I, J, K, L, M, N)

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<A, B, C, D, E, F, G, H, I, J, K, L, M> ReflectIntermediate for (A, B, C, D, E, F, G, H, I, J, K, L, M)

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<A, B, C, D, E, F, G, H, I, J, K, L> ReflectIntermediate for (A, B, C, D, E, F, G, H, I, J, K, L)

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<A, B, C, D, E, F, G, H, I, J, K> ReflectIntermediate for (A, B, C, D, E, F, G, H, I, J, K)

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<A, B, C, D, E, F, G, H, I, J> ReflectIntermediate for (A, B, C, D, E, F, G, H, I, J)

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<A, B, C, D, E, F, G, H, I> ReflectIntermediate for (A, B, C, D, E, F, G, H, I)

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<A, B, C, D, E, F, G, H> ReflectIntermediate for (A, B, C, D, E, F, G, H)

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<A, B, C, D, E, F, G> ReflectIntermediate for (A, B, C, D, E, F, G)

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<A, B, C, D, E, F> ReflectIntermediate for (A, B, C, D, E, F)

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<A, B, C, D, E> ReflectIntermediate for (A, B, C, D, E)

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<A, B, C, D> ReflectIntermediate for (A, B, C, D)

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<A, B, C> ReflectIntermediate for (A, B, C)

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<A, B> ReflectIntermediate for (A, B)

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<K, V> ReflectIntermediate for BTreeMap<K, V>

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<K, V> ReflectIntermediate for HashMap<K, V>

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<T, E> ReflectIntermediate for Result<T, E>

Source§

fn patch_change(&mut self, change: &Change)

Source§

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

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<T> ReflectIntermediate for (T,)

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<T> ReflectIntermediate for BTreeSet<T>

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<T> ReflectIntermediate for BinaryHeap<T>

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<T> ReflectIntermediate for Box<T>

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<T> ReflectIntermediate for Cell<T>

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<T> ReflectIntermediate for HashSet<T>

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<T> ReflectIntermediate for LinkedList<T>

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<T> ReflectIntermediate for Mutex<T>

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<T> ReflectIntermediate for Option<T>

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<T> ReflectIntermediate for PhantomData<T>

Source§

impl<T> ReflectIntermediate for Range<T>

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<T> ReflectIntermediate for RangeInclusive<T>

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<T> ReflectIntermediate for Vec<T>

Source§

fn patch_change(&mut self, change: &Change)

Source§

impl<T> ReflectIntermediate for VecDeque<T>

Source§

fn patch_change(&mut self, change: &Change)

Implementors§