sách gpt4 ai đã đi

rust - 错误不匹配的类型 : expected 'collections::vec::Vec' , 找到 '&collections::vec::Vec'

In lại 作者:行者123 更新时间:2023-11-29 08:10:57 30 4
mua khóa gpt4 Nike

Tôi đang cố gắng sử dụng selection_sort 创建一个已排序的向量,同时保留原始未排序的向量:

fn main() {
let vector_1: Vec = vec![15, 23, 4, 2, 78, 0];
let sorted_vector = selection_sort(&vector_1);
println!("{:?} is unsorted, \n{:?} is sorted.", &vector_1, &sorted_vector);
}

fn selection_sort(vector_1: &Vec) -> Vec {
let mut vector = vector_1;
let start = 0;
while start != vector.len() {
for index in (start .. vector.len()) {
match vector[index] < vector[start] {
true => vector.swap(index, start),
false => println!("false"), // do nothing
}
}
start += 1;
}
vectơ
}

错误:

   Compiling selection_sort v0.1.0 (file:///home/ranj/Desktop/Rust/algorithms/sorting/selection_sort)
src/main.rs:21:5: 21:11 error: mismatched types:
expected `collections::vec::Vec`,
found `&collections::vec::Vec`
(expected struct `collections::vec::Vec`,
found &-ptr) [E0308]
src/main.rs:21 vector
^~~~~~
src/main.rs:21:5: 21:11 help: run `rustc --explain E0308` to see a detailed explanation
error: aborting due to previous error
Could not compile `selection_sort`.

1 Câu trả lời

您的问题可以简化为(请在此处提问时查看并遵循如何创建 MCVE):

fn selection_sort(vector: &Vec) -> Vec {
vectơ
}

您正在接受对类型的引用并试图将其作为非引用返回。这只是一个直接的类型错误,与此相同:

fn something(value: &u8) -> u8 {
giá trị
}

T&T是不同的类型。

最终,您的代码现在没有意义。制作&VecĐi vào Vec ,你需要克隆它:

fn selection_sort(vector: &Vec) -> Vec {
let mut vector = vector.clone();
let mut start = 0;
while start != vector.len() {
for index in (start .. vector.len()) {
match vector[index] < vector[start] {
true => vector.swap(index, start),
false => println!("false"), // do nothing
}
}
start += 1;
}
vectơ
}

但在 99.99% 的情况下,接受 &Vec 是没有意义的;接受 &[T]相反:

fn selection_sort(vector: &[i32]) -> Vec {
let mut vector = vector.to_vec();
// ...
}

关于rust - 错误不匹配的类型 : expected 'collections::vec::Vec' , 找到 '&collections::vec::Vec',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33439574/

30 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