summaryrefslogtreecommitdiffstats
path: root/pure/src/widget/tree.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2022-05-06 23:35:13 +0200
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2022-05-06 23:35:13 +0200
commit59aeb20600661e55e59223a309146eea68b4c32f (patch)
treeec422ae7cb7cb25b5ed8fda642f43fa09a879b5d /pure/src/widget/tree.rs
parentf1c1d519c5be7f9f0bbd32b22635659a803425e2 (diff)
downloadiced-59aeb20600661e55e59223a309146eea68b4c32f.tar.gz
iced-59aeb20600661e55e59223a309146eea68b4c32f.tar.bz2
iced-59aeb20600661e55e59223a309146eea68b4c32f.zip
Use `Borrow` instead of `AsRef` to allow easier casting
Diffstat (limited to 'pure/src/widget/tree.rs')
-rw-r--r--pure/src/widget/tree.rs17
1 files changed, 9 insertions, 8 deletions
diff --git a/pure/src/widget/tree.rs b/pure/src/widget/tree.rs
index 28249fe6..0bb3107a 100644
--- a/pure/src/widget/tree.rs
+++ b/pure/src/widget/tree.rs
@@ -2,6 +2,7 @@
use crate::Widget;
use std::any::{self, Any};
+use std::borrow::Borrow;
/// A persistent state widget tree.
///
@@ -29,9 +30,9 @@ impl Tree {
/// Creates a new [`Tree`] for the provided [`Element`].
pub fn new<'a, Message, Renderer>(
- widget: impl AsRef<dyn Widget<Message, Renderer> + 'a>,
+ widget: impl Borrow<dyn Widget<Message, Renderer> + 'a>,
) -> Self {
- let widget = widget.as_ref();
+ let widget = widget.borrow();
Self {
tag: widget.tag(),
@@ -50,10 +51,10 @@ impl Tree {
/// [`Widget::diff`]: crate::Widget::diff
pub fn diff<'a, Message, Renderer>(
&mut self,
- new: impl AsRef<dyn Widget<Message, Renderer> + 'a>,
+ new: impl Borrow<dyn Widget<Message, Renderer> + 'a>,
) {
- if self.tag == new.as_ref().tag() {
- new.as_ref().diff(self)
+ if self.tag == new.borrow().tag() {
+ new.borrow().diff(self)
} else {
*self = Self::new(new);
}
@@ -62,12 +63,12 @@ impl Tree {
/// Reconciliates the children of the tree with the provided list of [`Element`].
pub fn diff_children<'a, Message, Renderer>(
&mut self,
- new_children: &[impl AsRef<dyn Widget<Message, Renderer> + 'a>],
+ new_children: &[impl Borrow<dyn Widget<Message, Renderer> + 'a>],
) {
self.diff_children_custom(
new_children,
- |tree, widget| Self::diff(tree, widget),
- |widget| Self::new(widget),
+ |tree, widget| tree.diff(widget.borrow()),
+ |widget| Self::new(widget.borrow()),
)
}