1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#![allow(clippy::needless_lifetimes)]
#![cfg_attr(feature = "doc-cfg", feature(doc_cfg))]
#[cfg(feature = "async-std")]
extern crate async_std_rs as async_std;
#[cfg(feature = "tokio")]
extern crate tokio_rs as tokio;
#[cfg(feature = "smol")]
extern crate smol_rs as smol;
pub mod qjs {
pub use rquickjs_sys::*;
}
#[cfg(feature = "phf")]
#[doc(hidden)]
pub mod phf {
pub use phf::*;
}
mod markers;
pub use markers::ParallelSend;
mod result;
use result::{get_exception, handle_exception, handle_panic};
pub use result::{Error, Result};
mod safe_ref;
pub(crate) use safe_ref::*;
mod runtime;
#[cfg(feature = "async-std")]
pub use runtime::AsyncStd;
#[cfg(all(feature = "smol", feature = "parallel"))]
pub use runtime::Smol;
#[cfg(feature = "tokio")]
pub use runtime::Tokio;
#[cfg(feature = "futures")]
pub use runtime::{Executor, ExecutorSpawner, Idle};
pub use runtime::{MemoryUsage, Runtime};
mod context;
pub use context::{intrinsic, Context, ContextBuilder, Ctx, Intrinsic, MultiWith};
mod value;
pub use value::*;
mod persistent;
pub use persistent::{Outlive, Persistent};
mod class_id;
#[cfg(not(feature = "classes"))]
pub(crate) use class_id::ClassId;
#[cfg(feature = "classes")]
pub use class_id::ClassId;
#[cfg(feature = "registery")]
mod registery_key;
#[cfg(feature = "registery")]
pub use registery_key::RegisteryKey;
#[cfg(feature = "classes")]
mod class;
#[cfg(feature = "classes")]
pub use class::{Class, ClassDef, Constructor, HasRefs, RefsMarker, WithProto};
#[cfg(feature = "properties")]
mod property;
#[cfg(feature = "properties")]
pub use property::{Accessor, AsProperty, Property};
pub(crate) use std::{result::Result as StdResult, string::String as StdString};
#[cfg(feature = "futures")]
mod promise;
#[cfg(feature = "futures")]
pub use promise::{Promise, Promised};
#[cfg(feature = "allocator")]
mod allocator;
#[cfg(feature = "allocator")]
pub use allocator::{Allocator, RawMemPtr, RustAllocator};
#[cfg(feature = "loader")]
mod loader;
#[cfg(feature = "loader")]
pub use loader::{
BuiltinLoader, BuiltinResolver, Bundle, Compile, FileResolver, HasByteCode, Loader,
ModuleLoader, Resolver, ScriptLoader,
};
#[cfg(feature = "dyn-load")]
pub use loader::NativeLoader;
#[cfg(test)]
pub(crate) fn test_with<'js, F, R>(func: F) -> R
where
F: FnOnce(Ctx) -> R,
{
let rt = Runtime::new().unwrap();
let ctx = Context::full(&rt).unwrap();
ctx.with(func)
}