diff --git a/src/runtime2/runtime.rs b/src/runtime2/runtime.rs index 4f2a18d823c102b3582bfd433ff9c2ae37619d4c..d3e432ed679759a8d87bbe6cbcff6433e4a8660c 100644 --- a/src/runtime2/runtime.rs +++ b/src/runtime2/runtime.rs @@ -194,7 +194,8 @@ impl Runtime { )?; let reserved = self.inner.start_create_pdl_component(); let ctx = CompCtx::new(&reserved); - let (key, _) = self.inner.finish_create_pdl_component(reserved, CompPDL::new(prompt, 0), ctx, false); + let component = Box::new(CompPDL::new(prompt, 0)); + let (key, _) = self.inner.finish_create_pdl_component(reserved, component, ctx, false); self.inner.enqueue_work(key); return Ok(()) @@ -247,9 +248,9 @@ impl RuntimeInner { return CompReserved{ reservation }; } - pub(crate) fn finish_create_pdl_component( + pub(crate) fn finish_create_pdl_component( &self, reserved: CompReserved, - component: C, mut context: CompCtx, initially_sleeping: bool, + component: Box, mut context: CompCtx, initially_sleeping: bool, ) -> (CompKey, &mut RuntimeComp) { let inbox_queue = QueueDynMpsc::new(16); let inbox_producer = inbox_queue.producer(); @@ -262,7 +263,7 @@ impl RuntimeInner { num_handles: AtomicU32::new(1), // the component itself acts like a handle inbox: inbox_producer, }, - component: Box::new(component), + component, ctx: context, inbox: inbox_queue, exiting: false,