diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2012-08-13 15:06:13 -0700 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2012-08-20 22:00:06 -0700 |
| commit | 8ee79c79aada1b5943b5ada11570f9b903c74579 (patch) | |
| tree | ce1c9def7d1a4a032c64bc2e78e643b2a40bf0d0 /src/libstd | |
| parent | 3b09c3deaa9a376d0ae40a783713ece3720ca08f (diff) | |
| download | rust-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.rs | 9 |
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; } } |
