summaryrefslogtreecommitdiff
path: root/rustlings/solutions/19_smart_pointers/arc1.rs
diff options
context:
space:
mode:
authorHunter Kvalevog <hunter@kvog.sh>2026-10-02 21:53:51 -0500
committerHunter Kvalevog <hunter@kvog.sh>2026-10-02 21:53:51 -0500
commit4dfc11d74ab02ac5765ae5d08fb750c91f4744b4 (patch)
tree17ba62056d6b691dd0217b0e8f1b3a5826dce0f6 /rustlings/solutions/19_smart_pointers/arc1.rs
parent02d8f1c62896576e1266553a56980eddbc2a88d7 (diff)
rustlings: move to rust/
Diffstat (limited to 'rustlings/solutions/19_smart_pointers/arc1.rs')
-rw-r--r--rustlings/solutions/19_smart_pointers/arc1.rs45
1 files changed, 0 insertions, 45 deletions
diff --git a/rustlings/solutions/19_smart_pointers/arc1.rs b/rustlings/solutions/19_smart_pointers/arc1.rs
deleted file mode 100644
index bd76189..0000000
--- a/rustlings/solutions/19_smart_pointers/arc1.rs
+++ /dev/null
@@ -1,45 +0,0 @@
-// In this exercise, we are given a `Vec` of `u32` called `numbers` with values
-// ranging from 0 to 99. We would like to use this set of numbers within 8
-// different threads simultaneously. Each thread is going to get the sum of
-// every eighth value with an offset.
-//
-// The first thread (offset 0), will sum 0, 8, 16, …
-// The second thread (offset 1), will sum 1, 9, 17, …
-// The third thread (offset 2), will sum 2, 10, 18, …
-// …
-// The eighth thread (offset 7), will sum 7, 15, 23, …
-//
-// Each thread should own a reference-counting pointer to the vector of
-// numbers. But `Rc` isn't thread-safe. Therefore, we need to use `Arc`.
-//
-// Don't get distracted by how threads are spawned and joined. We will practice
-// that later in the exercises about threads.
-
-// Don't change the lines below.
-#![forbid(unused_imports)]
-use std::{sync::Arc, thread};
-
-fn main() {
- let numbers: Vec<_> = (0..100u32).collect();
-
- let shared_numbers = Arc::new(numbers);
- // ^^^^^^^^^^^^^^^^^
-
- let mut join_handles = Vec::new();
-
- for offset in 0..8 {
- let child_numbers = Arc::clone(&shared_numbers);
- // ^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
- let handle = thread::spawn(move || {
- let sum: u32 = child_numbers.iter().filter(|&&n| n % 8 == offset).sum();
- println!("Sum of offset {offset} is {sum}");
- });
-
- join_handles.push(handle);
- }
-
- for handle in join_handles.into_iter() {
- handle.join().unwrap();
- }
-}