rquickjs_extension/loader/global.rs
1use rquickjs::{Ctx, Result};
2
3use super::GlobalLoadFn;
4
5/// Global initializer that MUST be called before any user code is run.
6pub struct GlobalInitializer {
7 globals: Vec<GlobalLoadFn>,
8}
9
10impl GlobalInitializer {
11 pub(crate) fn new(globals: Vec<GlobalLoadFn>) -> Self {
12 Self { globals }
13 }
14
15 pub fn init(self, ctx: &Ctx) -> Result<()> {
16 let globals_obj = ctx.globals();
17 for globals_fn in self.globals {
18 globals_fn(ctx, &globals_obj)?;
19 }
20 Ok(())
21 }
22}