ValueBox
allows developers to pass Rust-allocated structures over ffi.
The value-box
crate handles most typical use-cases when creating ffi bindings to rust libraries such as:
- Return newly allocated Rust structures passing ownership to the caller.
- Receiving the previously created value box and calling associated functions taking the rust structure by reference, mutable reference, cloning the value or taking the value.
- Finally, dropping the box with the Rust structure in it.
- Supports Box<dyn MyTrait>
.
- ValueBox
is defined as #[transparent]
- Error handling via custom Error
and Result
.
```rust use value_box::{ReturnBoxerResult, ValueBox, ValueBoxPointer};
pub fn libraryobjectcreate() -> *mut ValueBox
pub fn libraryobjectissomething(object: *mut ValueBox
pub fn libraryobjectbyref(object: *mut ValueBox
pub fn libraryobjectbymut(object: *mut ValueBox
pub fn libraryobjectbyvalue(object: *mut ValueBox
pub fn libraryobjectbyvalueclone(object: *mut ValueBox
pub fn libraryobjectrelease(object: *mut ValueBox
pub struct MyObject {} impl MyObject { pub fn new() -> Self { Self {} }
pub fn by_ref(&self) {}
pub fn by_mut(&mut self) {}
pub fn by_value(self) {}
pub fn is_something(&self) -> bool {
true
}
} ```