diff --git a/src/runtimes/ruby.rs b/src/runtimes/ruby.rs index e1944d8..230d2a7 100644 --- a/src/runtimes/ruby.rs +++ b/src/runtimes/ruby.rs @@ -74,19 +74,16 @@ impl RubyThread { } } - fn execute_in(&self, f: Box RubyValue + Send>) -> RubyValue { + fn execute_in(&self, f: Box T + Send>) -> T { let (return_sender, return_receiver) = crossbeam_channel::bounded(0); self.sender .as_ref() .unwrap() .send(Box::new(move |ruby| { return_sender.send(f(ruby)).unwrap(); - // return_sender.send(f(ruby)).unwrap(); - // drop(return_sender); })) .unwrap(); - return_receiver.recv().unwrap(); - RubyValue(()) + return_receiver.recv().unwrap() } } @@ -125,7 +122,7 @@ impl Runtime for RubyRuntime { } fn with_engine(&self, f: impl FnOnce(&Self::RawEngine) -> T) -> T { - todo!() + RUBY_THREAD.execute_in(Box::new(move |ruby| f(&ruby))) } fn eval(