diff --git a/Cargo.lock b/Cargo.lock index e8434ac6..e3358a12 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 0f579633..1b664118 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" diff --git a/src/cli/cli_app.rs b/src/cli/cli_app.rs index f543a404..a9adb5d5 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 9ef3c490..f368d3d3 100644 --- a/src/infra/network/user.rs +++ b/src/infra/network/user.rs @@ -236,7 +236,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 b8ecadae..4e1ed56d 100644 --- a/src/infra/player/streaming.rs +++ b/src/infra/player/streaming.rs @@ -808,9 +808,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 d50a37fc..39ed0af0 100644 --- a/src/infra/radio/mod.rs +++ b/src/infra/radio/mod.rs @@ -191,7 +191,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 93a3d370..2ce39567 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::{ @@ -218,10 +218,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 ed6458c1..01617667 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 537c4b3d..7a4b7439 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),