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.
Implementations§
Source§impl<T> ManagedCResource<T>
impl<T> ManagedCResource<T>
Sourcepub fn new(
init: impl FnOnce(*mut *mut T) -> i32,
cleanup: Option<Box<dyn FnMut(*mut *mut T) -> i32>>,
cleanup_struct: bool,
check_for_is_closed: Option<fn(*mut T) -> bool>,
) -> Result<Self, AeronCError>
pub fn new( init: impl FnOnce(*mut *mut T) -> i32, cleanup: Option<Box<dyn FnMut(*mut *mut T) -> i32>>, cleanup_struct: bool, check_for_is_closed: Option<fn(*mut T) -> 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>
pub fn is_closed_already_called(&self) -> bool
pub fn get_mut(&self) -> &mut T
pub fn add_dependency<D: Any>(&self, dep: D)
pub fn get_dependency<V: Clone + 'static>(&self) -> Option<V>
pub fn is_resource_released(&self) -> bool
pub fn mark_resource_released(&self)
Sourcepub fn close(&mut self) -> Result<(), AeronCError>
pub fn close(&mut self) -> Result<(), AeronCError>
Closes the resource by calling the cleanup function.
If cleanup fails, it returns an AeronError.
Trait Implementations§
Source§impl<T> Debug for ManagedCResource<T>
impl<T> Debug for ManagedCResource<T>
Auto Trait Implementations§
impl<T> !Freeze for ManagedCResource<T>
impl<T> !RefUnwindSafe for ManagedCResource<T>
impl<T> !Send for ManagedCResource<T>
impl<T> !Sync for ManagedCResource<T>
impl<T> Unpin for ManagedCResource<T>
impl<T> !UnwindSafe for ManagedCResource<T>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more