diff options
Diffstat (limited to 'src/hashable.rs')
| -rw-r--r-- | src/hashable.rs | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/hashable.rs b/src/hashable.rs new file mode 100644 index 0000000..22bcdd3 --- /dev/null +++ b/src/hashable.rs @@ -0,0 +1,37 @@ +use std::fmt::Debug; +use std::hash::{Hash, Hasher}; + +use aws_sdk_route53::types::ResourceRecordSet; + +pub trait SimpleHash { + fn hash<H: Hasher>(&self, state: &mut H); +} + +#[derive(Debug, PartialEq, Clone)] +pub struct Hashable<T>(T); + +impl<T> AsRef<T> for Hashable<T> { + fn as_ref(&self) -> &T { + &self.0 + } +} + +impl<T> Eq for Hashable<T> where Hashable<T>: PartialEq {} + +impl<T: SimpleHash> Hash for Hashable<T> { + fn hash<H: Hasher>(&self, state: &mut H) { + self.0.hash(state) + } +} + +impl<T> From<T> for Hashable<T> { + fn from(value: T) -> Self { + Self(value) + } +} + +impl SimpleHash for ResourceRecordSet { + fn hash<H: Hasher>(&self, state: &mut H) { + self.name().hash(state) + } +} |
