- Adopt newest version of rand crate
- Rework fill_bytes() method to use full generated values
--- 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"
--- 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()]);
+ }
}
}
--- 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"
--- 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();