[英]How to get a slice of references from a vector in Rust?
我在API的某個地方使用了一個函數,該函數以&[&A]
作為參數,但是我只有A
對象的向量。 當我嘗試通過以下語法使用此功能時
pub struct A(pub u64);
fn test(a: &[&A]){}
fn main() {
let v = vec![A(1), A(2), A(3)];
let a = &v[..];
test(a);
}
我有一個錯誤:
<anon>:12:9: 12:10 error: mismatched types:
expected `&[&A]`,
found `&[A]`
(expected &-ptr,
found struct `A`) [E0308]
我做了一些嘗試,但沒有成功:
let a = &v[&..]
和
let a = &v[&A]
如何通過Vec<A>
進行&[&A]
?
簡短的答案:您不能。 這些類型彼此不兼容。
如果這確實是API所需要的,該怎么辦
test(&v.iter().collect::<Vec<_>>());
但這分配了一個新的向量。 如果您是API的作者,請考慮更改它: &[&T]
是一種怪異的類型,因為您需要切片和其中的對象的不同所有者。 &[T]
已經具有內部對象的按引用傳遞語義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.