about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorErick Tryzelaar <erick.tryzelaar@gmail.com>2012-08-30 15:54:05 -0700
committerErick Tryzelaar <erick.tryzelaar@gmail.com>2012-08-30 21:11:28 -0700
commit7649860339a0e298be75522d41d243b3bbb178b6 (patch)
treebc41477cbefe57d00a1061963901246954f26d92 /src
parentafeaf7d88cda883428f0b18123f164e5d5a7e4f5 (diff)
libcore: result::unwrap should use moves
Diffstat (limited to 'src')
-rw-r--r--src/libcore/result.rs13
1 files changed, 4 insertions, 9 deletions
diff --git a/src/libcore/result.rs b/src/libcore/result.rs
index 1ac1b78f3ec..b9c1d8cbc0e 100644
--- a/src/libcore/result.rs
+++ b/src/libcore/result.rs
@@ -341,15 +341,10 @@ fn iter_vec2<S,T,U:copy>(ss: &[S], ts: &[T],
 }
 
 /// Unwraps a result, assuming it is an `ok(T)`
-fn unwrap<T, U>(-res: Result<T, U>) -> T {
-    unsafe {
-        let addr = match res {
-          Ok(x) => ptr::addr_of(x),
-          Err(_) => fail ~"error result"
-        };
-        let liberated_value = unsafe::reinterpret_cast(*addr);
-        unsafe::forget(res);
-        return liberated_value;
+fn unwrap<T, U>(+res: Result<T, U>) -> T {
+    match move res {
+      Ok(move t) => t,
+      Err(_) => fail ~"unwrap called on an err result"
     }
 }