簡體   English   中英

如何從Rust中的向量獲取參考切片?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM