From 2016f85fb045c3577c5c43960216f23a66a7e982 Mon Sep 17 00:00:00 2001 From: Jane Petrovna Date: Tue, 28 Dec 2021 15:27:23 -0500 Subject: [PATCH] arc --- src/main.rs | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/main.rs b/src/main.rs index 76b710e..1a651b6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -12,8 +12,7 @@ pub const BRIGHTNESS: u8 = 150; fn main() { let p: RawColor = [0, 0, 0, 0]; let lock = Arc::new(RwLock::new([p; LED_SIZE])); - let lock_c = Arc::clone(&lock); - + let read = Arc::clone(&lock); thread::spawn(move || { let mut controller: Controller = ControllerBuilder::new() .channel(0, ChannelBuilder::new() @@ -26,23 +25,23 @@ fn main() { .build() .expect("Could not construct LED Controller."); loop { - let lights = lock_c.read().expect("Could not read array lock."); + let lights = read.read().expect("Could not read array lock."); run_lights(&mut controller, &lights).expect("Error running lights controller."); } }); loop { + let lock_c = Arc::clone(&lock); thread::sleep(time::Duration::from_millis(250)); let pattern = format_multiline("unit"); let res: Result>, ParseError> = pattern.iter() .map(|x: &Vec| parse_line((*x).clone())) .collect(); - if res.is_ok() { + let mut lights = lock_c.write().unwrap(); let v: Vec> = res.unwrap(); - for x in 0..v.len() { - let mut lights = lock.write().unwrap(); - v[x].execute(&mut lights); - } + v.iter().for_each(move |x| { + x.execute(&mut lights); + }) } } }