diff options
Diffstat (limited to '')
-rw-r--r-- | third_party/rust/objc/src/exception.rs | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/third_party/rust/objc/src/exception.rs b/third_party/rust/objc/src/exception.rs new file mode 100644 index 0000000000..6fcfa7e87a --- /dev/null +++ b/third_party/rust/objc/src/exception.rs @@ -0,0 +1,11 @@ +use objc_exception; + +use rc::StrongPtr; +use runtime::Object; + +pub unsafe fn try<F, R>(closure: F) -> Result<R, StrongPtr> + where F: FnOnce() -> R { + objc_exception::try(closure).map_err(|exception| { + StrongPtr::new(exception as *mut Object) + }) +} |