[−][src]Trait mruby::convert::RustBackedValue
Provides converters to and from Value with ruby type of Ruby::Data.
This trait provides default implementations of try_into_ruby and
try_from_ruby.
The 'static type bound comes from the class spec registry on
State.
Warning: Self must be allocated on the heap. If Self is not heap
allocated, malloc will fail when attempting to free the generated Ruby
objects.
Provided methods
unsafe fn try_into_ruby(
self,
interp: &Mrb,
slf: Option<mrb_value>
) -> Result<Value, MrbError>
self,
interp: &Mrb,
slf: Option<mrb_value>
) -> Result<Value, MrbError>
Try to convert a Rust object into a Value.
Inject the data pointer into slf if it is provided, otherwise call
sys::mrb_obj_new to get a new instance of the class associated with
Self.
To store self in a sys::mrb_value, this function wraps self in
an Rc<RefCell<_>>.
unsafe fn try_from_ruby(
interp: &Mrb,
slf: &Value
) -> Result<Rc<RefCell<Self>>, MrbError>
interp: &Mrb,
slf: &Value
) -> Result<Rc<RefCell<Self>>, MrbError>
Extract the Rust object from the Value if the Value is backed by
Self.
Extract the data pointer from slf and return an Rc<RefCell<_>>
containing the Rust object.
This function sanity checks to make sure that Value is a
Ruby::Data and that the RClass * of the spec matches the
Value.
fn new_obj_args(&self, interp: &Mrb) -> Vec<mrb_value>
Return arguments to new when creating a sys::mrb_value.
This default implementation returns an empty Vec of arguments.
Implementations should override this method if they need to supply arguments to initialize the Ruby class.
Implementations on Foreign Types
impl<T> RustBackedValue for Box<T> where
T: RustBackedValue, [src]
Loading content...
T: RustBackedValue,