From 5c8bd81c9e79fa49c18f27254d2b0fc9322635ce Mon Sep 17 00:00:00 2001 From: Ali Date: Wed, 7 Aug 2024 12:45:41 +0330 Subject: [PATCH 1/2] impl uuid --- src/impls.rs | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/impls.rs b/src/impls.rs index a06546e..ce87976 100644 --- a/src/impls.rs +++ b/src/impls.rs @@ -11,6 +11,26 @@ use std::path::PathBuf; use std::rc::Rc; use std::sync::Arc; +#[cfg(feature = "uuid")] +impl Diff for uuid::Uuid { + type Repr = Option; + fn diff(&self, other: &Self) -> Self::Repr { + if self.as_u128().eq(&other.as_u128()) { + None + } else { + Some(*other) + } + } + fn apply(&mut self, diff: &Self::Repr) { + if let Some(diff) = diff { + *self = *diff; + } + } + fn identity() -> Self { + uuid::Uuid::from_u128(0xa1a2a3a4b1b2c1c2d1d2d3d4d5d6d7d8u128) + } +} + impl Diff for bool { type Repr = Option; @@ -70,7 +90,7 @@ where } fn apply(&mut self, diff: &Self::Repr) { - self.as_mut().apply(diff.as_ref()) + self.as_mut().apply(diff.as_ref()) } fn identity() -> Self { From b92fb2962da45f6362b0bc83de53efedfc028866 Mon Sep 17 00:00:00 2001 From: Ali Date: Wed, 7 Aug 2024 12:45:56 +0330 Subject: [PATCH 2/2] add feature flag --- Cargo.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Cargo.toml b/Cargo.toml index ecfcde4..32c3550 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,11 +14,13 @@ path = "src/lib.rs" [features] default = ["impl_num"] impl_num = ["num"] +impl_uuid = ["uuid"] [dependencies] diff_derive = "0.2.3" serde = { version = "1", features = ["derive"] } num = { version = "0.4.0", optional = true } +uuid = { version = "1.10.0", optional = true} [dev-dependencies] quickcheck = "0.8"