1#![warn(clippy::all)]
2#![warn(missing_docs)]
3#![warn(clippy::missing_docs_in_private_items)]
4#![doc = include_str!("../README.md")]
5#![doc = include_str!(concat!(env!("OUT_DIR"), "/rhai-sci-docs.md"))]
6#![doc = include_str!("../docs/highlight.html")]
7
8mod patterns;
9pub use patterns::*;
10use rhai::{def_package, packages::Package, plugin::*, Engine, EvalAltResult};
11mod matrices_and_arrays;
12pub use matrices_and_arrays::matrix_functions;
13mod statistics;
14pub use statistics::stats;
15mod misc;
16pub use misc::misc_functions;
17mod cumulative;
18pub use cumulative::cum_functions;
19mod integration_and_differentiation;
20pub use integration_and_differentiation::int_and_diff;
21mod assertions;
22pub use assertions::assert_functions;
23mod constants;
24pub use constants::constant_definitions;
25mod moving;
26pub use moving::moving_functions;
27mod sets;
28pub use sets::set_functions;
29mod validate;
30pub use validate::validation_functions;
31mod trig;
32pub use trig::trig_functions;
33
34def_package! {
35 pub SciPackage(lib) {
37
38 combine_with_exported_module!(lib, "rhai_sci_matrix_function", matrix_functions);
39 combine_with_exported_module!(lib, "rhai_sci_miscellaneous_functions", misc_functions);
40 combine_with_exported_module!(lib, "rhai_sci_basic_stats", stats);
41 combine_with_exported_module!(lib, "rhai_sci_cumulative", cum_functions);
42 combine_with_exported_module!(lib, "rhai_sci_int_and_diff", int_and_diff);
43 combine_with_exported_module!(lib, "rhai_sci_assertions", assert_functions);
44 combine_with_exported_module!(lib, "rhai_sci_constants", constant_definitions);
45 combine_with_exported_module!(lib, "rhai_sci_sets", set_functions);
46 combine_with_exported_module!(lib, "rhai_sci_moving", moving_functions);
47 combine_with_exported_module!(lib, "rhai_sci_validation", validation_functions);
48 combine_with_exported_module!(lib, "rhai_sci_trig", trig_functions);
49 }
50}
51
52pub fn eval<T: Clone + std::marker::Send + std::marker::Sync + 'static>(
60 script: &str,
61) -> Result<T, Box<EvalAltResult>> {
62 let mut engine = Engine::new();
63 engine.register_global_module(SciPackage::new().as_shared_module());
64 engine.eval::<T>(script)
65}