diff options
Diffstat (limited to 'crates/runner/src/util/steal.rs')
-rw-r--r-- | crates/runner/src/util/steal.rs | 40 |
1 files changed, 0 insertions, 40 deletions
diff --git a/crates/runner/src/util/steal.rs b/crates/runner/src/util/steal.rs deleted file mode 100644 index 91b2cdf..0000000 --- a/crates/runner/src/util/steal.rs +++ /dev/null @@ -1,40 +0,0 @@ -use std::ops::{Deref, DerefMut}; - -#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)] -pub struct Steal<T>(pub Option<T>); - -impl<T> Steal<T> { - pub fn new(value: T) -> Steal<T> { - Steal(Some(value)) - } - - pub fn steal(&mut self) -> T { - self.0 - .take() - .expect("Attempted to steal already stoken value") - } -} - -impl<T> From<T> for Steal<T> { - fn from(value: T) -> Self { - Steal::new(value) - } -} - -impl<T> Deref for Steal<T> { - type Target = T; - - fn deref(&self) -> &Self::Target { - self.0 - .as_ref() - .expect("Attempted to dereference stolen value") - } -} - -impl<T> DerefMut for Steal<T> { - fn deref_mut(&mut self) -> &mut Self::Target { - self.0 - .as_mut() - .expect("Attempted to dereference stolen value") - } -} |