brainwires_code_interpreters/
lib.rs1#![deny(missing_docs)]
2mod types;
33mod executor;
34mod languages;
35
36#[cfg(feature = "wasm")]
37mod wasm_bindings;
38
39pub use types::*;
40pub use executor::Executor;
41
42pub mod lang {
44 #[cfg(feature = "rhai")]
45 pub use crate::languages::rhai::RhaiExecutor;
46
47 #[cfg(feature = "lua")]
48 pub use crate::languages::lua::LuaExecutor;
49
50 #[cfg(feature = "javascript")]
51 pub use crate::languages::javascript::JavaScriptExecutor;
52
53 #[cfg(feature = "python")]
54 pub use crate::languages::python::PythonExecutor;
55}
56
57#[allow(clippy::vec_init_then_push)]
59pub fn supported_languages() -> Vec<Language> {
60 let mut languages = Vec::new();
61
62 #[cfg(feature = "rhai")]
63 languages.push(Language::Rhai);
64
65 #[cfg(feature = "lua")]
66 languages.push(Language::Lua);
67
68 #[cfg(feature = "javascript")]
69 languages.push(Language::JavaScript);
70
71 #[cfg(feature = "python")]
72 languages.push(Language::Python);
73
74 languages
75}
76
77pub fn is_language_supported(language: Language) -> bool {
79 match language {
80 #[cfg(feature = "rhai")]
81 Language::Rhai => true,
82
83 #[cfg(feature = "lua")]
84 Language::Lua => true,
85
86 #[cfg(feature = "javascript")]
87 Language::JavaScript => true,
88
89 #[cfg(feature = "python")]
90 Language::Python => true,
91
92 #[allow(unreachable_patterns)]
93 _ => false,
94 }
95}