pub trait BoxUnboxVmValue {
type Unboxed;
type Guarded;
const RUBY_TYPE: &'static str;
// Required methods
unsafe fn unbox_from_value<'a>(
value: &'a mut Value,
interp: &mut Artichoke,
) -> Result<UnboxedValueGuard<'a, Self::Guarded>, Error>;
fn alloc_value(
value: Self::Unboxed,
interp: &mut Artichoke,
) -> Result<Value, Error>;
fn box_into_value(
value: Self::Unboxed,
into: Value,
interp: &mut Artichoke,
) -> Result<Value, Error>;
fn free(data: *mut c_void);
}
Required Associated Constants§
Required Associated Types§
Required Methods§
Sourceunsafe fn unbox_from_value<'a>(
value: &'a mut Value,
interp: &mut Artichoke,
) -> Result<UnboxedValueGuard<'a, Self::Guarded>, Error>
unsafe fn unbox_from_value<'a>( value: &'a mut Value, interp: &mut Artichoke, ) -> Result<UnboxedValueGuard<'a, Self::Guarded>, Error>
§Safety
Implementations may return owned values. These values must not outlive
the underlying mrb_value
, which may be garbage collected by mruby.
The values returned by this method should not be stored for more than the current FFI trampoline entry point.
fn alloc_value( value: Self::Unboxed, interp: &mut Artichoke, ) -> Result<Value, Error>
fn box_into_value( value: Self::Unboxed, into: Value, interp: &mut Artichoke, ) -> Result<Value, Error>
fn free(data: *mut c_void)
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.