diff --git a/src/main.rs b/src/main.rs index ac00368..98b1517 100644 --- a/src/main.rs +++ b/src/main.rs @@ -35,7 +35,7 @@ fn main() { }); let pat_clone = Arc::clone(&pattern); - thread::spawn(|| loop { + thread::spawn(move || loop { websocket(&pat_clone); }); diff --git a/src/util/pattern.rs b/src/util/pattern.rs index 1fbf484..561d7f0 100644 --- a/src/util/pattern.rs +++ b/src/util/pattern.rs @@ -7,7 +7,7 @@ use std::sync::RwLockWriteGuard; pub type ParseError = Box; -pub trait Pattern { +pub trait Pattern: Send { fn execute(&self, values: &mut RwLockWriteGuard<'_, [RawColor; crate::LED_SIZE]>); fn parse(args: Vec) -> Result where Self: Sized; } diff --git a/src/util/webserver.rs b/src/util/webserver.rs index 6dc62b2..86d74fa 100644 --- a/src/util/webserver.rs +++ b/src/util/webserver.rs @@ -7,7 +7,7 @@ pub fn websocket(pattern: &Arc>>>) { let server = TcpListener::bind("0.0.0.0:29999").unwrap(); for stream in server.incoming() { let clone = Arc::clone(pattern); - thread::spawn (|| { + thread::spawn (move || { let mut websocket = accept(stream.unwrap()).unwrap(); loop { let input = websocket.read_message().unwrap();