如何将两个字符串字段与另一个字符串连接起来?
How can I concatenate two string fields with another string?
我不明白 Rust 如何处理字符串。我创建了一个包含两个字符串字段和一个方法的简单结构。此方法连接字段和来自参数的字符串。我的代码:
fn main() {
let obj = MyStruct {
field_1: "first".to_string(),
field_2: "second".to_string(),
};
let data = obj.get_data("myWord");
println!("{}",data);
}
struct MyStruct {
field_1: String,
field_2: String,
}
impl MyStruct {
fn get_data<'a>(&'a self, word: &'a str) -> &'a str {
let sx = &self.field_1 + &self.field_2 + word;
&* sx
}
}
当 运行 时出现错误:
src\main.rs:18:18: 18:31 error: binary operation `+` cannot be applied to type `&collections::string::String` [E0369]
src\main.rs:18 let sx = &self.field_1 + &self.field_2 + word;
^~~~~~~~~~~~~
src\main.rs:19:10: 19:14 error: the type of this value must be known in this context
src\main.rs:19 &* sx
^~~~
error: aborting due to 2 previous errors
Could not compile `test`.
To learn more, run the command again with --verbose.
我读了 this chapter Rust 书。我尝试像代码示例中那样连接字符串,但编译器说它不是字符串。
我在网上搜索,但没有 Rust 1.3 的示例。
您尝试连接两个指向字符串的指针,但这不是字符串连接在 Rust 中的工作方式。它的工作方式是 使用 第一个字符串(你必须按值传递那个字符串)并且 return 使用第二个字符串的内容扩展使用的字符串切片.
现在最简单的方法是:
fn get_data(&self, word: &str) -> String {
format!("{}{}{}", &self.field_1, &self.field_2, word)
}
请注意,这也将创建一个新的拥有的字符串,因为不可能 return 从创建字符串的范围中引用字符串的字符串 - 它将在范围的末尾被销毁,除非它是 return 按值编辑的。
我不明白 Rust 如何处理字符串。我创建了一个包含两个字符串字段和一个方法的简单结构。此方法连接字段和来自参数的字符串。我的代码:
fn main() {
let obj = MyStruct {
field_1: "first".to_string(),
field_2: "second".to_string(),
};
let data = obj.get_data("myWord");
println!("{}",data);
}
struct MyStruct {
field_1: String,
field_2: String,
}
impl MyStruct {
fn get_data<'a>(&'a self, word: &'a str) -> &'a str {
let sx = &self.field_1 + &self.field_2 + word;
&* sx
}
}
当 运行 时出现错误:
src\main.rs:18:18: 18:31 error: binary operation `+` cannot be applied to type `&collections::string::String` [E0369]
src\main.rs:18 let sx = &self.field_1 + &self.field_2 + word;
^~~~~~~~~~~~~
src\main.rs:19:10: 19:14 error: the type of this value must be known in this context
src\main.rs:19 &* sx
^~~~
error: aborting due to 2 previous errors
Could not compile `test`.
To learn more, run the command again with --verbose.
我读了 this chapter Rust 书。我尝试像代码示例中那样连接字符串,但编译器说它不是字符串。
我在网上搜索,但没有 Rust 1.3 的示例。
您尝试连接两个指向字符串的指针,但这不是字符串连接在 Rust 中的工作方式。它的工作方式是 使用 第一个字符串(你必须按值传递那个字符串)并且 return 使用第二个字符串的内容扩展使用的字符串切片.
现在最简单的方法是:
fn get_data(&self, word: &str) -> String {
format!("{}{}{}", &self.field_1, &self.field_2, word)
}
请注意,这也将创建一个新的拥有的字符串,因为不可能 return 从创建字符串的范围中引用字符串的字符串 - 它将在范围的末尾被销毁,除非它是 return 按值编辑的。