|  | /// A trait for computing the difference between two objects. | 
						
						
							|  | pub trait Diff<K: Ord + Clone, V: Clone> { | 
						
						
							|  |     /// The type that describes the difference between two objects. | 
						
						
							|  |     type DiffType; | 
						
						
							|  |  | 
						
						
							|  |     /// Returns a [Self::DiffType] object that represents the difference between this object and | 
						
						
							|  |     /// other. | 
						
						
							|  |     fn diff(&self, other: &Self) -> Self::DiffType; | 
						
						
							|  | } | 
						
						
							|  |  | 
						
						
							|  | /// A trait for applying the difference between two objects. | 
						
						
							|  | pub trait ApplyDiff<K: Ord + Clone, V: Clone> { | 
						
						
							|  |     /// The type that describes the difference between two objects. | 
						
						
							|  |     type DiffType; | 
						
						
							|  |  | 
						
						
							|  |     /// Applies the provided changes described by [Self::DiffType] to the object implementing this trait. | 
						
						
							|  |     fn apply(&mut self, diff: Self::DiffType); | 
						
						
							|  | } | 
						
						
							|  |  | 
						
						
							|  | /// A trait for applying the difference between two objects with the possibility of failure. | 
						
						
							|  | pub trait TryApplyDiff<K: Ord + Clone, V: Clone> { | 
						
						
							|  |     /// The type that describes the difference between two objects. | 
						
						
							|  |     type DiffType; | 
						
						
							|  |  | 
						
						
							|  |     /// An error type that can be returned if the changes cannot be applied. | 
						
						
							|  |     type Error; | 
						
						
							|  |  | 
						
						
							|  |     /// Applies the provided changes described by [Self::DiffType] to the object implementing this trait. | 
						
						
							|  |     /// Returns an error if the changes cannot be applied. | 
						
						
							|  |     fn try_apply(&mut self, diff: Self::DiffType) -> Result<(), Self::Error>; | 
						
						
							|  | }
 |