diff options
Diffstat (limited to 'src/libstd/cell.rs')
| -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; } } |
