From 388af82aaf67747745c15f9a72f75f079501f016 Mon Sep 17 00:00:00 2001 From: Kinesin Data Technologies Incorporated <93931750+kinesintech@users.noreply.github.com> Date: Mon, 3 Oct 2022 22:16:29 -0300 Subject: [PATCH] Adding automatic referication for resource intervals --- src/resource_interval.rs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/resource_interval.rs b/src/resource_interval.rs index 00a9e26..7f8fb9d 100644 --- a/src/resource_interval.rs +++ b/src/resource_interval.rs @@ -43,6 +43,7 @@ impl Deref for ResourceInterval { &self.0 } } + impl DerefMut for ResourceInterval { fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 @@ -61,9 +62,9 @@ impl From<&HashMap> for ResourceInterval { } } -impl<'a, 'b> Add<&'b ResourceInterval> for &'a ResourceInterval { +impl Add for &ResourceInterval { type Output = ResourceInterval; - fn add(self, other: &'b ResourceInterval) -> Self::Output { + fn add(self, other: &ResourceInterval) -> Self::Output { let res: HashMap = other.0.iter().fold(self.0.clone(), |mut acc, (res, is)| { acc.entry(res.clone()) @@ -75,9 +76,9 @@ impl<'a, 'b> Add<&'b ResourceInterval> for &'a ResourceInterval { } } -impl<'a, 'b> Sub<&'b ResourceInterval> for &'a ResourceInterval { +impl Sub for &ResourceInterval { type Output = ResourceInterval; - fn sub(self, other: &'b ResourceInterval) -> Self::Output { + fn sub(self, other: &ResourceInterval) -> Self::Output { let res: HashMap = self .0 .iter() @@ -92,6 +93,12 @@ impl<'a, 'b> Sub<&'b ResourceInterval> for &'a ResourceInterval { } } +impl AsRef for ResourceInterval { + fn as_ref(&self) -> &ResourceInterval { + self + } +} + #[cfg(test)] mod tests { use super::*;