Macro rutie::module [−][src]
macro_rules! module { ($module: ident) => { ... }; }
Creates Rust structure for new Ruby module
This macro does not define an actual Ruby module. It only creates structs for using
the module in Rust. To define the module in Ruby, use Module
structure.
Examples
#[macro_use] extern crate rutie; use rutie::{Module, RString, Object, VM}; module!(Greeter); methods!( Greeter, itself, fn anonymous_greeting() -> RString { RString::new("Hello stranger!") } fn friendly_greeting(name: RString) -> RString { let name = name .map(|name| name.to_string()) .unwrap_or("Anonymous".to_string()); let greeting = format!("Hello dear {}!", name); RString::new(&greeting) } ); fn main() { Module::new("Greeter").define(|itself| { itself.def("anonymous_greeting", anonymous_greeting); itself.def("friendly_greeting", friendly_greeting); }); }
Ruby:
module Greeter
def anonymous_greeting
'Hello stranger!'
end
def friendly_greeting(name)
default_name = 'Anonymous'
name = defaut_name unless name.is_a?(String)
"Hello dear #{name}"
end
end