diff options
| author | Owen Jacobson <owen@grimoire.ca> | 2023-10-17 21:17:55 -0400 |
|---|---|---|
| committer | Owen Jacobson <owen@grimoire.ca> | 2023-10-17 22:32:21 -0400 |
| commit | 288205e302d9f6afa06b8602184e983d2080a5b6 (patch) | |
| tree | dfb307e8f3cb82d280e5a0392f11318194e09ef1 /src/hashable.rs | |
CLI tool for updating Route53 DNS for an ASG.
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) + } +} |
