Trait artichoke_backend::convert::BoxUnboxVmValue[][src]

pub trait BoxUnboxVmValue {
    type Unboxed;
    type Guarded;

    const RUBY_TYPE: &'static str;

    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); }

Associated Types

type Unboxed[src]

type Guarded[src]

Loading content...

Associated Constants

const RUBY_TYPE: &'static str[src]

Loading content...

Required methods

unsafe fn unbox_from_value<'a>(
    value: &'a mut Value,
    interp: &mut Artichoke
) -> Result<UnboxedValueGuard<'a, Self::Guarded>, Error>
[src]

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>
[src]

fn box_into_value(
    value: Self::Unboxed,
    into: Value,
    interp: &mut Artichoke
) -> Result<Value, Error>
[src]

fn free(data: *mut c_void)[src]

Loading content...

Implementors

impl BoxUnboxVmValue for Array[src]

type Unboxed = Self

type Guarded = Array

const RUBY_TYPE: &'static str[src]

unsafe fn unbox_from_value<'a>(
    value: &'a mut Value,
    interp: &mut Artichoke
) -> Result<UnboxedValueGuard<'a, Self::Guarded>, Error>
[src]

fn alloc_value(
    value: Self::Unboxed,
    interp: &mut Artichoke
) -> Result<Value, Error>
[src]

fn box_into_value(
    value: Self::Unboxed,
    into: Value,
    interp: &mut Artichoke
) -> Result<Value, Error>
[src]

fn free(data: *mut c_void)[src]

impl BoxUnboxVmValue for Symbol[src]

type Unboxed = Self

type Guarded = Immediate<Self::Unboxed>

const RUBY_TYPE: &'static str[src]

unsafe fn unbox_from_value<'a>(
    value: &'a mut Value,
    interp: &mut Artichoke
) -> Result<UnboxedValueGuard<'a, Self::Guarded>, Error>
[src]

fn alloc_value(
    value: Self::Unboxed,
    interp: &mut Artichoke
) -> Result<Value, Error>
[src]

fn box_into_value(
    value: Self::Unboxed,
    into: Value,
    interp: &mut Artichoke
) -> Result<Value, Error>
[src]

fn free(data: *mut c_void)[src]

impl<T> BoxUnboxVmValue for T where
    T: HeapAllocatedData + Sized + 'static, 
[src]

type Unboxed = Self

type Guarded = HeapAllocated<Self::Unboxed>

const RUBY_TYPE: &'static str[src]

unsafe fn unbox_from_value<'a>(
    value: &'a mut Value,
    interp: &mut Artichoke
) -> Result<UnboxedValueGuard<'a, Self::Guarded>, Error>
[src]

fn alloc_value(
    value: Self::Unboxed,
    interp: &mut Artichoke
) -> Result<Value, Error>
[src]

fn box_into_value(
    value: Self::Unboxed,
    into: Value,
    interp: &mut Artichoke
) -> Result<Value, Error>
[src]

fn free(data: *mut c_void)[src]

Loading content...