netsblox_vm/
lib.rs

1#![forbid(unsafe_code)]
2#![no_std]
3
4#![recursion_limit = "256"]
5
6#![doc = include_str!("../README.md")]
7
8#[cfg(feature = "std")]
9#[macro_use]
10extern crate std;
11
12#[macro_use] extern crate alloc;
13#[macro_use] extern crate num_derive;
14
15use educe::Educe;
16
17/// Re-exports of relevant items from `gc_arena`.
18pub mod gc {
19    pub use gc_arena::{self, Collect, Gc, GcWeak, StaticCollect, Mutation, Arena, Rootable, lock::RefLock};
20}
21
22/// Re-exports of relevant items from `serde_json`.
23pub mod json {
24    pub use serde_json::{self, Value as Json, Number as JsonNumber, Map as JsonMap, json, from_str as parse_json, from_slice as parse_json_slice};
25}
26
27/// Re-exports of relevant items from `time`.
28pub mod real_time {
29    pub use time::{self, OffsetDateTime, UtcOffset};
30}
31
32/// The re-exported version of the `compact-str` crate.
33pub mod compact_str {
34    pub use ::compact_str::{self, CompactString, ToCompactString, CompactStringExt, format_compact};
35}
36
37/// The re-exported version of the `netsblox-ast` crate.
38pub use netsblox_ast as ast;
39
40macro_rules! format_text {
41    ($($t:tt)*) => {{
42        $crate::runtime::Text::from(format!($($t)*).as_str())
43    }};
44}
45
46pub mod bytecode;
47pub mod slotmap;
48pub mod vecmap;
49pub mod runtime;
50pub mod process;
51pub mod project;
52pub mod template;
53mod util;
54
55mod meta {
56    include!(concat!(env!("OUT_DIR"), "/meta.rs"));
57}
58
59#[cfg(feature = "std")] pub mod std_util;
60#[cfg(feature = "std-system")] pub mod std_system;
61#[cfg(feature = "cli")] pub mod cli;
62
63#[cfg(test)] mod test;