String 在rust中连接字符串向量

String 在rust中连接字符串向量,string,join,vector,rust,String,Join,Vector,Rust,我想将字符串向量加入字符串,但我对&str&string字符串向量的不同结果感到困惑: let v1: Vec<String> = vec!["foo".to_string(), "bar".to_string()]; println!("{:?}", v1.join(",")); // OK let v2: Vec<&str> = vec!["foo", "bar"]; println!("{:?}", v2.join(",")); // OK let fo

我想将字符串向量加入
字符串
,但我对
&str
&string
字符串
向量的不同结果感到困惑:

let v1: Vec<String> = vec!["foo".to_string(), "bar".to_string()];
println!("{:?}", v1.join(",")); // OK

let v2: Vec<&str> = vec!["foo", "bar"];
println!("{:?}", v2.join(",")); // OK

let foo = "foo".to_string();
let bar = "bar".to_string();
let v3: Vec<&String> = vec![&foo, &bar];
println!("{:?}", v3.join(",")); // error
让v1:Vec=Vec![“foo.”to_string(),“bar.”to_string();
普林顿!(“{:?}”,v1.join(“,”);//好啊
让v2:Vec=Vec![“foo”,“bar”];
普林顿!(“{:?}”,v2.join(“,”);//好啊
让foo=“foo.to_string();
让bar=“bar”。to_string();
让v3:Vec=Vec![&foo,&bar];
普林顿!(“{:?}”,v3.join(“,”);//错误
以下是错误:

error[E0599]:在当前作用域中找不到类型为'std::vec::vec'的名为'join'的方法
-->src/main.rs:11:21
|
11 | println!(“{:?}”,v3.join(“,”);//错误
|^^^^在'std::vec::vec'中找不到方法`

任何帮助和解释都是非常受欢迎的

一般来说,不鼓励使用
&String
:如果需要自有副本,请使用
String
;如果需要参考,请使用
&str
。自动取消引用可使其合理透明:

let foo: String = "foo".to_string();
let bar: String = "bar".to_string();
let v3: Vec<&str> = vec![&foo, &bar];
让foo:String=“foo.to_String();
让bar:String=“bar”。to_String();
让v3:Vec=Vec![&foo,&bar];

注意:在上面的代码中,您实际上不需要显式地编写类型,但我将它们放进去是为了表明
Vec
可以从对
String

类型变量的引用透明地构建。一般来说,不建议使用
&String
:如果您需要一个自有副本,使用
字符串
,如果需要引用,请使用
&str
。自动取消引用可使其合理透明:

let foo: String = "foo".to_string();
let bar: String = "bar".to_string();
let v3: Vec<&str> = vec![&foo, &bar];
让foo:String=“foo.to_String();
让bar:String=“bar”。to_String();
让v3:Vec=Vec![&foo,&bar];

注意:在上面的代码中,您实际上不需要显式地编写类型,但我将它们放进去是为了表明
Vec
可以从对
String
类型的变量的引用透明地构建
Vec

,使用
Vec
没有多大意义。
Vec
是相同的,但更灵活。拥有
Vec
没有多大意义。A
Vec
是相同的,但更灵活。谢谢,Jmb。我知道
&String
是不受欢迎的,我很少使用它。如果你能帮我解释一下,我真的很感激。谢谢你,Jmb。我知道
&String
是不受欢迎的,我很少使用它。如果你能帮我解释一下,我真的很感激。