randの0.4系では以下のようにすれば得られました。
thread_rng().gen_ascii_chars().take(32).collect::<String>()
randの0.5系では廃止されてしまったので自作します。
extern crate rand;
use rand::seq::SliceRandom;
const BASE_STR: &str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
fn gen_ascii_chars(size: usize) -> String {
let mut rng = &mut rand::thread_rng();
String::from_utf8(
BASE_STR.as_bytes()
.choose_multiple(&mut rng, size)
.cloned()
.collect()
).unwrap()
}
なんとなく日本語もできたらいいなと思って改造してみました。
extern crate rand;
use rand::prelude::IteratorRandom;
const BASE_STR: &str = "あいうえお";
fn gen_chars(size: usize) -> String {
let mut rng = &mut rand::thread_rng();
let mut result: Vec<char> = Vec::new();
for _ in 0..size {
result.push(BASE_STR.chars().choose(&mut rng).unwrap());
}
result.into_iter().collect()
}