summaryrefslogtreecommitdiffstats
path: root/third_party/rust/objc/src/exception.rs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--third_party/rust/objc/src/exception.rs11
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)
+ })
+}