Skip to content

Commit

Permalink
Merge pull request #2575 from m4rch3n1ng/rm-clone-trait-bound
Browse files Browse the repository at this point in the history
remove unnecessary Clone trait bound for Cache::clear
  • Loading branch information
hecrj authored Sep 13, 2024
2 parents c66355f + e140c03 commit 62b4da8
Showing 1 changed file with 10 additions and 9 deletions.
19 changes: 10 additions & 9 deletions graphics/src/cache.rs
Original file line number Diff line number Diff line change
@@ -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.
Expand Down Expand Up @@ -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 };
}
}

Expand Down

0 comments on commit 62b4da8

Please sign in to comment.