这不是转弯
Vec
转换为数组。您正试图将
Vec
拥有价值的
切成一片
参考文献
。它们包含不同的类型,因此在不分配额外空间的情况下无法进行转换。您可能需要更新您的函数签名才能接受
&[Gloss<'_>]
而不是
&[&Gloss<'_>]
。
使用
&[&str]
很好,但是
Vec<&&str>
由于双重引用,这似乎是一个错误。也许您正在从的迭代器中收集
&&str
?
如果类型正确,则不需要转换。即。
pub struct MyStruct<'a> {
items: &'a [&'a str],
gloss: &'a [Gloss<'a>], // not &Gloss
}
...
let mut items: Vec<&str> = Vec::new();
let mut glosses: Vec<Gloss> = Vec::new();
...
let i = MyStruct{
items: &items,
gloss: &glosses,
}