gpt4 book ai didi

rust - 特性未实现(实现特性的事物)

转载 作者:行者123 更新时间:2023-11-29 08:34:43 26 4
gpt4 key购买 nike

所以,我想 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 - 特性未实现(实现特性的事物),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28999104/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com