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
17pub mod gc {
19 pub use gc_arena::{self, Collect, Gc, GcWeak, StaticCollect, Mutation, Arena, Rootable, lock::RefLock};
20}
21
22pub 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
27pub mod real_time {
29 pub use time::{self, OffsetDateTime, UtcOffset};
30}
31
32pub mod compact_str {
34 pub use ::compact_str::{self, CompactString, ToCompactString, CompactStringExt, format_compact};
35}
36
37pub 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;