Skip to main content

MonoClass

Struct MonoClass 

Source
pub struct MonoClass(/* private fields */);
Expand description

An opaque handle to a Mono runtime object.

§Thread safety

This type is intentionally !Send + !Sync. Every thread that reads or writes Mono objects must first be registered with the runtime via crate::MonoThreadGuard::attach. Using a handle on an unregistered thread is undefined behavior — Mono’s garbage collector and internal bookkeeping assume all active threads are known to the runtime.

Handles are therefore bound to the thread on which they were obtained. The compiler enforces this: a handle cannot be moved to another thread without explicit unsafe code.

If you need to transfer a handle across thread boundaries and you can guarantee that both threads are attached to the runtime for the entire duration of use, you can opt in manually on your wrapper type:

struct MyComponent {
    class: mono_rt::MonoClass,
}

// SAFETY: `class` is only accessed while the calling thread holds a
// `MonoThreadGuard`, ensuring it is registered with the Mono runtime.
unsafe impl Send for MyComponent {}
unsafe impl Sync for MyComponent {}

Implementations§

Source§

impl MonoClass

Source

pub fn as_ptr(self) -> *mut c_void

Source

pub fn from_ptr(ptr: *mut c_void) -> Option<Self>

Source

pub unsafe fn from_ptr_unchecked(ptr: *mut c_void) -> Self

§Safety

ptr must be non-null and valid on a thread attached to the Mono runtime.

Source§

impl MonoClass

Source

pub fn field(self, name: &str) -> Result<Option<MonoClassField>>

Looks up a field by name on this class.

§Errors

Returns MonoError::NullByteInName if name contains an interior null byte. Returns MonoError::Uninitialized if the Mono API has not been initialized.

Source

pub fn method( self, name: &str, param_count: Option<i32>, ) -> Result<Option<MonoMethod>>

Looks up a method by name on this class.

param_count restricts the search to a specific arity; pass None to match any overload.

§Errors

Returns MonoError::NullByteInName if name contains an interior null byte. Returns MonoError::Uninitialized if the Mono API has not been initialized.

Source

pub fn mono_type(self) -> Result<Option<MonoType>>

Returns the MonoType descriptor for this class.

§Errors

Returns MonoError::Uninitialized if the Mono API has not been initialized.

Source

pub fn vtable(self, domain: MonoDomain) -> Result<Option<MonoVTable>>

Returns the vtable for this class in the given domain.

§Errors

Returns MonoError::Uninitialized if the Mono API has not been initialized.

Source

pub fn new_object(self, domain: MonoDomain) -> Result<Option<MonoObject>>

Allocates a new uninitialized instance of this class in the given domain.

The returned object is not yet constructed — call the .ctor method via MonoMethod::invoke to initialize it.

§Errors

Returns MonoError::Uninitialized if the Mono API has not been initialized.

Source

pub fn fields(self) -> Result<Vec<MonoClassField>>

Returns all fields declared on this class.

§Errors

Returns MonoError::Uninitialized if the Mono API has not been initialized.

Source

pub fn methods(self) -> Result<Vec<MonoMethod>>

Returns all methods declared on this class.

§Errors

Returns MonoError::Uninitialized if the Mono API has not been initialized.

Trait Implementations§

Source§

impl Clone for MonoClass

Source§

fn clone(&self) -> MonoClass

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for MonoClass

Source§

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

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

impl Copy for MonoClass

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more