From 5b94c44efc065a579131cccf5e9f1f9b0d1679be Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Jul 2026 12:20:49 +0000 Subject: [PATCH 1/2] chore(deps): bump rand from 0.8.5 to 0.10.2 Bumps [rand](https://github.com/rust-random/rand) from 0.8.5 to 0.10.2. - [Release notes](https://github.com/rust-random/rand/releases) - [Changelog](https://github.com/rust-random/rand/blob/master/CHANGELOG.md) - [Commits](https://github.com/rust-random/rand/compare/0.8.5...0.10.2) --- updated-dependencies: - dependency-name: rand dependency-version: 0.10.2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Cargo.lock | 12 ++++++------ Cargo.toml | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e8434ac..e3358a1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3668,7 +3668,7 @@ dependencies = [ "num-integer", "num-iter", "num-traits", - "rand 0.8.5", + "rand 0.8.7", "smallvec", "zeroize", ] @@ -3781,7 +3781,7 @@ dependencies = [ "chrono", "getrandom 0.2.17", "http", - "rand 0.8.5", + "rand 0.8.7", "reqwest 0.12.28", "serde", "serde_json", @@ -4697,9 +4697,9 @@ checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" [[package]] name = "rand" -version = "0.8.5" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "22f6172bdec972074665ed81ed53b71da00bfc44b65a753cfde883ec4c702a1a" dependencies = [ "libc", "rand_chacha 0.3.1", @@ -4862,7 +4862,7 @@ dependencies = [ "base64-simd", "icy_sixel", "image", - "rand 0.8.5", + "rand 0.8.7", "ratatui", "rustix 0.38.44", "self_cell", @@ -5914,7 +5914,7 @@ dependencies = [ "openssl-sys", "pipewire", "protobuf", - "rand 0.8.5", + "rand 0.10.2", "ratatui", "ratatui-image", "realfft", diff --git a/Cargo.toml b/Cargo.toml index 0f57963..1b66411 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -36,7 +36,7 @@ tui-equalizer = "0.2.0-alpha" tui-bar-graph = "0.3.3" colorgrad = "0.8.0" tokio = { version = "1.52", features = ["full"] } -rand = "0.8.4" +rand = "0.10.2" anyhow = "1.0.102" chrono = "0.4.45" log = "0.4.32" From 39dc2eb553a3cfda71cc04520cc946849cb1dbe2 Mon Sep 17 00:00:00 2001 From: LargeModGames <84450916+LargeModGames@users.noreply.github.com> Date: Mon, 13 Jul 2026 15:08:54 +0200 Subject: [PATCH 2/2] refactor: migrate rand call sites to 0.10 API Update thread_rng/gen_range to rng/random_range and swap the RngCore/Rng trait imports for the renamed 0.10 traits. --- src/cli/cli_app.rs | 3 +-- src/infra/network/user.rs | 2 +- src/infra/player/streaming.rs | 4 ++-- src/infra/radio/mod.rs | 2 +- src/infra/subsonic/mod.rs | 6 +++--- src/infra/youtube/playlists.rs | 6 +++--- src/tui/handlers/track_table.rs | 11 +++++------ 7 files changed, 16 insertions(+), 18 deletions(-) diff --git a/src/cli/cli_app.rs b/src/cli/cli_app.rs index f543a40..a9adb5d 100644 --- a/src/cli/cli_app.rs +++ b/src/cli/cli_app.rs @@ -4,7 +4,6 @@ use crate::infra::network::{IoEvent, Network}; use super::util::{Flag, Format, FormatType, JumpDirection, Type}; use anyhow::{anyhow, Result}; -use rand::{thread_rng, Rng}; use rspotify::model::{ context::CurrentPlaybackContext, idtypes::Id, playlist::FullPlaylist, PlayableItem, }; @@ -486,7 +485,7 @@ impl CliApp { { Ok(p) => { let num = p.items.total; - Some(thread_rng().gen_range(0..num) as usize) + Some(rand::random_range(0..num) as usize) } Err(e) => { self diff --git a/src/infra/network/user.rs b/src/infra/network/user.rs index ac87485..8441e19 100644 --- a/src/infra/network/user.rs +++ b/src/infra/network/user.rs @@ -229,7 +229,7 @@ impl UserNetwork for Network { // 3. Shuffle { - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); all_tracks.shuffle(&mut rng); } diff --git a/src/infra/player/streaming.rs b/src/infra/player/streaming.rs index 7b75224..60c0f37 100644 --- a/src/infra/player/streaming.rs +++ b/src/infra/player/streaming.rs @@ -730,9 +730,9 @@ fn get_or_create_device_id(cache_path: Option<&std::path::Path>) -> Option String { - use rand::RngCore; + use rand::Rng; let mut b = [0u8; 16]; - rand::thread_rng().fill_bytes(&mut b); + rand::rng().fill_bytes(&mut b); b[6] = (b[6] & 0x0f) | 0x40; b[8] = (b[8] & 0x3f) | 0x80; format!( diff --git a/src/infra/radio/mod.rs b/src/infra/radio/mod.rs index a78fe93..181c725 100644 --- a/src/infra/radio/mod.rs +++ b/src/infra/radio/mod.rs @@ -177,7 +177,7 @@ impl RadioSource { /// GET `path` from the first responding mirror, in shuffled order. async fn get_from_any_mirror(&self, path: &str) -> Result { let mut mirrors = MIRRORS; - mirrors.shuffle(&mut rand::thread_rng()); + mirrors.shuffle(&mut rand::rng()); let mut last_err = anyhow!("no radio-browser mirrors configured"); for base in mirrors { diff --git a/src/infra/subsonic/mod.rs b/src/infra/subsonic/mod.rs index bee2942..3d55974 100644 --- a/src/infra/subsonic/mod.rs +++ b/src/infra/subsonic/mod.rs @@ -32,7 +32,7 @@ use std::time::Duration; use anyhow::{anyhow, Context, Result}; use futures::StreamExt; use md5::{Digest, Md5}; -use rand::Rng; +use rand::RngExt; use reqwest::Client; use crate::core::plugin_api::{ @@ -203,10 +203,10 @@ impl SubsonicSource { /// Generate a random 12-character alphanumeric salt. fn generate_salt(&self) -> String { const CHARSET: &[u8] = b"abcdefghijklmnopqrstuvwxyz0123456789"; - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); (0..12) .map(|_| { - let idx = rng.gen_range(0..CHARSET.len()); + let idx = rng.random_range(0..CHARSET.len()); CHARSET[idx] as char }) .collect() diff --git a/src/infra/youtube/playlists.rs b/src/infra/youtube/playlists.rs index ed6458c..0161766 100644 --- a/src/infra/youtube/playlists.rs +++ b/src/infra/youtube/playlists.rs @@ -30,7 +30,7 @@ use std::path::{Path, PathBuf}; use anyhow::{anyhow, bail, Context, Result}; -use rand::Rng; +use rand::RngExt; use serde::{Deserialize, Serialize}; use crate::core::plugin_api::{PlaylistInfo, TrackInfo}; @@ -148,10 +148,10 @@ pub fn save(path: &Path, file: &PlaylistsFile) -> Result<()> { /// `file`. fn generate_id(file: &PlaylistsFile) -> String { const CHARSET: &[u8] = b"abcdefghijklmnopqrstuvwxyz0123456789"; - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); loop { let id: String = (0..12) - .map(|_| CHARSET[rng.gen_range(0..CHARSET.len())] as char) + .map(|_| CHARSET[rng.random_range(0..CHARSET.len())] as char) .collect(); if !file.playlists.iter().any(|p| p.id == id) { return id; diff --git a/src/tui/handlers/track_table.rs b/src/tui/handlers/track_table.rs index 9b17d80..b6167c1 100644 --- a/src/tui/handlers/track_table.rs +++ b/src/tui/handlers/track_table.rs @@ -5,7 +5,6 @@ use crate::core::app::{ }; use crate::infra::network::IoEvent; use crate::tui::event::Key; -use rand::{thread_rng, Rng}; use rspotify::prelude::Id; pub fn handler(key: Key, app: &mut App) { @@ -257,7 +256,7 @@ fn play_random_song(app: &mut App) { app.dispatch(IoEvent::StartPlayback( context_id, None, - Some(thread_rng().gen_range(0..val as usize)), + Some(rand::random_range(0..val as usize)), )); } } @@ -270,7 +269,7 @@ fn play_random_song(app: &mut App) { .filter_map(|track| track.uri.clone()) .collect(); if !playable_ids.is_empty() { - let rand_idx = thread_rng().gen_range(0..playable_ids.len()); + let rand_idx = rand::random_range(0..playable_ids.len()); app.dispatch(IoEvent::StartPlayback( None, Some(playable_ids), @@ -289,7 +288,7 @@ fn play_random_song(app: &mut App) { } } if !playable_ids.is_empty() { - let rand_idx = thread_rng().gen_range(0..playable_ids.len()); + let rand_idx = rand::random_range(0..playable_ids.len()); app.dispatch(IoEvent::StartPlayback( None, Some(playable_ids), @@ -306,7 +305,7 @@ fn play_random_song(app: &mut App) { .filter_map(|track| track.uri.clone()) .collect(); if !playable_ids.is_empty() { - let rand_idx = thread_rng().gen_range(0..playable_ids.len()); + let rand_idx = rand::random_range(0..playable_ids.len()); app.dispatch(IoEvent::StartPlayback( Some(playable_ids[rand_idx].clone()), None, @@ -324,7 +323,7 @@ fn play_random_song(app: &mut App) { .filter_map(|track| track.uri.clone()) .collect(); if !playable_ids.is_empty() { - let rand_idx = thread_rng().gen_range(0..playable_ids.len()); + let rand_idx = rand::random_range(0..playable_ids.len()); app.dispatch(IoEvent::StartPlayback( None, Some(playable_ids),