sách gpt4 ai đã đi

rust - 预期错误的原因(),在Rust中找到struct `std::vec::Vec`?

In lại 作者:行者123 更新时间:2023-12-03 11:41:25 28 4
mua khóa gpt4 Nike

我是 rust 编程的新手。我想用递归实现合并排序。这是我的代码:

fn merge(a: &mut Vec, b: &mut Vec) -> Vec {
let mut temp: Vec = Vec::new();

println!("The digit is {}", a[0]);
while a.len() > 0 && b.len() > 0 {
if a[0] > b[0] {
temp.push(a[0]);
a.pop();
} khác {
temp.push(b[0]);
b.pop();
}
}

while a.len() > 0 {
temp.push(a[0]);
a.pop();
}

while b.len() > 0 {
temp.push(b[0]);
b.pop();
}

temp
}

fn merge_sort(v: &mut Vec) -> Vec {
println!("The divided vector is: {:?}", v);
let n = v.len();

if n == 1 {
println!("The divided vector is: {:?}", v.to_vec());
let t: Vec = Vec::new();
t.push(v[0]);
t
}

if n == 0 {
panic!("Alas!! NULL");
}

merge(
&mut merge_sort(&mut v[0..n / 2].to_vec()),
&mut merge_sort(&mut v[n / 2 + 1..n].to_vec()),
)
.to_vec()
}

fn main() {
let mut v = vec![23, 78, 89, 64, 23, 12, 79, 45, 64];
println!("The vector is: {:?}", v);
println!("The length {}", v.len());

let v = merge_sort(&mut v);

println!("The sorted vector is: {:?}", v);
}


问题是,当我尝试编译它时,出现以下错误:

error[E0308]: mismatched types
--> src/main.rs:36:9
|
32 | / if n == 1 {
33 | | println!("The divided vector is: {:?}", v.to_vec());
34 | | let t: Vec = Vec::new();
35 | | t.push(v[0]);
36 | | t
| | ^ expected `()`, found struct `std::vec::Vec`
37 | | }
| | -- help: consider using a semicolon here
| |_____|
| expected this to be `()`
|
= note: expected unit type `()`
found struct `std::vec::Vec`

您知道我为什么会收到这个奇怪的错误吗?看来,我缺少了一些东西。

1 Câu trả lời

在Rust中,块类型是最终表达式的类型,如果没有,则为()。同样,组合的块也需要与if{...} else if{...} else{...}相同的类型。如果没有khác,则if表达式的返回类型必须为(),因为这是在表达式计算为false时返回的类型。

另外,结果不是代码中的最终表达式。相反,您需要使用trở lại。还要注意Vec::push需要实例的可变引用(&mut self).

if n == 1 {
println!("The divided vector is: {:?}", v.to_vec());
let mut t: Vec = Vec::new();
t.push(v[0]);
return t;
}

关于rust - 预期错误的原因(),在Rust中找到struct `std::vec::Vec`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60772160/

28 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com