#[wrap]
Expand description
Macro that generates RData definition for Rust types.
Example
See also data
and extern_methods!
extern crate minutus;
// You can repeat `class_method` and `method` any times.
#[minutus::wrap(class_method = "new", method = "distance")]
struct Point {
x: i64,
y: i64,
}
impl Point {
#[minutus::class_method]
pub fn new(x: i64, y: i64) -> Self {
Self { x, y }
}
#[minutus::method]
pub fn distance(&self, other: &Point) -> f64 {
(((self.x - other.x).pow(2) + (self.y - other.y).pow(2)) as f64).sqrt()
}
}
fn main() {
use minutus::types::TryFromMrb; // for using `Point::try_from_mrb`
let runtime = minutus::Evaluator::build();
// register class in mruby
Point::define_class_on_mrb(runtime.mrb());
runtime.evaluate(
"
p1 = Point.new(1,1)
p2 = Point.new(2,2)
p p1.distance(p2) # => prints 1.41421356
"
).unwrap();
}