From 31c30fedd5e5ad74cc1f66162d7e5c0e5e3cf420 Mon Sep 17 00:00:00 2001
From: Héctor Ramón Jiménez <hector0193@gmail.com>
Date: Thu, 16 Jul 2020 04:40:36 +0200
Subject: Remove unnecessary `Rc` in both `Element::map`

---
 native/src/element.rs         | 7 +++----
 native/src/overlay/element.rs | 7 +++----
 2 files changed, 6 insertions(+), 8 deletions(-)

(limited to 'native')

diff --git a/native/src/element.rs b/native/src/element.rs
index a1320f18..514a135b 100644
--- a/native/src/element.rs
+++ b/native/src/element.rs
@@ -2,7 +2,6 @@ use crate::{
     layout, overlay, Clipboard, Color, Event, Hasher, Layout, Length, Point,
     Widget,
 };
-use std::rc::Rc;
 
 /// A generic [`Widget`].
 ///
@@ -286,7 +285,7 @@ where
 
 struct Map<'a, A, B, Renderer> {
     widget: Box<dyn Widget<A, Renderer> + 'a>,
-    mapper: Rc<dyn Fn(A) -> B>,
+    mapper: Box<dyn Fn(A) -> B>,
 }
 
 impl<'a, A, B, Renderer> Map<'a, A, B, Renderer> {
@@ -299,7 +298,7 @@ impl<'a, A, B, Renderer> Map<'a, A, B, Renderer> {
     {
         Map {
             widget,
-            mapper: Rc::new(mapper),
+            mapper: Box::new(mapper),
         }
     }
 }
@@ -370,7 +369,7 @@ where
         &mut self,
         layout: Layout<'_>,
     ) -> Option<overlay::Element<'_, B, Renderer>> {
-        let mapper = self.mapper.clone();
+        let mapper = &self.mapper;
 
         self.widget
             .overlay(layout)
diff --git a/native/src/overlay/element.rs b/native/src/overlay/element.rs
index 3d532126..e1fd9b88 100644
--- a/native/src/overlay/element.rs
+++ b/native/src/overlay/element.rs
@@ -1,7 +1,6 @@
 pub use crate::Overlay;
 
 use crate::{layout, Clipboard, Event, Hasher, Layout, Point, Size, Vector};
-use std::rc::Rc;
 
 /// A generic [`Overlay`].
 ///
@@ -38,7 +37,7 @@ where
     /// Applies a transformation to the produced message of the [`Element`].
     ///
     /// [`Element`]: struct.Element.html
-    pub fn map<B>(self, f: Rc<dyn Fn(Message) -> B>) -> Element<'a, B, Renderer>
+    pub fn map<B>(self, f: &'a dyn Fn(Message) -> B) -> Element<'a, B, Renderer>
     where
         Message: 'a,
         Renderer: 'a,
@@ -104,13 +103,13 @@ where
 
 struct Map<'a, A, B, Renderer> {
     content: Box<dyn Overlay<A, Renderer> + 'a>,
-    mapper: Rc<dyn Fn(A) -> B>,
+    mapper: &'a dyn Fn(A) -> B,
 }
 
 impl<'a, A, B, Renderer> Map<'a, A, B, Renderer> {
     pub fn new(
         content: Box<dyn Overlay<A, Renderer> + 'a>,
-        mapper: Rc<dyn Fn(A) -> B + 'static>,
+        mapper: &'a dyn Fn(A) -> B,
     ) -> Map<'a, A, B, Renderer> {
         Map { content, mapper }
     }
-- 
cgit