Tôi muốn viết một hàm mang theo trong một mảng với bất kỳ loại trong đó và trả về phần tử cuối cùng của mảng, vì vậy tôi đã cố gắng:Làm cách nào để chuyển đổi `& T` thành` T`?
fn main() {
let v = ["a", "b"];
println!("{}", last(&v));
}
fn last<T: Clone>(slice: &[T]) -> &T {
&slice[slice.len()-1]
}
và điều đó dường như làm việc, nhưng khi tôi áp dụng một sự điều chỉnh nhỏ:
fn main() {
let v = ["a", "b"];
println!("{}", last(&v));
}
fn last<T: Clone>(slice: &[T]) -> T {
&slice[slice.len()-1]
}
Sau đó, tôi đang gặp:
error[E0308]: mismatched types
--> <anon>:9:5
|
9 | &slice[n-1]
| ^^^^^^^^^^^ expected type parameter, found &T
|
= note: expected type `T`
found type `&T`
làm thế nào để chuyển đổi các &T
chỉ T
?
Chỉ trong trường hợp, có [phương thức 'cuối cùng] (https://doc.rust-lang.org/stable/std/primitive.slice.html#method.last) cho lát cắt – red75prime