diff --git a/examples/arrays_and_structs.rs b/examples/arrays_and_structs.rs index dab0880b..472c9979 100644 --- a/examples/arrays_and_structs.rs +++ b/examples/arrays_and_structs.rs @@ -1,29 +1,41 @@ use rhai::{Engine, EvalAltResult}; -#[derive(Debug, Clone)] -struct TestStruct { - x: i64, -} - -impl TestStruct { - pub fn update(&mut self) { - self.x += 1000; - } - pub fn new() -> Self { - Self { x: 1 } - } -} - #[cfg(not(feature = "no_index"))] #[cfg(not(feature = "no_object"))] fn main() -> Result<(), Box> { + #[derive(Debug, Clone)] + struct TestStruct { + x: i64, + } + + impl TestStruct { + pub fn new() -> Self { + Self { x: 1 } + } + pub fn update(&mut self) { + self.x += 1000; + } + } + let mut engine = Engine::new(); engine - .register_type::() + .register_type_with_name::("TestStruct") .register_fn("new_ts", TestStruct::new) .register_fn("update", TestStruct::update); + #[cfg(feature = "metadata")] + { + println!("Functions registered:"); + + engine + .gen_fn_signatures(false) + .into_iter() + .for_each(|func| println!("{}", func)); + + println!(); + } + let result = engine.eval::( " let x = new_ts(); diff --git a/examples/custom_types_and_methods.rs b/examples/custom_types_and_methods.rs index b52d0a27..581e0ff6 100644 --- a/examples/custom_types_and_methods.rs +++ b/examples/custom_types_and_methods.rs @@ -1,38 +1,61 @@ use rhai::{Engine, EvalAltResult}; -#[derive(Debug, Clone)] -struct TestStruct { - x: i64, -} - -impl TestStruct { - pub fn update(&mut self) { - self.x += 1000; - } - - pub fn new() -> Self { - Self { x: 1 } - } -} - #[cfg(not(feature = "no_object"))] fn main() -> Result<(), Box> { + #[derive(Debug, Clone)] + struct TestStruct { + x: i64, + } + + impl TestStruct { + pub fn new() -> Self { + Self { x: 1 } + } + pub fn update(&mut self) { + self.x += 1000; + } + pub fn calculate(&mut self, data: i64) -> i64 { + self.x * data + } + pub fn get_x(&mut self) -> i64 { + self.x + } + pub fn set_x(&mut self, value: i64) { + self.x = value; + } + } + let mut engine = Engine::new(); engine - .register_type::() + .register_type_with_name::("TestStruct") .register_fn("new_ts", TestStruct::new) - .register_fn("update", TestStruct::update); + .register_fn("update", TestStruct::update) + .register_fn("calc", TestStruct::calculate) + .register_get_set("x", TestStruct::get_x, TestStruct::set_x); - let result = engine.eval::( + #[cfg(feature = "metadata")] + { + println!("Functions registered:"); + + engine + .gen_fn_signatures(false) + .into_iter() + .for_each(|func| println!("{}", func)); + + println!(); + } + + let result = engine.eval::( " let x = new_ts(); + x.x = 42; x.update(); - x + x.calc(x.x) ", )?; - println!("result: {}", result.x); // prints 1001 + println!("result: {}", result); // prints 1085764 Ok(()) } diff --git a/examples/hello.rs b/examples/hello.rs index 580315dd..c35b3013 100644 --- a/examples/hello.rs +++ b/examples/hello.rs @@ -7,7 +7,7 @@ fn main() -> Result<(), Box> { let result = engine.eval::("40 + 2")?; - println!("Answer: {}", result); // prints 42 + println!("The Answer: {}", result); // prints 42 Ok(()) }