diff --git a/src/lib.rs b/src/lib.rs index a211b22..d124b1e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -361,6 +361,7 @@ pub use anyhow as format_err; /// # Ok(()) /// } /// ``` +#[repr(transparent)] pub struct Error { inner: ManuallyDrop>>, } diff --git a/tests/test_ffi.rs b/tests/test_ffi.rs new file mode 100644 index 0000000..0321fc1 --- /dev/null +++ b/tests/test_ffi.rs @@ -0,0 +1,18 @@ +#![deny(improper_ctypes, improper_ctypes_definitions)] + +use anyhow::anyhow; + +#[no_mangle] +pub extern "C" fn anyhow1(err: anyhow::Error) { + println!("{:?}", err); +} + +#[no_mangle] +pub extern "C" fn anyhow2(err: &mut Option) { + *err = Some(anyhow!("ffi error")); +} + +#[no_mangle] +pub extern "C" fn anyhow3() -> Option { + Some(anyhow!("ffi error")) +}