diff options
| author | Malte Voos <git@mal.tc> | 2025-12-05 15:35:38 +0100 |
|---|---|---|
| committer | Malte Voos <git@mal.tc> | 2025-12-05 15:43:58 +0100 |
| commit | c347b6133365dcf1b7da4e77890b20d04d6cfba4 (patch) | |
| tree | c83aac6f7d1e6edc57e607f01e5d3eeee8da4a0e /src/util/tracker.rs | |
| parent | 652b1c2a0ce7db4885ebc51f7f09133a43401442 (diff) | |
| download | lleap-c347b6133365dcf1b7da4e77890b20d04d6cfba4.tar.gz lleap-c347b6133365dcf1b7da4e77890b20d04d6cfba4.zip | |
Diffstat (limited to 'src/util/tracker.rs')
| -rw-r--r-- | src/util/tracker.rs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/util/tracker.rs b/src/util/tracker.rs index 69a1c5f..060acae 100644 --- a/src/util/tracker.rs +++ b/src/util/tracker.rs @@ -1,3 +1,5 @@ +use std::ops::Deref; + pub struct Tracker<T> { inner: T, dirty: bool, @@ -40,8 +42,24 @@ impl<T> Tracker<T> { } } +impl<T> Deref for Tracker<T> { + type Target = T; + + fn deref(&self) -> &Self::Target { + self.get() + } +} + impl<T: Default> Default for Tracker<T> { fn default() -> Self { Self::new(T::default()) } } + +impl<T: Eq> Tracker<T> { + pub fn set_if_ne(&mut self, value: T) { + if self.inner != value { + self.set(value); + } + } +} |