for example
#[no_mangle]
pub extern "C" fn rust_decode(string : Box<CStr>) -> Option<Vec<u8>> {...}
how to convert Option<_> into a FFI-safe type
for example
#[no_mangle]
pub extern "C" fn rust_decode(string : Box<CStr>) -> Option<Vec<u8>> {...}
how to convert Option<_> into a FFI-safe type
Well it depends on what is inside your Option. For example, if you have Option<Box<T>>, then that is already FFI safe and equivalent to a pointer to T, with None being null pointer.
The bigger problem is honestly the vector. Vectors are not FFI safe — option or not. In this case, you could create your own VecParts struct and mark it #[repr(C)] for FFI-safety.
#[repr(C)]
pub struct VecParts {
pub ptr: *mut u8,
pub len: usize,
pub cap: usize,
}
You could use a null pointer and zeros for None here.