gpt4 book ai didi

rust - 预期类型与收到的类型不匹配

转载 作者:行者123 更新时间:2023-12-03 11:41:28 24 4
gpt4 key购买 nike

我是第一次接触 rust ,我正努力弄脏手,所以我正在尝试实现快速排序,作为“The Book”练习之一的一部分(可能作者不打算建议这样做)。虽然走得更深,但这不是学习的最佳方法吗?:))
这是我到目前为止所拥有的:

fn quicksort(v: &mut Vec<i32>) {
// helper funtions for sorting the partitional vectors

fn partition(v: &mut Vec<i32>, lo: i32, hi: i32) {
// pivot
let mut p: i32;
let mut i = lo;

for j in i..hi {
}
}

fn quicksort(v: &mut Vec<i32>, lo: i32, hi: i32) {
// pivot
let mut p: i32;
if lo < hi {
p = partition(v, lo, hi);
}
}


quicksort(v, 0, (v.len() -1).try_into().unwrap())
}
当我尝试编译时,我得到以下信息:
[foo12@archT520 vectors]$ cargo run
Compiling vectors v0.1.0 (/home/foo12/programs/rust/book/vectors)
error[E0308]: mismatched types
--> src/main.rs:36:10
|
36 | p = partition(v, lo, hi);
| ^^^^^^^^^^^^^^^^^^^^ expected `i32`, found `()`

error: aborting due to previous error

For more information about this error, try `rustc --explain E0308`.
error: could not compile `vectors`

To learn more, run the command again with --verbose.
我看不到我搞砸了。

另外,我很高兴获得不使用其他库的quicksort的完整实现。也许我可以从中学到东西。

编辑:我也不确定函数名称为“quicksort”的这种“shadowing”方式是否会起作用。我之前曾对其进行过更改,所以这不是导致错误的原因,但是我想看看它是否会以这种方式工作,这就是为什么我这样保留它。

最佳答案

您的fn partition(v: &mut Vec<i32>, lo: i32, hi: i32)不返回任何内容(在Rust中表示为具有返回类型()),因此您不能将结果分配给i32类型的变量。

关于rust - 预期类型与收到的类型不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66122743/

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