gpt4 book ai didi

rust - 关于期望类型的奇怪错误

转载 作者:行者123 更新时间:2023-11-29 08:10:57 25 4
gpt4 key购买 nike

我有这个精确的对象和函数定义:

pub struct Mep<Ins> {
instructions: Vec<Ins>,
}
impl<Ins> Mep<Ins> {
pub fn crossover<F>(parent0: &Mep<Ins>, parent1: &Mep<Ins>, mut random_point_generator: F) -> Mep<Ins>
where F: FnMut(usize) -> usize, Ins: Clone {/*Body omitted*/}
}

该函数编译正常,但在调用它时即使是空函数定义也会收到相同的错误:

tests/mep.rs:14:33: 14:34 error: expected type, found `|`
tests/mep.rs:14 let c: Mep::crossover(a, b, |x| rng.next_u32() % x);

我也尝试了不同的参数:

pub fn crossover<F>(parent0: &Mep<Ins>, parent1: &Mep<Ins>, points: usize, mut random_point_generator: F) -> Mep<Ins>
where F: FnMut(usize) -> usize, Ins: Clone {}

它会导致同样的错误:

tests/mep.rs:14:33: 14:34 error: expected type, found `3`
tests/mep.rs:14 let c: Mep::crossover(a, b, 3, |x| rng.next_u32() % x);

我对 Rust 还很陌生,我在网上看到的任何地方都讨论了人们遇到的明显泛型问题,但据我所知,这些问题并没有与我分享。我需要做什么来调用这个函数?

最佳答案

Rust 中的变量赋值是用等号而不是冒号完成的。所以你的声明应该是

let c = Mep::crossover(a, b, 3, |x| rng.next_u32() % x);

如果您还想指定一个类型,则需要带有以下类型的冒号和后面带有表达式的等号:

let c: Mep<Ins> = Mep::crossover(a, b, 3, |x| rng.next_u32() % x);

关于rust - 关于期望类型的奇怪错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33435425/

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