![](/img/trans.png)
[英]error[E0277]: the trait bound `my_struct::MyStruct: my_trait::MyTrait` is not satisfied
[英]Rust: Error[E0277]: the trait bound `{integer}: SampleRange<_>` is not satisfied
我有一行代碼在 for 循環中,它應該生成一個從 0 到 2499 的隨機數。它給我帶來了問題。
let index = rand::thread_rng().gen_range(2499);
想知道的人的完整代碼:
fn generate_phrase () -> String {
let mut phrase = String::new();
let mut file = File::open("words.txt").expect("Failed to open words.txt");
let mut contents = String::new();
file.read_to_string(&mut contents).expect("Failed to read words.txt");
let words: Vec<&str> = contents.split("\n").collect();
for _ in 0..8 {
let index = rand::thread_rng().gen_range(2499);
phrase.push_str(words[index]);
phrase.push(' ');
}
println!("Your phrase is: {:?}", phrase);
return phrase;
}
錯誤信息:
error[E0277]: the trait bound `{integer}: SampleRange<_>` is not satisfied
--> src/crypto/crypto.rs:115:45
|
115 | let index = rand::thread_rng().gen_range(2499);
| --------- ^^^^ the trait `SampleRange<_>` is not implemented for `{integer}`
| |
| required by a bound introduced by this call
|
note: required by a bound in `gen_range`
--> C:\Users\Administrator\.cargo\registry\src\github.com-1ecc6299db9ec823\rand-0.8.5\src\rng.rs:132:12
|
132 | R: SampleRange<T>
| ^^^^^^^^^^^^^^ required by this bound in `gen_range
我知道問題所在,即特征不是正確的類型,但我不知道如何將整數轉換為必要的特征: SampleRange<T>
。 我查看了 StackOverFlow,但在任何地方都找不到合適的答案。
它抱怨的SampleRange
可以是Range
或RangeInclusive
,而不僅僅是一個上限(請參閱SampleRange
中的“實現”部分以查看哪些類型實現了該特征)。 您只需將這一行更改為如下所示:
let index = rand::thread_rng().gen_range(0..2499);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.