diff --git a/Cargo.lock b/Cargo.lock index 325cbcd..2e7c469 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -32,6 +32,12 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4aa90d7ce82d4be67b64039a3d588d38dbcc6736577de4a847025ce5b0c468d1" +[[package]] +name = "anes" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" + [[package]] name = "anstream" version = "0.6.18" @@ -111,17 +117,6 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi", - "libc", - "winapi", -] - [[package]] name = "autocfg" version = "1.4.0" @@ -175,12 +170,6 @@ dependencies = [ "backtrace", ] -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - [[package]] name = "base64" version = "0.22.1" @@ -289,9 +278,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.2.10" +version = "1.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13208fcbb66eaeffe09b99fffbe1af420f00a7b35aa99ad683dfc1aa76145229" +checksum = "755717a7de9ec452bf7f3f1a3099085deabd7f2962b861dae91ecd7a365903d2" dependencies = [ "jobserver", "libc", @@ -315,21 +304,37 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] -name = "clap" -version = "2.34.0" +name = "ciborium" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" +checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" dependencies = [ - "bitflags 1.3.2", - "textwrap 0.11.0", - "unicode-width", + "ciborium-io", + "ciborium-ll", + "serde", +] + +[[package]] +name = "ciborium-io" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" + +[[package]] +name = "ciborium-ll" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" +dependencies = [ + "ciborium-io", + "half", ] [[package]] name = "clap" -version = "4.5.27" +version = "4.5.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "769b0145982b4b48713e01ec42d61614425f27b7058bda7180a3a41f30104796" +checksum = "3e77c3243bd94243c03672cb5154667347c457ca271254724f9f393aee1c05ff" dependencies = [ "clap_builder", "clap_derive", @@ -349,9 +354,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.24" +version = "4.5.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54b755194d6389280185988721fffba69495eed5ee9feeee9a599b53db80318c" +checksum = "bf4ced95c6f4a675af3da73304b9ac4ed991640c36374e4b46795c49e17cf1ed" dependencies = [ "heck", "proc-macro2", @@ -388,24 +393,24 @@ dependencies = [ [[package]] name = "criterion" -version = "0.3.6" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b01d6de93b2b6c65e17c634a26653a29d107b3c98c607c765bf38d041531cd8f" +checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f" dependencies = [ - "atty", + "anes", "cast", - "clap 2.34.0", + "ciborium", + "clap", "criterion-plot", - "csv", + "is-terminal", "itertools 0.10.5", - "lazy_static", "num-traits", + "once_cell", "oorandom", "plotters", "rayon", "regex", "serde", - "serde_cbor", "serde_derive", "serde_json", "tinytemplate", @@ -414,9 +419,9 @@ dependencies = [ [[package]] name = "criterion-plot" -version = "0.4.5" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2673cc8207403546f45f5fd319a974b1e6983ad1a3ee7e6041650013be041876" +checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" dependencies = [ "cast", "itertools 0.10.5", @@ -453,27 +458,6 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" -[[package]] -name = "csv" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acdc4883a9c96732e4733212c01447ebd805833b7275a73ca3ee080fd77afdaf" -dependencies = [ - "csv-core", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "csv-core" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70" -dependencies = [ - "memchr", -] - [[package]] name = "darling" version = "0.20.10" @@ -538,7 +522,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f83197f59927b46c04a183a619b7c29df34e63e63c7869320862268c0ef687e0" dependencies = [ "bit_field", - "half 2.4.1", + "half", "lebe", "miniz_oxide", "rayon-core", @@ -550,9 +534,9 @@ dependencies = [ name = "factorio-blueprint" version = "0.1.0" dependencies = [ - "base64 0.22.1", + "base64", "bon", - "clap 4.5.27", + "clap", "factorio-core", "flate2", "serde", @@ -563,12 +547,12 @@ dependencies = [ name = "factorio-blueprint-generator" version = "0.1.0" dependencies = [ - "clap 4.5.27", + "clap", "factorio-blueprint", "factorio-core", "factorio-layout", "factorio-pathfinding", - "rand", + "rand 0.9.0", "serde", "serde_json", "serde_yaml", @@ -578,12 +562,12 @@ dependencies = [ name = "factorio-core" version = "0.1.0" dependencies = [ - "clap 4.5.27", + "clap", "criterion", "image", "proptest", "proptest-derive", - "rand", + "rand 0.9.0", "serde", "termcolor", ] @@ -592,12 +576,12 @@ dependencies = [ name = "factorio-layout" version = "0.1.0" dependencies = [ - "clap 4.5.27", + "clap", "factorio-core", "factorio-pathfinding", "image", "miette", - "rand", + "rand 0.9.0", "serde", "serde_json", "serde_yaml", @@ -607,9 +591,9 @@ dependencies = [ name = "factorio-pathfinding" version = "0.1.0" dependencies = [ - "base64 0.21.7", + "base64", "bon", - "clap 4.5.27", + "clap", "criterion", "factorio-blueprint", "factorio-core", @@ -694,12 +678,6 @@ version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" -[[package]] -name = "half" -version = "1.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b43ede17f21864e81be2fa654110bf1e793774238d86ef8555c37e6519c0403" - [[package]] name = "half" version = "2.4.1" @@ -724,12 +702,9 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" -version = "0.1.19" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" [[package]] name = "ident_case" @@ -797,6 +772,17 @@ dependencies = [ "syn", ] +[[package]] +name = "is-terminal" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e19b23d53f35ce9f56aebc7d1bb4e6ac1e9c0db7ac85c8d1760c04379edced37" +dependencies = [ + "hermit-abi", + "libc", + "windows-sys", +] + [[package]] name = "is_ci" version = "1.2.0" @@ -925,9 +911,9 @@ checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "miette" -version = "7.4.0" +version = "7.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317f146e2eb7021892722af37cf1b971f0a70c8406f487e24952667616192c64" +checksum = "1a955165f87b37fd1862df2a59547ac542c77ef6d17c666f619d1ad22dd89484" dependencies = [ "backtrace", "backtrace-ext", @@ -938,16 +924,16 @@ dependencies = [ "supports-hyperlinks", "supports-unicode", "terminal_size", - "textwrap 0.16.1", + "textwrap", "thiserror", "unicode-width", ] [[package]] name = "miette-derive" -version = "7.4.0" +version = "7.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23c9b935fbe1d6cbd1dac857b54a688145e2d93f48db36010514d0f612d0ad67" +checksum = "bf45bf44ab49be92fd1227a3be6fc6f617f1a337c06af54981048574d8783147" dependencies = [ "proc-macro2", "quote", @@ -1128,7 +1114,7 @@ version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" dependencies = [ - "zerocopy", + "zerocopy 0.7.35", ] [[package]] @@ -1180,8 +1166,8 @@ dependencies = [ "bitflags 2.8.0", "lazy_static", "num-traits", - "rand", - "rand_chacha", + "rand 0.8.5", + "rand_chacha 0.3.1", "rand_xorshift", "regex-syntax", "rusty-fork", @@ -1237,8 +1223,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.0", + "zerocopy 0.8.17", ] [[package]] @@ -1248,7 +1245,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.0", ] [[package]] @@ -1260,13 +1267,23 @@ dependencies = [ "getrandom 0.2.15", ] +[[package]] +name = "rand_core" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b08f3c9802962f7e1b25113931d94f43ed9725bebc59db9d0c3e9a23b67e15ff" +dependencies = [ + "getrandom 0.3.1", + "zerocopy 0.8.17", +] + [[package]] name = "rand_xorshift" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" dependencies = [ - "rand_core", + "rand_core 0.6.4", ] [[package]] @@ -1295,8 +1312,8 @@ dependencies = [ "once_cell", "paste", "profiling", - "rand", - "rand_chacha", + "rand 0.8.5", + "rand_chacha 0.3.1", "simd_helpers", "system-deps", "thiserror", @@ -1435,16 +1452,6 @@ dependencies = [ "serde_derive", ] -[[package]] -name = "serde_cbor" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5" -dependencies = [ - "half 1.8.3", - "serde", -] - [[package]] name = "serde_derive" version = "1.0.217" @@ -1546,9 +1553,9 @@ checksum = "b7401a30af6cb5818bb64852270bb722533397edcfc7344954a38f420819ece2" [[package]] name = "syn" -version = "2.0.96" +version = "2.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5d0adab1ae378d7f53bdebc67a39f1f151407ef230f0ce2883572f5d8985c80" +checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" dependencies = [ "proc-macro2", "quote", @@ -1607,15 +1614,6 @@ dependencies = [ "windows-sys", ] -[[package]] -name = "textwrap" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" -dependencies = [ - "unicode-width", -] - [[package]] name = "textwrap" version = "0.16.1" @@ -1669,9 +1667,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" dependencies = [ "serde", "serde_spanned", @@ -1690,9 +1688,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.22" +version = "0.22.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +checksum = "02a8b472d1a3d7c18e2d61a489aee3453fd9031c33e4f55bd533f4a7adca1bee" dependencies = [ "indexmap", "serde", @@ -1756,9 +1754,9 @@ checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" [[package]] name = "wait-timeout" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11" dependencies = [ "libc", ] @@ -1862,22 +1860,6 @@ version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082" -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - [[package]] name = "winapi-util" version = "0.1.9" @@ -1887,12 +1869,6 @@ dependencies = [ "windows-sys", ] -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - [[package]] name = "windows-sys" version = "0.59.0" @@ -1968,9 +1944,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.6.25" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad699df48212c6cc6eb4435f35500ac6fd3b9913324f938aea302022ce19d310" +checksum = "86e376c75f4f43f44db463cf729e0d3acbf954d13e22c51e26e4c264b4ab545f" dependencies = [ "memchr", ] @@ -1991,7 +1967,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ "byteorder", - "zerocopy-derive", + "zerocopy-derive 0.7.35", +] + +[[package]] +name = "zerocopy" +version = "0.8.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa91407dacce3a68c56de03abe2760159582b846c6a4acd2f456618087f12713" +dependencies = [ + "zerocopy-derive 0.8.17", ] [[package]] @@ -2005,6 +1990,17 @@ dependencies = [ "syn", ] +[[package]] +name = "zerocopy-derive" +version = "0.8.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06718a168365cad3d5ff0bb133aad346959a2074bd4a85c121255a11304a8626" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "zune-core" version = "0.4.12" diff --git a/factorio-blueprint-generator/Cargo.toml b/factorio-blueprint-generator/Cargo.toml index 6bac0b7..de77e98 100644 --- a/factorio-blueprint-generator/Cargo.toml +++ b/factorio-blueprint-generator/Cargo.toml @@ -12,4 +12,4 @@ serde = { version = "1.0.192", features = ["derive"] } serde_json = "1.0.135" serde_yaml = "0.9.34" clap = { version = "4.5.26", features = ["derive"] } -rand = { version = "0.8.5", features = ["small_rng"] } +rand = { version = "0.9.0", features = ["small_rng"] } diff --git a/factorio-core/Cargo.toml b/factorio-core/Cargo.toml index d3e63f8..f70eea6 100644 --- a/factorio-core/Cargo.toml +++ b/factorio-core/Cargo.toml @@ -5,13 +5,13 @@ edition = "2024" [dev-dependencies] -criterion = "0.3" +criterion = "0.5" [dependencies] clap = { version = "4.5.26", features = ["derive"] } image = "0.25.5" proptest = "1.5.0" proptest-derive = "0.5.0" -rand = "0.8.5" +rand = "0.9.0" serde = { version = "1.0.217", features = ["derive"] } termcolor = "1.4.1" diff --git a/factorio-core/src/direction.rs b/factorio-core/src/direction.rs index bef4b06..80bf655 100644 --- a/factorio-core/src/direction.rs +++ b/factorio-core/src/direction.rs @@ -86,7 +86,7 @@ impl Direction { } } -impl rand::prelude::Distribution for rand::distributions::Standard { +impl rand::prelude::Distribution for rand::distr::StandardUniform { fn sample(&self, rng: &mut R) -> Direction { let a = [ Direction::Up, @@ -94,7 +94,7 @@ impl rand::prelude::Distribution for rand::distributions::Standard { Direction::Down, Direction::Left, ]; - let r = rng.gen_range(0..4); + let r = rng.random_range(0..4); a[r] } } diff --git a/factorio-layout/Cargo.toml b/factorio-layout/Cargo.toml index 9ab3d09..3b9ad4e 100644 --- a/factorio-layout/Cargo.toml +++ b/factorio-layout/Cargo.toml @@ -6,7 +6,7 @@ edition = "2024" [dependencies] factorio-core = { path = "../factorio-core" } factorio-pathfinding = { path = "../factorio-pathfinding" } -rand = { version = "0.8.5", features = ["small_rng"] } +rand = { version = "0.9.0", features = ["small_rng"] } serde = { version = "1.0.192", features = ["derive"] } image = "0.25.2" serde_json = "1.0.108" diff --git a/factorio-layout/src/layout.rs b/factorio-layout/src/layout.rs index 9dc2109..9ea4625 100644 --- a/factorio-layout/src/layout.rs +++ b/factorio-layout/src/layout.rs @@ -4,7 +4,10 @@ use factorio_core::{ visualize::{Color, Symbol, Visualization, Visualize, image_grid}, }; use factorio_pathfinding::belt_finding::{self, conflict_avoidance::ConflictAvoidance}; -use rand::{Rng, seq::SliceRandom}; +use rand::{ + Rng, + seq::{IndexedRandom, SliceRandom}, +}; use serde::{Deserialize, Serialize}; use std::{sync::atomic::AtomicU32, time::Instant}; @@ -382,24 +385,24 @@ impl Layout<'_> { let b = &problem.blocks[blocks.len()]; for _ in 0..1000 { - let dir = rng.r#gen::(); + let dir = rng.random::(); let pos = match dir { Direction::Up => Position::new( - rng.gen_range(0..=(problem.size.x - b.size.x)), - rng.gen_range(0..=(problem.size.y - b.size.y)), + rng.random_range(0..=(problem.size.x - b.size.x)), + rng.random_range(0..=(problem.size.y - b.size.y)), ), Direction::Right => Position::new( - rng.gen_range((b.size.y - 1)..problem.size.x), - rng.gen_range(0..=(problem.size.y - b.size.x)), + rng.random_range((b.size.y - 1)..problem.size.x), + rng.random_range(0..=(problem.size.y - b.size.x)), ), Direction::Down => Position::new( - rng.gen_range((b.size.x - 1)..problem.size.x), - rng.gen_range((b.size.y - 1)..problem.size.y), + rng.random_range((b.size.x - 1)..problem.size.x), + rng.random_range((b.size.y - 1)..problem.size.y), ), Direction::Left => Position::new( - rng.gen_range(0..=(problem.size.x - b.size.y)), - rng.gen_range((b.size.x - 1)..problem.size.y), + rng.random_range(0..=(problem.size.x - b.size.y)), + rng.random_range((b.size.x - 1)..problem.size.y), ), }; @@ -460,7 +463,7 @@ impl Layout<'_> { loop { let p = r.choose_weighted(rng, |i| i.1).unwrap(); - if p.0(&mut s, rng) && rng.gen_bool(0.5) { + if p.0(&mut s, rng) && rng.random_bool(0.5) { break; } } @@ -470,28 +473,28 @@ impl Layout<'_> { } fn mutate_replace(layout: &mut Layout, rng: &mut R) -> bool { - let i = rng.gen_range(0..layout.blocks.len()); + let i = rng.random_range(0..layout.blocks.len()); - let dir = rng.r#gen::(); + let dir = rng.random::(); let b = &layout.problem.blocks[i]; let pos = match dir { Direction::Up => Position::new( - rng.gen_range(0..=(layout.problem.size.x - b.size.x)), - rng.gen_range(0..=(layout.problem.size.y - b.size.y)), + rng.random_range(0..=(layout.problem.size.x - b.size.x)), + rng.random_range(0..=(layout.problem.size.y - b.size.y)), ), Direction::Right => Position::new( - rng.gen_range((b.size.y - 1)..layout.problem.size.x), - rng.gen_range(0..=(layout.problem.size.y - b.size.x)), + rng.random_range((b.size.y - 1)..layout.problem.size.x), + rng.random_range(0..=(layout.problem.size.y - b.size.x)), ), Direction::Down => Position::new( - rng.gen_range((b.size.x - 1)..layout.problem.size.x), - rng.gen_range((b.size.y - 1)..layout.problem.size.y), + rng.random_range((b.size.x - 1)..layout.problem.size.x), + rng.random_range((b.size.y - 1)..layout.problem.size.y), ), Direction::Left => Position::new( - rng.gen_range(0..=(layout.problem.size.x - b.size.y)), - rng.gen_range((b.size.x - 1)..layout.problem.size.y), + rng.random_range(0..=(layout.problem.size.x - b.size.y)), + rng.random_range((b.size.x - 1)..layout.problem.size.y), ), }; @@ -512,7 +515,7 @@ impl Layout<'_> { } fn mutate_flip(layout: &mut Layout, rng: &mut R) -> bool { - let i = rng.gen_range(0..layout.blocks.len()); + let i = rng.random_range(0..layout.blocks.len()); let b = &mut layout.blocks[i]; let block = &layout.problem.blocks[i]; @@ -530,8 +533,8 @@ impl Layout<'_> { } fn mutate_jiggle(layout: &mut Layout, rng: &mut R) -> bool { - let i = rng.gen_range(0..layout.blocks.len()); - let dir = rng.r#gen::(); + let i = rng.random_range(0..layout.blocks.len()); + let dir = rng.random::(); let step = [(1, 10), (2, 5), (3, 5)] .choose_weighted(rng, |i| i.1) .unwrap() diff --git a/factorio-layout/src/misc.rs b/factorio-layout/src/misc.rs index 7b2e998..c9c9f83 100644 --- a/factorio-layout/src/misc.rs +++ b/factorio-layout/src/misc.rs @@ -1,7 +1,10 @@ use crate::{LayoutInput, LayoutResult}; use factorio_core::prelude::*; use factorio_pathfinding::{Connection, examples::HashMapMap}; -use rand::{Rng, seq::SliceRandom}; +use rand::{ + Rng, + seq::{IndexedRandom, SliceRandom}, +}; pub fn initally_set_blocks( input: &LayoutInput, @@ -34,24 +37,24 @@ fn place_block( let b = &input.blocks[blocks.len()]; for _ in 0..retries { - let dir = rng.r#gen::(); + let dir = rng.random::(); let pos = match dir { Direction::Up => Position::new( - rng.gen_range(0..=(size.x - b.size.x)), - rng.gen_range(0..=(size.y - b.size.y)), + rng.random_range(0..=(size.x - b.size.x)), + rng.random_range(0..=(size.y - b.size.y)), ), Direction::Right => Position::new( - rng.gen_range((b.size.y - 1)..size.x), - rng.gen_range(0..=(size.y - b.size.x)), + rng.random_range((b.size.y - 1)..size.x), + rng.random_range(0..=(size.y - b.size.x)), ), Direction::Down => Position::new( - rng.gen_range((b.size.x - 1)..size.x), - rng.gen_range((b.size.y - 1)..size.y), + rng.random_range((b.size.x - 1)..size.x), + rng.random_range((b.size.y - 1)..size.y), ), Direction::Left => Position::new( - rng.gen_range(0..=(size.x - b.size.y)), - rng.gen_range((b.size.x - 1)..size.y), + rng.random_range(0..=(size.x - b.size.y)), + rng.random_range((b.size.x - 1)..size.y), ), }; @@ -148,7 +151,7 @@ pub fn mutate( loop { let p = r.choose_weighted(rng, |i| i.1).unwrap().0; - if p(input, output, &mut blocks, rng) && rng.gen_bool(0.5) { + if p(input, output, &mut blocks, rng) && rng.random_bool(0.5) { break; } } @@ -162,28 +165,28 @@ fn mutate_replace( rng: &mut R, ) -> bool { let _ = input; - let i = rng.gen_range(0..blocks.len()); + let i = rng.random_range(0..blocks.len()); let block = blocks[i]; - let dir = rng.r#gen::(); + let dir = rng.random::(); let size = output.size; let pos = match dir { Direction::Up => Position::new( - rng.gen_range(0..=(size.x - block.size().x)), - rng.gen_range(0..=(size.y - block.size().y)), + rng.random_range(0..=(size.x - block.size().x)), + rng.random_range(0..=(size.y - block.size().y)), ), Direction::Right => Position::new( - rng.gen_range((block.size().y - 1)..size.x), - rng.gen_range(0..=(size.y - block.size().x)), + rng.random_range((block.size().y - 1)..size.x), + rng.random_range(0..=(size.y - block.size().x)), ), Direction::Down => Position::new( - rng.gen_range((block.size().x - 1)..size.x), - rng.gen_range((block.size().y - 1)..size.y), + rng.random_range((block.size().x - 1)..size.x), + rng.random_range((block.size().y - 1)..size.y), ), Direction::Left => Position::new( - rng.gen_range(0..=(size.x - block.size().y)), - rng.gen_range((block.size().x - 1)..size.y), + rng.random_range(0..=(size.x - block.size().y)), + rng.random_range((block.size().x - 1)..size.y), ), }; @@ -210,7 +213,7 @@ fn mutate_flip( ) -> bool { let _ = output; let _ = input; - let i = rng.gen_range(0..blocks.len()); + let i = rng.random_range(0..blocks.len()); let block = blocks[i]; blocks[i] = Block::new( @@ -233,10 +236,10 @@ fn mutate_jiggle( rng: &mut R, ) -> bool { let _ = input; - let i = rng.gen_range(0..blocks.len()); + let i = rng.random_range(0..blocks.len()); let block = blocks[i]; - let dir = rng.r#gen::(); + let dir = rng.random::(); let step = [(1, 10), (2, 5), (3, 5)] .choose_weighted(rng, |i| i.1) .unwrap() diff --git a/factorio-pathfinding/Cargo.toml b/factorio-pathfinding/Cargo.toml index 243a788..a9566b1 100644 --- a/factorio-pathfinding/Cargo.toml +++ b/factorio-pathfinding/Cargo.toml @@ -7,7 +7,7 @@ edition = "2021" [dev-dependencies] -criterion = "0.3" +criterion = "0.5" [[bench]] name = "bruteforce" @@ -16,7 +16,7 @@ harness = false [dependencies] factorio-core = { path = "../factorio-core" } factorio-blueprint = { path = "../factorio-blueprint" } -base64 = "0.21.5" +base64 = "0.22.1" bon = "3.0.2" clap = { version = "4.4.8", features = ["derive"] } flate2 = "1.0.28"