pub struct ManagedCResource<T> { /* private fields */ }Expand description
A custom struct for managing C resources with automatic cleanup.
It handles initialisation and clean-up of the resource and ensures that resources
are properly released when they go out of scope. All teardown goes through the
single cleanup closure (if set), which is the FFI close function (e.g.
aeron_close). The Rc dependency graph ensures parents outlive children
structurally — you cannot race aeron_close ahead of a live child handle.
Implementations§
Source§impl<T> ManagedCResource<T>
impl<T> ManagedCResource<T>
Sourcepub fn new(
init: impl FnOnce(*mut *mut T) -> i32,
cleanup: Option<CleanupBox<T>>,
cleanup_struct: bool,
) -> Result<Self, AeronCError>
pub fn new( init: impl FnOnce(*mut *mut T) -> i32, cleanup: Option<CleanupBox<T>>, cleanup_struct: bool, ) -> Result<Self, AeronCError>
Creates a new ManagedCResource with a given initializer and cleanup function.
The initializer is a closure that attempts to initialize the resource.
If initialization fails, the initializer should return an error code.
The cleanup function is used to release the resource when it’s no longer needed.
cleanup_struct where it should clean up the struct in rust
pub fn initialise( init: impl FnOnce(*mut *mut T) -> i32 + Sized, ) -> Result<*mut T, AeronCError>
Sourcepub unsafe fn get_mut(&self) -> &mut T
pub unsafe fn get_mut(&self) -> &mut T
Mutable access to the underlying C struct, minted from &self.
§Safety
No other reference (& or &mut) to the underlying struct may be
alive while the returned &mut is in use.