diff --git a/src/common_setup.rs b/src/common_setup.rs index 51914181..989273b4 100644 --- a/src/common_setup.rs +++ b/src/common_setup.rs @@ -1,7 +1,7 @@ //! Initialization routines that are used by more than one Rojo command or //! utility. -use std::path::Path; +use std::{path::Path, sync::Arc}; use rbx_dom_weak::RbxInstanceProperties; @@ -41,7 +41,8 @@ pub fn start( // If the project file defines no plugins, then there's no need to // initialize the snapshot plugin context. if !project.plugins.is_empty() { - snapshot_context.plugin_context = Some(SnapshotPluginContext::new(&project.plugins)); + snapshot_context.plugin_context = + Some(Arc::new(SnapshotPluginContext::new(&project.plugins))); } } diff --git a/src/snapshot_middleware/context.rs b/src/snapshot_middleware/context.rs index b125b890..6d78b79f 100644 --- a/src/snapshot_middleware/context.rs +++ b/src/snapshot_middleware/context.rs @@ -1,16 +1,16 @@ -use std::{fmt, fs, ops::Deref, path::Path}; +use std::{fmt, fs, ops::Deref, path::Path, sync::Arc}; use rlua::{Lua, RegistryKey}; use super::error::SnapshotError; -#[derive(Debug)] +#[derive(Debug, Clone)] pub struct InstanceSnapshotContext { /// Holds all the state needed to run user plugins as part of the snapshot /// process. /// /// If this is None, then plugins should not be evaluated at all. - pub plugin_context: Option, + pub plugin_context: Option>, } impl Default for InstanceSnapshotContext {