作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我使用的 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/
我是一名优秀的程序员,十分优秀!