summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2012-08-13 15:06:13 -0700
committerNiko Matsakis <niko@alum.mit.edu>2012-08-20 22:00:06 -0700
commit8ee79c79aada1b5943b5ada11570f9b903c74579 (patch)
treece1c9def7d1a4a032c64bc2e78e643b2a40bf0d0 /src/libstd
parent3b09c3deaa9a376d0ae40a783713ece3720ca08f (diff)
downloadrust-8ee79c79aada1b5943b5ada11570f9b903c74579.tar.gz
rust-8ee79c79aada1b5943b5ada11570f9b903c74579.zip
new region inference, seperate infer into modules, improve error msgs
Fixes #2806
Fixes #3197
Fixes #3138
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/cell.rs9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/libstd/cell.rs b/src/libstd/cell.rs
index 3d8f63c26cd..016ed8aecdd 100644
--- a/src/libstd/cell.rs
+++ b/src/libstd/cell.rs
@@ -41,10 +41,11 @@ impl<T> Cell<T> {
     }
 
     // Calls a closure with a reference to the value.
-    fn with_ref(f: fn(v: &T)) {
-        let val = move self.take();
-        f(&val);
-        self.put_back(move val);
+    fn with_ref<R>(op: fn(v: &T) -> R) -> R {
+        let v = self.take();
+        let r = op(&v);
+        self.put_back(v);
+        return move r;
     }
 }