特性未实现(实现特性的事物)
Trait not implemented for (thing that implements trait)
所以,我想,Rust 是想告诉我一个小谎,但也许我只是疯了...
fn get_random<T, R>(range: Range<T>, rng: &mut R) -> T
where T: SampleRange + PartialOrd,
R: Rng
{
range.ind_sample(&mut rng)
}
那里的where子句应该表明R肯定实现了Rng,否则……好吧,来吧?但是当我尝试编译它时,它发誓说 rng 没有实现 rand::Rng.
到底是什么?
rustc 1.0.0-nightly (cfea8ec41 2015-03-10) (built 2015-03-11) (in case you were wondering)
这是实际产生的错误:
<anon>:10:11: 10:31 error: the trait `rand::Rng` is not implemented for the type `&mut R` [E0277]
<anon>:10 range.ind_sample(&mut rng)
^~~~~~~~~~~~~~~~~~~~
我将突出显示 类型 &mut R。您的问题源于您引用了太多参考文献。你的 rng
是 &mut R
。您正在 然后 试图在调用 ind_sample
时再次引用它。这将创建一个 &mut &mut R
,它没有实现 Rng
.
use std::rand::distributions::range::SampleRange;
use std::rand::Rng;
use std::rand::distributions::Range;
use std::rand::distributions::IndependentSample;
fn get_random<T, R>(range: Range<T>, rng: &mut R) -> T
where T: SampleRange + PartialOrd,
R: Rng
{
range.ind_sample(rng)
}
fn main() {}
所以,我想,Rust 是想告诉我一个小谎,但也许我只是疯了...
fn get_random<T, R>(range: Range<T>, rng: &mut R) -> T
where T: SampleRange + PartialOrd,
R: Rng
{
range.ind_sample(&mut rng)
}
那里的where子句应该表明R肯定实现了Rng,否则……好吧,来吧?但是当我尝试编译它时,它发誓说 rng 没有实现 rand::Rng.
到底是什么?
rustc 1.0.0-nightly (cfea8ec41 2015-03-10) (built 2015-03-11) (in case you were wondering)
这是实际产生的错误:
<anon>:10:11: 10:31 error: the trait `rand::Rng` is not implemented for the type `&mut R` [E0277]
<anon>:10 range.ind_sample(&mut rng)
^~~~~~~~~~~~~~~~~~~~
我将突出显示 类型 &mut R。您的问题源于您引用了太多参考文献。你的 rng
是 &mut R
。您正在 然后 试图在调用 ind_sample
时再次引用它。这将创建一个 &mut &mut R
,它没有实现 Rng
.
use std::rand::distributions::range::SampleRange;
use std::rand::Rng;
use std::rand::distributions::Range;
use std::rand::distributions::IndependentSample;
fn get_random<T, R>(range: Range<T>, rng: &mut R) -> T
where T: SampleRange + PartialOrd,
R: Rng
{
range.ind_sample(rng)
}
fn main() {}