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
没有多大意义。AVec
是相同的,但更灵活。谢谢,Jmb。我知道&String
是不受欢迎的,我很少使用它。如果你能帮我解释一下,我真的很感激。谢谢你,Jmb。我知道&String
是不受欢迎的,我很少使用它。如果你能帮我解释一下,我真的很感激。