Struct mrusty::Value 
                   
                       [−]
                   
               [src]
pub struct Value {
    // some fields omitted
}A struct that wraps around any mruby variable.
Values are created from the Mruby instance:
Examples
let mruby = Mruby::new(); let result = mruby.run("true").unwrap(); // Value // Values need to be unwrapped in order to make sure they have the right mruby type. assert_eq!(result.to_bool().unwrap(), true);
Methods
impl Value[src]
fn init<T: Any>(self, obj: T) -> Value
Initializes the self mruby object passed to initialize with a Rust object of type T.
Note: T must be defined on the current Mruby with def_class.
Examples
use mrusty::{Mruby, MrubyImpl}; let mruby = Mruby::new(); struct Cont { value: i32 }; mruby.def_class_for::<Cont>("Container"); mruby.def_method_for::<Cont, _>("initialize", mrfn!(|_mruby, slf: Value, v: i32| { let cont = Cont { value: v }; slf.init(cont) // Return the same slf value. })); let result = mruby.run("Container.new 3").unwrap(); let result = result.to_obj::<Cont>().unwrap(); let result = result.borrow(); assert_eq!(result.value, 3);
fn call(&self, name: &str, args: Vec<Value>) -> Result<Value, MrubyError>
Calls method name on a Value passing args.
Examples
let mruby = Mruby::new(); let one = mruby.fixnum(1); let result = one.call("+", vec![mruby.fixnum(2)]).unwrap(); assert_eq!(result.to_i32().unwrap(), 3);
unsafe fn call_unchecked(&self, name: &str, args: Vec<Value>) -> Value
Calls method name on a Value passing args. If call fails, mruby will be left to
handle the exception.
The method is unsafe because running it within a Rust context will interrupt drops, potentially leading to memory leaks.
Examples
let mruby = Mruby::new(); let one = mruby.fixnum(1); let result = unsafe { one.call_unchecked("+", vec![mruby.fixnum(2)]) }; assert_eq!(result.to_i32().unwrap(), 3);
fn has_var(&self, name: &str) -> bool
Returns whether the instance variable name is defined on a Value.
Examples
let mruby = Mruby::new(); mruby.def_class("Container"); let cont = mruby.run("Container.new").unwrap(); assert!(!cont.has_var("value"));
fn get_var(&self, name: &str) -> Option<Value>
Returns the value of the instance variable name in a Some or None if it is not
defined.
Examples
let mruby = Mruby::new(); mruby.def_class("Container"); let cont = mruby.run("Container.new").unwrap(); cont.set_var("value", mruby.fixnum(2)); assert_eq!(cont.get_var("value").unwrap().to_i32().unwrap(), 2); assert!(cont.get_var("valup").is_none());
fn set_var(&self, name: &str, value: Value)
Sets the value of the instance variable name to value.
Examples
let mruby = Mruby::new(); mruby.def_class("Container"); let cont = mruby.run("Container.new").unwrap(); cont.set_var("value", mruby.fixnum(2)); assert!(cont.has_var("value")); assert_eq!(cont.get_var("value").unwrap().to_i32().unwrap(), 2);
Method panics if called on non-objects.
let mruby = Mruby::new(); let one = mruby.fixnum(1); one.set_var("value", mruby.fixnum(2)); // panics because Fixnum cannot have instance vars
fn class(&self) -> Class
Returns the Class of an mruby Value.
Examples
let mruby = Mruby::new(); let one = mruby.run("1").unwrap(); assert_eq!(one.class().to_str(), "Fixnum");
fn to_bool(&self) -> Result<bool, MrubyError>
Casts a Value and returns a bool in an Ok or an Err if the types mismatch.
Example
let mruby = Mruby::new(); let result = mruby.run(" def pos(n) n > 0 end pos 1 ").unwrap(); assert_eq!(result.to_bool().unwrap(), true);
fn to_i32(&self) -> Result<i32, MrubyError>
Casts a Value and returns an i32 in an Ok or an Err if the types mismatch.
Example
let mruby = Mruby::new(); let result = mruby.run(" def fact(n) n > 1 ? fact(n - 1) * n : 1 end fact 5 ").unwrap(); assert_eq!(result.to_i32().unwrap(), 120);
fn to_f64(&self) -> Result<f64, MrubyError>
Casts a Value and returns an f64 in an Ok or an Err if the types mismatch.
Example
let mruby = Mruby::new(); let result = mruby.run(" 3 / 2.0 ").unwrap(); assert_eq!(result.to_f64().unwrap(), 1.5);
fn to_str<'a>(&self) -> Result<&'a str, MrubyError>
Casts a Value and returns a &str in an Ok or an Err if the types mismatch.
Example
let mruby = Mruby::new(); let result = mruby.run(" [1, 2, 3].map(&:to_s).join ").unwrap(); assert_eq!(result.to_str().unwrap(), "123");
let mruby = Mruby::new(); let result = mruby.run(":symbol").unwrap(); assert_eq!(result.to_str().unwrap(), "symbol");
fn to_obj<T: Any>(&self) -> Result<Rc<RefCell<T>>, MrubyError>
Casts mruby Value of Class name to Rust type Rc<T>.
Note: T must be defined on the current Mruby with def_class.
Examples
let mruby = Mruby::new(); struct Cont { value: i32 } mruby.def_class_for::<Cont>("Container"); let value = mruby.obj(Cont { value: 3 }); let cont = value.to_obj::<Cont>().unwrap(); let cont = cont.borrow(); assert_eq!(cont.value, 3);
fn to_option<T: Any>(&self) -> Result<Option<Rc<RefCell<T>>>, MrubyError>
Casts mruby Value of Class name to Rust Option of Rc<T>.
Note: T must be defined on the current Mruby with def_class.
Examples
let mruby = Mruby::new(); struct Cont { value: i32 } mruby.def_class_for::<Cont>("Container"); let value = mruby.obj(Cont { value: 3 }); let cont = value.to_option::<Cont>().unwrap().unwrap(); let cont = cont.borrow(); assert_eq!(cont.value, 3); assert!(mruby.nil().to_option::<Cont>().unwrap().is_none());
fn to_vec(&self) -> Result<Vec<Value>, MrubyError>
Casts mruby Value of Class Array to Rust type Vec<Value>.
Examples
let mruby = Mruby::new(); let result = mruby.run(" [1, 2, 3].map(&:to_s) ").unwrap(); assert_eq!(result.to_vec().unwrap(), vec![ mruby.string("1"), mruby.string("2"), mruby.string("3") ]);
fn to_class(&self) -> Result<Class, MrubyError>
Casts mruby Value of Class Class to Rust type Class.
Examples
let mruby = Mruby::new(); let result = mruby.run("Object").unwrap(); assert_eq!(result.to_class().unwrap().to_str(), "Object");
fn to_module(&self) -> Result<Module, MrubyError>
Casts mruby Value of Class Module to Rust type Module.
Examples
let mruby = Mruby::new(); let result = mruby.run("Kernel").unwrap(); assert_eq!(result.to_module().unwrap().to_str(), "Kernel");
Trait Implementations
impl Clone for Value[src]
fn clone(&self) -> Value
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)1.0.0
Performs copy-assignment from source. Read more
impl PartialEq<Value> for Value[src]
fn eq(&self, other: &Value) -> bool
This method tests for self and other values to be equal, and is used by ==. Read more
fn ne(&self, other: &Rhs) -> bool1.0.0
This method tests for !=.