如何在 Rust 中生成具有特定大小的随机 ASCII 可打印字符字符串?

0 random rust

我正在尝试使用 Rust 创建一个函数,给定一个整数,返回一个类型的值String。

我面临的主要问题是创建一个随机角色;一旦我能做到这一点,我就可以在循环或类似的东西中连接很多这些字符,然后返回最终的字符串。

我试图找到一种方法来对randomrand 箱中的函数返回的整数进行类型转换(就像在 C++ 中所做的那样),但这似乎不是可行的方法。

我应该怎么办?

ssh*_*124 5

Rust Cookbook展示了如何优雅地实现这一点。从上面的链接复制:

use rand::{thread_rng, Rng};
use rand::distributions::Alphanumeric;

fn random_string(n: usize) -> String {
    thread_rng().sample_iter(&Alphanumeric)
                .take(n)
                .collect()
}
Run Code Online (Sandbox Code Playgroud)

如果您希望使用 中未提供的自定义发行版rand::distributions,您可以通过遵循其中一个发行版的源代码来实现它,以了解如何自行实现它。下面是一些随机符号分布的示例实现:

use rand::{Rng, seq::SliceRandom};
use rand::distributions::Distribution;

struct Symbols;

impl Distribution<char> for Symbols {
    fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> char {
        *b"!@#$%^&*()[]{}:;".choose(rng).unwrap() as char
    }
}
Run Code Online (Sandbox Code Playgroud)