From 74eecc82f72c0974c7a5b6f567833f80b53335e7 Mon Sep 17 00:00:00 2001 From: salmonik Date: Sat, 11 Jul 2026 01:41:45 +0200 Subject: switch to rust 2024 --- Cargo.lock | 45 ++++++++++++++++++++++++++++++--------------- Cargo.toml | 4 ++-- src/game.rs | 42 +++++++++++++++++++++--------------------- src/texture.rs | 4 ++-- 4 files changed, 55 insertions(+), 40 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1d07e99..d3682b2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -177,13 +177,14 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.17" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", "libc", - "wasi", + "r-efi 5.3.0", + "wasip2", ] [[package]] @@ -194,7 +195,7 @@ checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", "libc", - "r-efi", + "r-efi 6.0.0", ] [[package]] @@ -375,6 +376,12 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + [[package]] name = "r-efi" version = "6.0.0" @@ -383,20 +390,19 @@ checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" [[package]] name = "rand" -version = "0.8.6" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" +checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" dependencies = [ - "libc", "rand_chacha", "rand_core", ] [[package]] name = "rand_chacha" -version = "0.3.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ "ppv-lite86", "rand_core", @@ -404,11 +410,11 @@ dependencies = [ [[package]] name = "rand_core" -version = "0.6.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" dependencies = [ - "getrandom 0.2.17", + "getrandom 0.3.4", ] [[package]] @@ -559,10 +565,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29" [[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" +name = "wasip2" +version = "1.0.4+wasi-0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" +checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" +dependencies = [ + "wit-bindgen", +] [[package]] name = "wasm-bindgen" @@ -739,6 +748,12 @@ dependencies = [ "windows-link", ] +[[package]] +name = "wit-bindgen" +version = "0.57.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" + [[package]] name = "x11-dl" version = "2.21.0" diff --git a/Cargo.toml b/Cargo.toml index b2d135e..2be2d18 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,8 +1,8 @@ [package] name = "doom" version = "0.1.0" -edition = "2021" +edition = "2024" [dependencies] minifb = "0.27" -rand = "0.8" +rand = "0.9" diff --git a/src/game.rs b/src/game.rs index ca30207..a17526b 100644 --- a/src/game.rs +++ b/src/game.rs @@ -91,16 +91,16 @@ impl Maze { break; } - let rw = rng.gen_range(3usize..=6); - let rh = rng.gen_range(3usize..=6); + let rw = rng.random_range(3usize..=6); + let rh = rng.random_range(3usize..=6); // Keep rooms away from the outer border by at least 2 cells // so corridors have room to connect to them. if rw + 2 >= w || rh + 2 >= h { continue; } - let rx = rng.gen_range(2..(w - rw - 2)); - let ry = rng.gen_range(2..(h - rh - 2)); + let rx = rng.random_range(2..(w - rw - 2)); + let ry = rng.random_range(2..(h - rh - 2)); // Check overlap with 1-cell buffer. let mut overlaps = false; @@ -193,7 +193,7 @@ impl Maze { edges.sort_by_key(|e| e.0); // Pick from the nearest few for variety. - let pick = rng.gen_range(0..(edges.len().min(3))); + let pick = rng.random_range(0..(edges.len().min(3))); let (_dist, from, to) = edges[pick]; carve_corridor( @@ -211,8 +211,8 @@ impl Maze { // ---- Phase 3: add a few extra connections for loops ---- let extra_connections = (rooms.len() / 5).max(1); for _ in 0..extra_connections { - let a = rng.gen_range(0..rooms.len()); - let b = rng.gen_range(0..rooms.len()); + let a = rng.random_range(0..rooms.len()); + let b = rng.random_range(0..rooms.len()); if a != b { let dist = manhattan( rooms[a].cx as isize, @@ -404,9 +404,9 @@ fn carve_corridor( let tx = x2 as isize; let ty = y2 as isize; - let wide = rng.gen_bool(0.3); // 30% chance of 2-wide corridor + let wide = rng.random_bool(0.3); // 30% chance of 2-wide corridor - if rng.gen_bool(0.5) { + if rng.random_bool(0.5) { // Horizontal, then vertical. carve_line(cells, grid_w, cx, cy, tx, cy, wide); carve_line(cells, grid_w, tx, cy, tx, ty, wide); @@ -493,11 +493,11 @@ fn place_entities( next += 1; let (hp_range, damage) = enemy_stats_for_depth(depth); - let max_hp = rng.gen_range(hp_range.0..=hp_range.1); + let max_hp = rng.random_range(hp_range.0..=hp_range.1); let dmg = if damage.0 == damage.1 { damage.0 } else { - rng.gen_range(damage.0..=damage.1) + rng.random_range(damage.0..=damage.1) }; entities[y * w + x] = Some(Entity::Enemy { @@ -508,7 +508,7 @@ fn place_entities( } // --- hallucinations (1-2 per level) --- - let hall_count = rng.gen_range(1..=2); + let hall_count = rng.random_range(1..=2); for _ in 0..hall_count { if next >= candidates.len() { break; @@ -544,7 +544,7 @@ fn place_entities( } // --- hallucinated pickups --- - let fake_count = if depth >= 3 { rng.gen_range(1..=2) } else { 0 }; + let fake_count = if depth >= 3 { rng.random_range(1..=2) } else { 0 }; for _ in 0..fake_count { if next >= candidates.len() { break; @@ -567,10 +567,10 @@ fn enemy_stats_for_depth(depth: u64) -> ((u32, u32), (u32, u32)) { } fn random_pickup_type(rng: &mut impl Rng, include_weapon: bool) -> PickupType { - let roll = rng.gen_range(0..100); + let roll = rng.random_range(0..100); if include_weapon && roll < 15 { PickupType::Weapon { - base_damage: rng.gen_range(2..=4), + base_damage: rng.random_range(2..=4), } } else if roll < 45 { PickupType::Food @@ -584,7 +584,7 @@ fn random_pickup_type(rng: &mut impl Rng, include_weapon: bool) -> PickupType { /// Fisher-Yates shuffle on a slice. fn shuffle_slice(slice: &mut [T], rng: &mut impl Rng) { for i in (1..slice.len()).rev() { - let j = rng.gen_range(0..=i); + let j = rng.random_range(0..=i); slice.swap(i, j); } } @@ -681,7 +681,7 @@ fn smoothstep(t: f64) -> f64 { impl Game { pub fn new() -> Self { - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); let depth = 1; let (maze, (start_x, start_y)) = Maze::generate(depth, &mut rng); let player = Player::new(start_x, start_y, 0.0); // facing east @@ -943,7 +943,7 @@ impl Game { /// Roll bonus damage: 30% chance for +1, repeat on success. fn roll_bonus_damage(&self, rng: &mut impl Rng) -> u32 { let mut bonus = 0u32; - while rng.gen_bool(0.30) { + while rng.random_bool(0.30) { bonus += 1; } bonus @@ -963,7 +963,7 @@ impl Game { match entity { Some(Entity::Enemy { hp, damage, .. }) => { - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); let bonus = self.roll_bonus_damage(&mut rng); let total_dmg = self.weapon_base_damage + bonus; let new_hp = hp.saturating_sub(total_dmg); @@ -974,7 +974,7 @@ impl Game { self.set_message(&format!("You slay the enemy! ({} dmg)", total_dmg)); } else { self.maze.entity_at_mut(fx, fy).map(|e| { - if let Entity::Enemy { hp: ref mut h, .. } = e { + if let Entity::Enemy { hp: h, .. } = e { *h = new_hp; } }); @@ -1002,7 +1002,7 @@ impl Game { self.set_message("The hallucination dissipates."); } else { self.maze.entity_at_mut(fx, fy).map(|e| { - if let Entity::Hallucination { hp: ref mut h, .. } = e { + if let Entity::Hallucination { hp: h, .. } = e { *h = new_hp; } }); diff --git a/src/texture.rs b/src/texture.rs index e5720c0..4df38b8 100644 --- a/src/texture.rs +++ b/src/texture.rs @@ -14,7 +14,7 @@ fn hash(x: u32, y: u32, seed: u64) -> u64 { /// Brown cracked wall texture — 64×64, brick pattern with mortar lines and fissures. pub fn generate_wall_texture(rng: &mut impl Rng) -> Vec { - let seed = rng.gen::(); + let seed = rng.random::(); let mut tex = vec![0u32; TEX_SIZE * TEX_SIZE]; for y in 0..TEX_SIZE { @@ -105,7 +105,7 @@ pub fn generate_exit_texture(rng: &mut impl Rng) -> Vec { /// Gray stone-tile floor — 64×64, checkerboard with grout and subtle colour tint. pub fn generate_floor_texture(rng: &mut impl Rng) -> Vec { - let seed = rng.gen::(); + let seed = rng.random::(); let mut tex = vec![0u32; TEX_SIZE * TEX_SIZE]; for y in 0..TEX_SIZE { -- cgit v1.2.3