From ae8d17e34bfc4cb63776045cfdf3de13913ec651 Mon Sep 17 00:00:00 2001 From: Juergen Stuber Date: Fri, 16 Jan 2026 20:48:51 +0100 Subject: [PATCH] Update the rand crate to 0.9.x - `thread_rng` becomes just `rng`. - `gen` is renamed to `random`, `gen_range` to `random_range`. - Avoid using the `rand` feature of the not yet updated crate `lowdim`. --- Cargo.toml | 4 ++-- src/bin/chars/main.rs | 30 +++++++++++++++--------------- src/bin/cnoise/main.rs | 12 ++++++------ src/bin/colorcode/main.rs | 10 +++++----- src/bin/dualmaze/main.rs | 6 +++--- src/bin/life/main.rs | 8 ++++---- src/bin/lorenz/main.rs | 6 +++--- src/bin/matrix-code/main.rs | 18 +++++++++--------- src/bin/maze/main.rs | 6 +++--- src/bin/predprey/main.rs | 12 +++++++----- 10 files changed, 57 insertions(+), 55 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index cf19e37..d8aeed7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,9 +11,9 @@ license = "MIT OR Apache-2.0" edition = "2021" [dependencies] -rand = "0.8.4" chrono = "0.4.6" -lowdim = { version = "0.6.0", features = ["random"] } +lowdim = { version = "0.6.0" } primal = "0.3.3" +rand = "0.9.2" serde = { version = "1.0.215", features = ["derive"] } serde_json = "1.0.132" diff --git a/src/bin/chars/main.rs b/src/bin/chars/main.rs index f5297d3..37856e5 100644 --- a/src/bin/chars/main.rs +++ b/src/bin/chars/main.rs @@ -7,7 +7,7 @@ use std::iter::repeat; use std::thread::sleep; use std::time::Duration; -use rand::thread_rng; +use rand::rng; use rand::Rng; use pixelfoo_apps::color::Color; @@ -53,7 +53,7 @@ fn main() -> std::io::Result<()> { let t_frame = 0.040; // s let delay = Duration::new(0, (1_000_000_000.0 * t_frame) as u32); - let mut rng = thread_rng(); + let mut rng = rng(); let colors = vec![ Color::black(), @@ -70,24 +70,24 @@ fn main() -> std::io::Result<()> { .collect::>(); for x in 0..(x_size / 8) { for y in 0..(y_size / 8) { - let fg = colors[rng.gen_range(0..colors.len())] - .interpolate(Color::black(), 0.8 * rng.gen::()); - let bg = colors[rng.gen_range(0..colors.len())] - .interpolate(Color::black(), 0.8 * rng.gen::()); - let start_index = rng.gen_range(0..buffer.len() / 8) * 8; + let fg = colors[rng.random_range(0..colors.len())] + .interpolate(Color::black(), 0.8 * rng.random::()); + let bg = colors[rng.random_range(0..colors.len())] + .interpolate(Color::black(), 0.8 * rng.random::()); + let start_index = rng.random_range(0..buffer.len() / 8) * 8; let bitmap = &buffer[start_index..(start_index + 8)]; paint_char(&mut frame, x, y, bitmap, fg, bg); } } loop { - if rng.gen::() < 0.02 { - let x = rng.gen_range(0..x_size / 8); - let y = rng.gen_range(0..y_size / 8); - let fg = colors[rng.gen_range(0..colors.len())] - .interpolate(Color::black(), 0.8 * rng.gen::()); - let bg = colors[rng.gen_range(0..colors.len())] - .interpolate(Color::black(), 0.8 * rng.gen::()); - let start_index = rng.gen_range(0..buffer.len() / 8) * 8; + if rng.random::() < 0.02 { + let x = rng.random_range(0..x_size / 8); + let y = rng.random_range(0..y_size / 8); + let fg = colors[rng.random_range(0..colors.len())] + .interpolate(Color::black(), 0.8 * rng.random::()); + let bg = colors[rng.random_range(0..colors.len())] + .interpolate(Color::black(), 0.8 * rng.random::()); + let start_index = rng.random_range(0..buffer.len() / 8) * 8; let bitmap = &buffer[start_index..(start_index + 8)]; paint_char(&mut frame, x, y, bitmap, fg, bg); } diff --git a/src/bin/cnoise/main.rs b/src/bin/cnoise/main.rs index e396cf6..a3c7488 100644 --- a/src/bin/cnoise/main.rs +++ b/src/bin/cnoise/main.rs @@ -5,7 +5,7 @@ use std::iter::repeat_with; use std::thread::sleep; use std::time::Duration; -use rand::thread_rng; +use rand::rng; use rand::Rng; use pixelfoo_apps::color::Color; @@ -28,12 +28,12 @@ impl Palette { where R: Rng, { - let r = rng.gen::(); + let r = rng.random::(); let mut p_sum = 0.0; for &(p, c0, c1) in &self.0 { p_sum += p; if r < p_sum { - return c0.interpolate(c1, rng.gen::().powf(2.0)); + return c0.interpolate(c1, rng.random::().powf(2.0)); } } Color::black() @@ -58,7 +58,7 @@ fn main() -> std::io::Result<()> { let t_frame = 0.040; // s let delay = Duration::new(0, (1_000_000_000.0 * t_frame) as u32); - let mut rng = thread_rng(); + let mut rng = rng(); let palette_29 = Palette(vec![ (0.04, Color::new(86, 197, 208), Color::new(86, 197, 208)), @@ -164,8 +164,8 @@ fn main() -> std::io::Result<()> { .take(y_size) .collect::>(); loop { - let x = rng.gen_range(0..x_size); - let y = rng.gen_range(0..y_size); + let x = rng.random_range(0..x_size); + let y = rng.random_range(0..y_size); let c = palette.pick(&mut rng); frame[y][x] = c; diff --git a/src/bin/colorcode/main.rs b/src/bin/colorcode/main.rs index d2b9392..1be1a2b 100644 --- a/src/bin/colorcode/main.rs +++ b/src/bin/colorcode/main.rs @@ -5,7 +5,7 @@ use std::io::Write; use std::thread::sleep; use std::time::Duration; -use rand::thread_rng; +use rand::rng; use rand::Rng; use lowdim::bb2d; @@ -137,7 +137,7 @@ const E12: &[[Ring; 2]; 12] = &[ ]; fn random_element<'a, T, R: Rng>(elements: &'a [T], rng: &mut R) -> &'a T { - let i = rng.gen_range(0..elements.len()); + let i = rng.random_range(0..elements.len()); &elements[i] } @@ -154,7 +154,7 @@ fn main() -> Result<()> { }; eprintln!("screen size {}x{}, arg {}", x_size, y_size, arg); - let mut rng = thread_rng(); + let mut rng = rng(); let frame_size = x_size * y_size * COLORS; @@ -226,11 +226,11 @@ fn main() -> Result<()> { loop { if t == 0 { // Pick a new resistor. - if rng.gen::() < p_pruefungsfragen { + if rng.random::() < p_pruefungsfragen { r = random_element(&pruefungsfragen, &mut rng).clone(); body_color = carbon_body_color; } else { - let is_five_ring = rng.gen::() < 0.5; + let is_five_ring = rng.random::() < 0.5; body_color = if is_five_ring { // A turquise blue metal film resistor. diff --git a/src/bin/dualmaze/main.rs b/src/bin/dualmaze/main.rs index 9923ffa..068ccd2 100644 --- a/src/bin/dualmaze/main.rs +++ b/src/bin/dualmaze/main.rs @@ -9,7 +9,7 @@ use std::time::Duration; use chrono::Local; use chrono::Timelike; -use rand::thread_rng; +use rand::rng; use rand::Rng; use lowdim::bb2d; @@ -235,7 +235,7 @@ where open.push(Move { from, dir, - prio: prio * 100 + rng.gen_range(0..1000), + prio: prio * 100 + rng.random_range(0..1000), }); } } @@ -255,7 +255,7 @@ fn main() -> std::io::Result<()> { }; eprintln!("screen size {}x{}, arg {}", x_size, y_size, arg); - let mut rng = thread_rng(); + let mut rng = rng(); let t_frame = 0.040; // s let delay = Duration::new(0, (1_000_000_000.0 * t_frame) as u32); diff --git a/src/bin/life/main.rs b/src/bin/life/main.rs index 56034b6..fa0709f 100644 --- a/src/bin/life/main.rs +++ b/src/bin/life/main.rs @@ -4,7 +4,7 @@ use std::io::Write; use std::thread::sleep; use std::time::Duration; -use rand::thread_rng; +use rand::rng; use rand::Rng; use lowdim::bb2d; @@ -75,7 +75,7 @@ fn main() -> std::io::Result<()> { }; eprintln!("screen size {}x{}, arg {}", x_size, y_size, arg); - let mut rng = thread_rng(); + let mut rng = rng(); let bbox = bb2d(0..x_size as i64, 0..y_size as i64); let p_alive_init = 0.125; @@ -83,7 +83,7 @@ fn main() -> std::io::Result<()> { let mut board = Board::with(bbox, |_p| { // Initialize board randomly. - let r = rng.gen::(); + let r = rng.random::(); if r < p_alive_init { Square::Alive } else { @@ -110,7 +110,7 @@ fn main() -> std::io::Result<()> { } else { if p.y() < bbox.y_min() || p.y() > bbox.y_max() { // The invisible long edge is filled randomly. - let r = rng.gen::(); + let r = rng.random::(); if r < p_alive_edge { Square::Alive } else { diff --git a/src/bin/lorenz/main.rs b/src/bin/lorenz/main.rs index 3538368..9007ea7 100644 --- a/src/bin/lorenz/main.rs +++ b/src/bin/lorenz/main.rs @@ -5,7 +5,7 @@ use std::iter::repeat; use std::thread::sleep; use std::time::Duration; -use rand::thread_rng; +use rand::rng; use rand::Rng; use pixelfoo_apps::color::Color; @@ -35,7 +35,7 @@ fn main() -> std::io::Result<()> { }; eprintln!("screen size {}x{}, arg {}", x_size, y_size, arg); - let mut rng = thread_rng(); + let mut rng = rng(); let t_frame = 0.040; // s let delay = Duration::new(0, (1_000_000_000.0 * t_frame) as u32); @@ -65,7 +65,7 @@ fn main() -> std::io::Result<()> { let b = 27.0; let c = 8.0 / 3.0; - let mut x = rng.gen::() - 0.5; + let mut x = rng.random::() - 0.5; let mut y = 0.0; let mut z = zc; diff --git a/src/bin/matrix-code/main.rs b/src/bin/matrix-code/main.rs index e9fc644..b57b9f6 100644 --- a/src/bin/matrix-code/main.rs +++ b/src/bin/matrix-code/main.rs @@ -12,7 +12,7 @@ use std::thread::sleep; use std::time::Duration; use std::time::Instant; -use rand::thread_rng; +use rand::rng; use rand::Rng; use lowdim::bb2d; @@ -75,11 +75,11 @@ impl RunningState { self.t += 1; let y = usize::try_from(self.head_y()).unwrap(); if y >= self.brightnesses.len() { - self.brightnesses.push(0.5 + 0.5 * rng.gen::()); + self.brightnesses.push(0.5 + 0.5 * rng.random::()); } - if rng.gen::() < 0.2 { - let y = rng.gen_range(0..self.brightnesses.len()); - self.brightnesses[y] = 0.5 + 0.5 * rng.gen::(); + if rng.random::() < 0.2 { + let y = rng.random_range(0..self.brightnesses.len()); + self.brightnesses[y] = 0.5 + 0.5 * rng.random::(); } } fn head_y(&self) -> i64 { @@ -198,7 +198,7 @@ fn main() -> Result<(), Box> { }; eprintln!("screen size {}x{}, arg {}", x_size, y_size, arg); - let mut rng = thread_rng(); + let mut rng = rng(); let bbox = bb2d(0..x_size as i64, 0..y_size as i64); let frame_duration = Duration::from_millis(50); @@ -226,16 +226,16 @@ fn main() -> Result<(), Box> { // Update the animation for animation in &mut animations { if animation.is_idle() { - if rng.gen::() < p_new_animation { + if rng.random::() < p_new_animation { let frames_per_step = { - if rng.gen::() < p_slow_animation { + if rng.random::() < p_slow_animation { frames_per_step_slow } else { frames_per_step_normal } }; if frame_count % frames_per_step == 0 { - let size = rng.gen_range(15..=30); + let size = rng.random_range(15..=30); animation.start(frames_per_step, size, 15, i64::try_from(y_size)?); } } diff --git a/src/bin/maze/main.rs b/src/bin/maze/main.rs index 37483f7..1414f7d 100644 --- a/src/bin/maze/main.rs +++ b/src/bin/maze/main.rs @@ -9,7 +9,7 @@ use std::time::Duration; use chrono::Local; use chrono::Timelike; -use rand::thread_rng; +use rand::rng; use rand::Rng; use lowdim::bb2d; @@ -234,7 +234,7 @@ where open.push(Move { from, dir, - prio: prio * 100 + rng.gen_range(0..1000), + prio: prio * 100 + rng.random_range(0..1000), }); } } @@ -254,7 +254,7 @@ fn main() -> std::io::Result<()> { }; eprintln!("screen size {}x{}, arg {}", x_size, y_size, arg); - let mut rng = thread_rng(); + let mut rng = rng(); let t_frame = 0.040; // s let delay = Duration::new(0, (1_000_000_000.0 * t_frame) as u32); diff --git a/src/bin/predprey/main.rs b/src/bin/predprey/main.rs index 6409318..59624d7 100644 --- a/src/bin/predprey/main.rs +++ b/src/bin/predprey/main.rs @@ -4,7 +4,7 @@ use std::io::Write; use std::thread::sleep; use std::time::Duration; -use rand::thread_rng; +use rand::rng; use rand::Rng; use lowdim::bb2d; @@ -83,14 +83,14 @@ fn main() -> std::io::Result<()> { }; eprintln!("screen size {}x{}, arg {}", x_size, y_size, arg); - let mut rng = thread_rng(); + let mut rng = rng(); let bbox = bb2d(0..x_size, 0..y_size); let p_empty = 0.25; let p_grass = 0.25; let p_rabbit = 0.25; let mut board = Board::new(bbox, || { - let p = rng.gen::(); + let p = rng.random::(); if p < p_empty { Square::Empty } else if p < p_empty + p_grass { @@ -114,7 +114,9 @@ fn main() -> std::io::Result<()> { loop { for _ in 0..arg { - let pos = bbox.random_point(&mut rng); + let x = rng.random_range(bbox.x_range()); + let y = rng.random_range(bbox.y_range()); + let pos = p2d(x, y); let sq = board.get(pos); let dx = (pos.x() as f64 - x_mid as f64) / r as f64; let dy = (pos.y() as f64 - y_mid as f64) / r as f64; @@ -125,7 +127,7 @@ fn main() -> std::io::Result<()> { Square::Rabbit => p0, Square::Fox => 0.8 * p0, }; - let new_sq = if rng.gen::() < p_survive { + let new_sq = if rng.random::() < p_survive { sq } else { Square::Empty