# HG changeset patch # User unC0Rr # Date 1738057066 -3600 # Node ID a4cbc692643939cbf30ed3912b79909ab193041d # Parent fba762376a0779328a02e2ca98e3d3f7888c0429 - Adopt newest version of rand crate - Rework fill_bytes() method to use full generated values diff -r fba762376a07 -r a4cbc6926439 rust/lfprng/Cargo.toml --- a/rust/lfprng/Cargo.toml Mon Jan 27 22:22:10 2025 +0100 +++ b/rust/lfprng/Cargo.toml Tue Jan 28 10:37:46 2025 +0100 @@ -5,4 +5,4 @@ edition = "2018" [dependencies] -rand = "0.8" +rand = "0.9" diff -r fba762376a07 -r a4cbc6926439 rust/lfprng/src/lib.rs --- a/rust/lfprng/src/lib.rs Mon Jan 27 22:22:10 2025 +0100 +++ b/rust/lfprng/src/lib.rs Tue Jan 28 10:37:46 2025 +0100 @@ -1,4 +1,4 @@ -use rand::{Error, RngCore, SeedableRng}; +use rand::{RngCore, SeedableRng}; pub struct LaggedFibonacciPRNG { circular_buffer: [u32; 64], @@ -65,19 +65,29 @@ impl RngCore for LaggedFibonacciPRNG { fn next_u32(&mut self) -> u32 { - self.get_next().wrapping_add(self.get_next()) + self.get_next(); + self.get_next() } fn next_u64(&mut self) -> u64 { - ((self.next_u32() as u64) << 32) | self.next_u32() as u64 + ((self.get_next() as u64) << 32) | self.get_next() as u64 } fn fill_bytes(&mut self, dest: &mut [u8]) { - dest.iter_mut().for_each(|x| *x = self.next_u32() as u8); - } + let mut chunks = dest.chunks_exact_mut(4); - fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), Error> { - Ok(self.fill_bytes(dest)) + for chunk in chunks.by_ref() { + let value = self.get_next(); + let bytes = value.to_le_bytes(); + chunk.copy_from_slice(&bytes); + } + + let remainder = chunks.into_remainder(); + if !remainder.is_empty() { + let value = self.next_u32(); + let bytes = value.to_le_bytes(); + remainder.copy_from_slice(&bytes[..remainder.len()]); + } } } diff -r fba762376a07 -r a4cbc6926439 rust/mapgen/Cargo.toml --- a/rust/mapgen/Cargo.toml Mon Jan 27 22:22:10 2025 +0100 +++ b/rust/mapgen/Cargo.toml Tue Jan 28 10:37:46 2025 +0100 @@ -10,7 +10,7 @@ landgen = { path = "../landgen" } integral-geometry = { path = "../integral-geometry" } -rand = "0.8" +rand = "0.9" serde = "1.0" serde_yaml = "0.9" serde_derive = "1.0" diff -r fba762376a07 -r a4cbc6926439 rust/mapgen/src/lib.rs --- a/rust/mapgen/src/lib.rs Mon Jan 27 22:22:10 2025 +0100 +++ b/rust/mapgen/src/lib.rs Tue Jan 28 10:37:46 2025 +0100 @@ -22,6 +22,7 @@ use rand::{seq::SliceRandom, Rng}; use std::{borrow::Borrow, collections::hash_map::HashMap}; +use rand::prelude::IndexedRandom; use vec2d::Vec2D; #[derive(PartialEq, Eq, Hash, Clone, Debug)] @@ -168,7 +169,7 @@ .map(|(size, indices)| { ( TemplateType(size), - indices.iter().map(|i| (&templates[*i]).to_template(&desc.tiles, &desc.edges)).collect(), + indices.iter().map(|i| templates[*i].to_template(&desc.tiles, &desc.edges)).collect(), ) }) .collect();