gpt4 book ai didi

vector - 如何从 Rust 中的向量中获取引用的一部分?

转载 作者:行者123 更新时间:2023-11-29 08:04:01 25 4
gpt4 key购买 nike

在我使用的 API 的某处,我有一个函数需要 &[&A]作为参数,但我只有一个向量 A对象。当我尝试将此功能与 following syntax

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]

我怎样才能制作&[&A]来自 Vec<A>

最佳答案

简短的回答:你不能。这些类型彼此不兼容。

如果这确实是 API 所需要的,您可以做什么

test(&v.iter().collect::<Vec<_>>());

但这会分配一个新的向量。如果您是 API 的作者,请考虑更改它:&[&T] 是一种奇怪的类型,因为您需要切片及其中的对象的不同所有者。 &[T] 已经具有内部对象的按引用传递语义。

关于vector - 如何从 Rust 中的向量中获取引用的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37797242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com