summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2019-08-30 01:54:41 +0200
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2019-08-30 01:54:41 +0200
commit2ebe09dacb12d1d0c02acbd55e2387b052616f47 (patch)
tree743e00dc6a33a7441f6357bf0d47c2a683183dbb /src
parente84e0b876c3c9547f5758c72f1cb971fdba71483 (diff)
downloadiced-2ebe09dacb12d1d0c02acbd55e2387b052616f47.tar.gz
iced-2ebe09dacb12d1d0c02acbd55e2387b052616f47.tar.bz2
iced-2ebe09dacb12d1d0c02acbd55e2387b052616f47.zip
Make `Hasher` opaque
Diffstat (limited to 'src')
-rw-r--r--src/element.rs12
-rw-r--r--src/hasher.rs18
-rw-r--r--src/user_interface.rs4
-rw-r--r--src/widget.rs2
-rw-r--r--src/widget/button.rs2
-rw-r--r--src/widget/checkbox.rs2
-rw-r--r--src/widget/column.rs4
-rw-r--r--src/widget/radio.rs2
-rw-r--r--src/widget/row.rs4
-rw-r--r--src/widget/slider.rs2
-rw-r--r--src/widget/text.rs2
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);