From 4dfc11d74ab02ac5765ae5d08fb750c91f4744b4 Mon Sep 17 00:00:00 2001 From: Hunter Kvalevog Date: Fri, 2 Oct 2026 21:53:51 -0500 Subject: rustlings: move to rust/ --- rustlings/exercises/20_threads/threads3.rs | 60 ------------------------------ 1 file changed, 60 deletions(-) delete mode 100644 rustlings/exercises/20_threads/threads3.rs (limited to 'rustlings/exercises/20_threads/threads3.rs') diff --git a/rustlings/exercises/20_threads/threads3.rs b/rustlings/exercises/20_threads/threads3.rs deleted file mode 100644 index 6d16bd9..0000000 --- a/rustlings/exercises/20_threads/threads3.rs +++ /dev/null @@ -1,60 +0,0 @@ -use std::{sync::mpsc, thread, time::Duration}; - -struct Queue { - first_half: Vec, - second_half: Vec, -} - -impl Queue { - fn new() -> Self { - Self { - first_half: vec![1, 2, 3, 4, 5], - second_half: vec![6, 7, 8, 9, 10], - } - } -} - -fn send_tx(q: Queue, tx: mpsc::Sender) { - // TODO: We want to send `tx` to both threads. But currently, it is moved - // into the first thread. How could you solve this problem? - thread::spawn(move || { - for val in q.first_half { - println!("Sending {val:?}"); - tx.send(val).unwrap(); - thread::sleep(Duration::from_millis(250)); - } - }); - - thread::spawn(move || { - for val in q.second_half { - println!("Sending {val:?}"); - tx.send(val).unwrap(); - thread::sleep(Duration::from_millis(250)); - } - }); -} - -fn main() { - // You can optionally experiment here. -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn threads3() { - let (tx, rx) = mpsc::channel(); - let queue = Queue::new(); - - send_tx(queue, tx); - - let mut received = Vec::with_capacity(10); - for value in rx { - received.push(value); - } - - received.sort(); - assert_eq!(received, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); - } -} -- cgit v1.2.3