diff options
author | 2019-08-30 01:54:41 +0200 | |
---|---|---|
committer | 2019-08-30 01:54:41 +0200 | |
commit | 2ebe09dacb12d1d0c02acbd55e2387b052616f47 (patch) | |
tree | 743e00dc6a33a7441f6357bf0d47c2a683183dbb /src | |
parent | e84e0b876c3c9547f5758c72f1cb971fdba71483 (diff) | |
download | iced-2ebe09dacb12d1d0c02acbd55e2387b052616f47.tar.gz iced-2ebe09dacb12d1d0c02acbd55e2387b052616f47.tar.bz2 iced-2ebe09dacb12d1d0c02acbd55e2387b052616f47.zip |
Make `Hasher` opaque
Diffstat (limited to 'src')
-rw-r--r-- | src/element.rs | 12 | ||||
-rw-r--r-- | src/hasher.rs | 18 | ||||
-rw-r--r-- | src/user_interface.rs | 4 | ||||
-rw-r--r-- | src/widget.rs | 2 | ||||
-rw-r--r-- | src/widget/button.rs | 2 | ||||
-rw-r--r-- | src/widget/checkbox.rs | 2 | ||||
-rw-r--r-- | src/widget/column.rs | 4 | ||||
-rw-r--r-- | src/widget/radio.rs | 2 | ||||
-rw-r--r-- | src/widget/row.rs | 4 | ||||
-rw-r--r-- | src/widget/slider.rs | 2 | ||||
-rw-r--r-- | src/widget/text.rs | 2 |
11 files changed, 35 insertions, 19 deletions
diff --git a/src/element.rs b/src/element.rs index 3abc6e0b..e71465fb 100644 --- a/src/element.rs +++ b/src/element.rs @@ -87,8 +87,8 @@ impl<'a, Message, Renderer> Element<'a, Message, Renderer> { node.0.compute_layout(geometry::Size::undefined()).unwrap() } - pub(crate) fn hash(&self, state: &mut Hasher) { - self.widget.hash(state); + pub(crate) fn hash_layout(&self, state: &mut Hasher) { + self.widget.hash_layout(state); } } @@ -157,8 +157,8 @@ where self.widget.draw(renderer, layout, cursor_position) } - fn hash(&self, state: &mut Hasher) { - self.widget.hash(state); + fn hash_layout(&self, state: &mut Hasher) { + self.widget.hash_layout(state); } } @@ -222,7 +222,7 @@ where self.element.widget.draw(renderer, layout, cursor_position) } - fn hash(&self, state: &mut Hasher) { - self.element.widget.hash(state); + fn hash_layout(&self, state: &mut Hasher) { + self.element.widget.hash_layout(state); } } diff --git a/src/hasher.rs b/src/hasher.rs index a930fa13..2aa10336 100644 --- a/src/hasher.rs +++ b/src/hasher.rs @@ -1,2 +1,18 @@ /// The hasher used to compare layouts. -pub type Hasher = twox_hash::XxHash; +pub struct Hasher(twox_hash::XxHash64); + +impl Default for Hasher { + fn default() -> Self { + Hasher(twox_hash::XxHash64::default()) + } +} + +impl core::hash::Hasher for Hasher { + fn write(&mut self, bytes: &[u8]) { + self.0.write(bytes) + } + + fn finish(&self) -> u64 { + self.0.finish() + } +} diff --git a/src/user_interface.rs b/src/user_interface.rs index 3482c9b9..b269951d 100644 --- a/src/user_interface.rs +++ b/src/user_interface.rs @@ -86,7 +86,7 @@ impl<'a, Message, Renderer> UserInterface<'a, Message, Renderer> { let root = root.into(); let hasher = &mut crate::Hasher::default(); - root.hash(hasher); + root.hash_layout(hasher); let hash = hasher.finish(); @@ -302,7 +302,7 @@ impl Cache { let root: Element<'_, (), ()> = Column::new().into(); let hasher = &mut crate::Hasher::default(); - root.hash(hasher); + root.hash_layout(hasher); Cache { hash: hasher.finish(), diff --git a/src/widget.rs b/src/widget.rs index 420e5534..c674b3e3 100644 --- a/src/widget.rs +++ b/src/widget.rs @@ -83,7 +83,7 @@ pub trait Widget<Message, Renderer>: std::fmt::Debug { /// [`Widget`]: trait.Widget.html /// [`Layout`]: ../struct.Layout.html /// [`Text`]: text/struct.Text.html - fn hash(&self, state: &mut Hasher); + fn hash_layout(&self, state: &mut Hasher); /// Processes a runtime [`Event`]. /// diff --git a/src/widget/button.rs b/src/widget/button.rs index 2f7a641c..d77ef8ce 100644 --- a/src/widget/button.rs +++ b/src/widget/button.rs @@ -187,7 +187,7 @@ where ) } - fn hash(&self, state: &mut Hasher) { + fn hash_layout(&self, state: &mut Hasher) { self.style.hash(state); } } diff --git a/src/widget/checkbox.rs b/src/widget/checkbox.rs index 4fc022a5..75add65c 100644 --- a/src/widget/checkbox.rs +++ b/src/widget/checkbox.rs @@ -158,7 +158,7 @@ where ) } - fn hash(&self, state: &mut Hasher) { + fn hash_layout(&self, state: &mut Hasher) { self.label.hash(state); } } diff --git a/src/widget/column.rs b/src/widget/column.rs index d2688912..ffef1a5e 100644 --- a/src/widget/column.rs +++ b/src/widget/column.rs @@ -199,12 +199,12 @@ impl<'a, Message, Renderer> Widget<Message, Renderer> cursor } - fn hash(&self, state: &mut Hasher) { + fn hash_layout(&self, state: &mut Hasher) { self.style.hash(state); self.spacing.hash(state); for child in &self.children { - child.widget.hash(state); + child.widget.hash_layout(state); } } } diff --git a/src/widget/radio.rs b/src/widget/radio.rs index 7bcb0da2..ead06053 100644 --- a/src/widget/radio.rs +++ b/src/widget/radio.rs @@ -168,7 +168,7 @@ where ) } - fn hash(&self, state: &mut Hasher) { + fn hash_layout(&self, state: &mut Hasher) { self.label.hash(state); } } diff --git a/src/widget/row.rs b/src/widget/row.rs index c4121157..c85c85ea 100644 --- a/src/widget/row.rs +++ b/src/widget/row.rs @@ -196,12 +196,12 @@ impl<'a, Message, Renderer> Widget<Message, Renderer> cursor } - fn hash(&self, state: &mut Hasher) { + fn hash_layout(&self, state: &mut Hasher) { self.style.hash(state); self.spacing.hash(state); for child in &self.children { - child.widget.hash(state); + child.widget.hash_layout(state); } } } diff --git a/src/widget/slider.rs b/src/widget/slider.rs index ced0021c..93d4e7e2 100644 --- a/src/widget/slider.rs +++ b/src/widget/slider.rs @@ -169,7 +169,7 @@ where ) } - fn hash(&self, state: &mut Hasher) { + fn hash_layout(&self, state: &mut Hasher) { self.style.hash(state); } } diff --git a/src/widget/text.rs b/src/widget/text.rs index 858488d3..fb6e30b9 100644 --- a/src/widget/text.rs +++ b/src/widget/text.rs @@ -134,7 +134,7 @@ where MouseCursor::OutOfBounds } - fn hash(&self, state: &mut Hasher) { + fn hash_layout(&self, state: &mut Hasher) { self.style.hash(state); self.content.hash(state); |