Struct rusteron_archive::ManagedCResource

source ·
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>

source

pub fn new( init: impl FnOnce(*mut *mut T) -> i32, cleanup: impl FnMut(*mut *mut T) -> i32 + 'static, 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

source

pub fn new_borrowed(value: *const T) -> Self

source

pub fn get(&self) -> *mut T

Gets a raw pointer to the resource.

source

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>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<T> Drop for ManagedCResource<T>

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

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> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.