Skip to content

Commit ee9ba75

Browse files
olsonjefferybrson
authored andcommitted
---
yaml --- r: 12970 b: refs/heads/master c: 082a95a h: refs/heads/master v: v3
1 parent 60e24fe commit ee9ba75

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: 3d8f7d644b97ba322cfdb9cb0d7bd557f4ccda48
2+
refs/heads/master: 082a95a0777d03fd7469b8df691e9caa8217f8ac
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: 4a81779abd786ff22d71434c6d9a5917ea4cdfff
55
refs/heads/try: 2898dcc5d97da9427ac367542382b6239d9c0bbf

trunk/src/libcore/result.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,21 @@ fn iter2<S,T,U:copy>(ss: [S], ts: [T],
216216
ret ok(());
217217
}
218218

219+
#[doc="
220+
Unwraps a result, assuming it is an `ok(T)`
221+
222+
This operation is unsafe.
223+
"]
224+
fn unwrap<T, U>(-res: result<T, U>) -> T unsafe {
225+
let addr = alt res {
226+
ok(x) { ptr::addr_of(x) }
227+
err(_) { fail "option none" }
228+
};
229+
let liberated_value = unsafe::reinterpret_cast(*addr);
230+
unsafe::forget(res);
231+
ret liberated_value;
232+
}
233+
219234
#[cfg(test)]
220235
mod tests {
221236
fn op1() -> result::result<int, str> { result::ok(666) }

0 commit comments

Comments
 (0)