about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorSteven Fackler <sfackler@gmail.com>2013-11-16 13:26:15 -0800
committerSteven Fackler <sfackler@gmail.com>2013-11-22 21:19:53 -0800
commit5759f2fc571f9531c675a5966b44d570b7dbe685 (patch)
tree37158dccd917ca076e3c7f95cb3367db3d9ff03e /src/libstd
parent8a26266f6586f765ebdfbc0304e4976bfff28895 (diff)
downloadrust-5759f2fc571f9531c675a5966b44d570b7dbe685.tar.gz
rust-5759f2fc571f9531c675a5966b44d570b7dbe685.zip
Strip down Cell functionality
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/cell.rs62
1 files changed, 3 insertions, 59 deletions
diff --git a/src/libstd/cell.rs b/src/libstd/cell.rs
index 54849a44f6d..b33a18ed95d 100644
--- a/src/libstd/cell.rs
+++ b/src/libstd/cell.rs
@@ -8,12 +8,11 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-//! A mutable, nullable memory location
+//! Runtime move semantics
 
 #[missing_doc];
 
 use cast::transmute_mut;
-use unstable::finally::Finally;
 use prelude::*;
 
 /*
@@ -35,11 +34,6 @@ impl<T> Cell<T> {
         Cell { value: Some(value) }
     }
 
-    /// Creates a new empty cell with no value inside.
-    pub fn new_empty() -> Cell<T> {
-        Cell { value: None }
-    }
-
     /// Yields the value, failing if the cell is empty.
     pub fn take(&self) -> T {
         let this = unsafe { transmute_mut(self) };
@@ -56,34 +50,10 @@ impl<T> Cell<T> {
         this.value.take()
     }
 
-    /// Returns the value, failing if the cell is full.
-    pub fn put_back(&self, value: T) {
-        let this = unsafe { transmute_mut(self) };
-        if !this.is_empty() {
-            fail!("attempt to put a value back into a full cell");
-        }
-        this.value = Some(value);
-    }
-
     /// Returns true if the cell is empty and false if the cell is full.
     pub fn is_empty(&self) -> bool {
         self.value.is_none()
     }
-
-    /// Calls a closure with a reference to the value.
-    pub fn with_ref<R>(&self, op: |v: &T| -> R) -> R {
-        do self.with_mut_ref |ptr| { op(ptr) }
-    }
-
-    /// Calls a closure with a mutable reference to the value.
-    pub fn with_mut_ref<R>(&self, op: |v: &mut T| -> R) -> R {
-        let mut v = Some(self.take());
-        do (|| {
-            op(v.get_mut_ref())
-        }).finally {
-            self.put_back(v.take_unwrap());
-        }
-    }
 }
 
 #[test]
@@ -93,38 +63,12 @@ fn test_basic() {
     let value = value_cell.take();
     assert!(value == ~10);
     assert!(value_cell.is_empty());
-    value_cell.put_back(value);
-    assert!(!value_cell.is_empty());
 }
 
 #[test]
 #[should_fail]
 fn test_take_empty() {
-    let value_cell: Cell<~int> = Cell::new_empty();
+    let value_cell: Cell<~int> = Cell::new(~0);
+    value_cell.take();
     value_cell.take();
-}
-
-#[test]
-#[should_fail]
-fn test_put_back_non_empty() {
-    let value_cell = Cell::new(~10);
-    value_cell.put_back(~20);
-}
-
-#[test]
-fn test_with_ref() {
-    let good = 6;
-    let c = Cell::new(~[1, 2, 3, 4, 5, 6]);
-    let l = do c.with_ref() |v| { v.len() };
-    assert_eq!(l, good);
-}
-
-#[test]
-fn test_with_mut_ref() {
-    let good = ~[1, 2, 3];
-    let v = ~[1, 2];
-    let c = Cell::new(v);
-    do c.with_mut_ref() |v| { v.push(3); }
-    let v = c.take();
-    assert_eq!(v, good);
 }