This is an automated email from the ASF dual-hosted git repository. mneumann pushed a commit to branch crepererum/rand010 in repository https://gitbox.apache.org/repos/asf/arrow-rs-object-store.git
commit b0b52043334b8a97c19992281063a902aa2eb49a Author: Marco Neumann <[email protected]> AuthorDate: Tue Feb 10 11:00:56 2026 +0100 chore: upgrade to `rand` 0.10 --- Cargo.toml | 11 ++++++++--- src/azure/client.rs | 2 +- src/client/backoff.rs | 27 ++++++++++++++++----------- src/integration.rs | 2 +- src/upload.rs | 2 +- src/util.rs | 2 +- 6 files changed, 28 insertions(+), 18 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 7e036e3..061bf5a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -53,7 +53,7 @@ httparse = { version = "1.8.0", default-features = false, features = ["std"], op hyper = { version = "1.2", default-features = false, optional = true } md-5 = { version = "0.10.6", default-features = false, optional = true } quick-xml = { version = "0.39.0", features = ["serialize", "overlapped-lists"], optional = true } -rand = { version = "0.9", default-features = false, features = ["std", "std_rng", "thread_rng"], optional = true } +rand = { version = "0.10", default-features = false, features = ["std", "std_rng", "thread_rng"], optional = true } reqwest = { version = "0.12", default-features = false, features = ["rustls-tls-native-roots", "http2"], optional = true } ring = { version = "0.17", default-features = false, features = ["std"], optional = true } rustls-pki-types = { version = "1.9", default-features = false, features = ["std"], optional = true } @@ -83,7 +83,7 @@ integration = ["rand"] [dev-dependencies] # In alphabetical order hyper = { version = "1.2", features = ["server"] } hyper-util = "0.1" -rand = "0.9" +rand = "0.10" tempfile = "3.1.0" regex = "1.11.1" # The "gzip" feature for reqwest is enabled for an integration test. @@ -92,6 +92,11 @@ reqwest = { version = "0.12", default-features = false, features = ["gzip"] } [target.'cfg(all(target_arch = "wasm32", target_os = "unknown"))'.dev-dependencies] wasm-bindgen-test = "0.3.50" +[dev-dependencies.getrandom_v04] +package = "getrandom" +version = "0.4" +features = ["wasm_js"] + [dev-dependencies.getrandom_v03] package = "getrandom" version = "0.3" @@ -105,4 +110,4 @@ features = ["js"] [[test]] name = "get_range_file" path = "tests/get_range_file.rs" -required-features = ["fs"] \ No newline at end of file +required-features = ["fs"] diff --git a/src/azure/client.rs b/src/azure/client.rs index 7a7d6dc..ad4e9f9 100644 --- a/src/azure/client.rs +++ b/src/azure/client.rs @@ -40,7 +40,7 @@ use http::{ HeaderName, Method, header::{CONTENT_LENGTH, CONTENT_TYPE, HeaderMap, HeaderValue, IF_MATCH, IF_NONE_MATCH}, }; -use rand::Rng as _; +use rand::RngExt; use serde::{Deserialize, Serialize}; use std::collections::HashMap; use std::sync::Arc; diff --git a/src/client/backoff.rs b/src/client/backoff.rs index e1160d6..f3f18da 100644 --- a/src/client/backoff.rs +++ b/src/client/backoff.rs @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -use rand::{prelude::*, rng}; +use rand::{Rng, RngExt, rng}; use std::time::Duration; /// Exponential backoff with decorrelated jitter algorithm @@ -56,7 +56,7 @@ pub(crate) struct Backoff { next_backoff_secs: f64, max_backoff_secs: f64, base: f64, - rng: Option<Box<dyn RngCore + Sync + Send>>, + rng: Option<Box<dyn Rng + Sync + Send>>, } impl std::fmt::Debug for Backoff { @@ -81,7 +81,7 @@ impl Backoff { /// Used [`rand::rng()`] if no rng provided pub(crate) fn new_with_rng( config: &BackoffConfig, - rng: Option<Box<dyn RngCore + Sync + Send>>, + rng: Option<Box<dyn Rng + Sync + Send>>, ) -> Self { let init_backoff = config.init_backoff.as_secs_f64(); Self { @@ -109,22 +109,27 @@ impl Backoff { #[cfg(test)] mod tests { + use std::convert::Infallible; + + use rand::{TryRng, rand_core::utils::fill_bytes_via_next_word}; + use super::*; - use rand::rand_core::impls::fill_bytes_via_next; struct FixedRng(u64); - impl RngCore for FixedRng { - fn next_u32(&mut self) -> u32 { - self.0 as _ + impl TryRng for FixedRng { + type Error = Infallible; + + fn try_next_u32(&mut self) -> Result<u32, Self::Error> { + Ok(self.0 as _) } - fn next_u64(&mut self) -> u64 { - self.0 + fn try_next_u64(&mut self) -> Result<u64, Self::Error> { + Ok(self.0) } - fn fill_bytes(&mut self, dst: &mut [u8]) { - fill_bytes_via_next(self, dst) + fn try_fill_bytes(&mut self, dst: &mut [u8]) -> Result<(), Self::Error> { + fill_bytes_via_next_word(dst, || self.try_next_u64()) } } diff --git a/src/integration.rs b/src/integration.rs index 5c601b5..b801c49 100644 --- a/src/integration.rs +++ b/src/integration.rs @@ -34,7 +34,7 @@ use crate::{ use bytes::Bytes; use futures::stream::FuturesUnordered; use futures::{StreamExt, TryStreamExt}; -use rand::{Rng, rng}; +use rand::{RngExt, rng}; use std::collections::HashSet; use std::slice; diff --git a/src/upload.rs b/src/upload.rs index 33698a4..9f6b9ee 100644 --- a/src/upload.rs +++ b/src/upload.rs @@ -246,7 +246,7 @@ mod tests { use futures::FutureExt; use parking_lot::Mutex; use rand::prelude::StdRng; - use rand::{Rng, SeedableRng}; + use rand::{RngExt, SeedableRng}; use crate::ObjectStoreExt; use crate::memory::InMemory; diff --git a/src/util.rs b/src/util.rs index b7f9182..565c1ce 100644 --- a/src/util.rs +++ b/src/util.rs @@ -331,7 +331,7 @@ mod tests { use crate::Error; use super::*; - use rand::{Rng, rng}; + use rand::{RngExt, rng}; use std::ops::Range; /// Calls coalesce_ranges and validates the returned data is correct
