pub struct MonoClassField(/* 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 MonoClassField
impl MonoClassField
Sourcepub fn offset(self) -> Result<u32>
pub fn offset(self) -> Result<u32>
Returns the byte offset of this field within its declaring class.
§Errors
Returns crate::MonoError::Uninitialized if the Mono API has not been initialized.
Sourcepub fn name(self) -> Result<String>
pub fn name(self) -> Result<String>
Returns the name of this field as reported by the Mono runtime.
The returned string is copied out of Mono’s metadata and is safe to use beyond the lifetime of the runtime handle.
§Errors
Returns crate::MonoError::Uninitialized if the Mono API has not been initialized.
Sourcepub fn mono_type(self) -> Result<Option<MonoType>>
pub fn mono_type(self) -> Result<Option<MonoType>>
Returns the MonoType descriptor for this field.
§Errors
Returns crate::MonoError::Uninitialized if the Mono API has not been initialized.
Sourcepub unsafe fn static_value(
self,
vtable: MonoVTable,
out: *mut c_void,
) -> Result<()>
pub unsafe fn static_value( self, vtable: MonoVTable, out: *mut c_void, ) -> Result<()>
Reads the static field value into the out buffer via the given vtable.
§Errors
Returns crate::MonoError::Uninitialized if the Mono API has not been initialized.
§Safety
out must point to valid memory sized for the field type.
Trait Implementations§
Source§impl Clone for MonoClassField
impl Clone for MonoClassField
Source§fn clone(&self) -> MonoClassField
fn clone(&self) -> MonoClassField
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more