Rustでsliceをシャッフルする
メモ書きです。
O'Reilly Japan - プログラミングRustを読んでいたら
rand::Rng - Rustでsliceのシャッフルができるとあったので試したところrand::Rng::shuffle
がdeprecatedになっていました。
SliceRandom::shuffle
を使った例を残します。
Cargo.toml
は以下のとおりです。
[dependencies] rand = "0.6.5"
実装例
use rand::seq::SliceRandom; fn main() { let mut v = vec![0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; let mut rng = rand::thread_rng(); v.shuffle(&mut rng); println!("{:?}", v); // [3, 4, 7, 6, 2, 0, 5, 9, 1, 8] }
deprecatedな実装
use rand::Rng; fn main() { let mut v = vec![0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; let mut rng = rand::thread_rng(); rng.shuffle(&mut v); println!("{:?}", v); }
❯ cargo run warning: use of deprecated item 'rand::Rng::shuffle': use SliceRandom::shuffle instead --> src/main.rs:7:9 | 7 | rng.shuffle(&mut v); | ^^^^^^^ | = note: #[warn(deprecated)] on by default Finished dev [unoptimized + debuginfo] target(s) in 0.64s Running `target/debug/rust-shuffle-slice` [1, 2, 4, 8, 3, 5, 7, 0, 9, 6]