diff options
| author | 2024-09-12 23:54:36 +0200 | |
|---|---|---|
| committer | 2024-09-13 01:54:23 +0200 | |
| commit | e140c03b9b5e2f9e58a230a51646af5c3f9e85e5 (patch) | |
| tree | 2f3a8dbf50275ac87310f31534ea5261a48dc4a0 /graphics/src | |
| parent | aed59bae5033c68fb7e1e1b07e7935d763d3665a (diff) | |
| download | iced-e140c03b9b5e2f9e58a230a51646af5c3f9e85e5.tar.gz iced-e140c03b9b5e2f9e58a230a51646af5c3f9e85e5.tar.bz2 iced-e140c03b9b5e2f9e58a230a51646af5c3f9e85e5.zip | |
Remove `Clone` bound for `graphics::Cache::clear`
Diffstat (limited to '')
| -rw-r--r-- | graphics/src/cache.rs | 19 | 
1 files changed, 10 insertions, 9 deletions
| diff --git a/graphics/src/cache.rs b/graphics/src/cache.rs index bbba79eb..7db80a01 100644 --- a/graphics/src/cache.rs +++ b/graphics/src/cache.rs @@ -1,6 +1,7 @@  //! Cache computations and efficiently reuse them.  use std::cell::RefCell;  use std::fmt; +use std::mem;  use std::sync::atomic::{self, AtomicU64};  /// A simple cache that stores generated values to avoid recomputation. @@ -58,18 +59,18 @@ impl<T> Cache<T> {      }      /// Clears the [`Cache`]. -    pub fn clear(&self) -    where -        T: Clone, -    { -        use std::ops::Deref; +    pub fn clear(&self) { +        let mut state = self.state.borrow_mut(); + +        let previous = +            mem::replace(&mut *state, State::Empty { previous: None }); -        let previous = match self.state.borrow().deref() { -            State::Empty { previous } => previous.clone(), -            State::Filled { current } => Some(current.clone()), +        let previous = match previous { +            State::Empty { previous } => previous, +            State::Filled { current } => Some(current),          }; -        *self.state.borrow_mut() = State::Empty { previous }; +        *state = State::Empty { previous };      }  } | 
