我试着编译下面的代码:
extern crate rand; // 0.6
use rand::Rng;
fn main() {
rand::thread_rng()
.gen_ascii_chars()
.take(10)
.collect::<String>();
}
但是cargo build
说:
warning: unused import: `rand::Rng`
--> src/main.rs:2:5
|
2 | use rand::Rng;
| ^^^^^^^^^
|
= note: #[warn(unused_imports)] on by default
error[E0599]: no method named `gen_ascii_chars` found for type `rand::prelude::ThreadRng` in the current scope
--> src/main.rs:6:10
|
6 | .gen_ascii_chars()
| ^^^^^^^^^^^^^^^
Rust编译器要求我删除use rand::Rng;
子句,同时抱怨没有gen_ascii_chars
方法。我希望Rust只使用rand::Rng
trait,而不提供这样一个矛盾的错误消息。我该如何进一步呢?
4条答案
按热度按时间ecfdbz9o1#
正如兰德0.5.0文档中所解释的那样,
gen_ascii_chars
已被弃用,您应该使用sample_iter(&Alphanumeric)
。dnph8jn42#
随着兰德0.8.4的引入,
rand
现在包含了DistString
,它包含了一个more efficient方法来采样随机字母数字字符串。8tntrjer3#
您可以使用random-string crate和您的字符集。您可以通过在
Cargo.toml
中包含random-string
库来安装它。请看示例:
enxuqcxy4#
一个带有自定义字符集和
rand
板条箱的示例: