【发布时间】:2019-06-27 21:32:04
【问题描述】:
我想知道为什么会这样
fn main() {
let v: Vec<&str> = Vec::new();
let s: &str = v.get(0).unwrap();
let new_string = String::from(s);
println!("{}", new_string);
}
但不是这个:
fn main() {
let v: Vec<&str> = Vec::new();
let s = v.get(0).unwrap();
let new_string = String::from(s);
println!("{}", new_string);
}
我从第二个 sn-p 收到以下错误:
let new_string = String::from(s);
^^^^^^^^^^^^ the trait `std::convert::From<&&str>` is not implemented for `std::string::String`
【问题讨论】:
-
不熟悉生锈。如果它有
type()函数或类似的东西,我会在上面的sn-ps 中为s打印出来并进行比较。我怀疑这与错误中显示的双重引用(&&str)有关。 -
TL;DR:您有一个引用向量 (
T == &str),get返回一个可选引用 (Option<&T>),这意味着您有两个引用 (Option<&&str>)。
标签: rust