我想写这个
write!(f, "{ hash:{}, subject: {} }", self.hash, self.subject)
Run Code Online (Sandbox Code Playgroud)
但由于花括号对于格式化具有特殊意义,因此很明显我无法在没有转义的情况下放置外部花括号.所以我试图逃避它们.
write!(f, "\{ hash:{}, subject: {} \}", self.hash, self.subject)
Run Code Online (Sandbox Code Playgroud)
Rust也不喜欢这样.然后我读到了这个:
文字字符{,}或#可以包含在字符串中,前面加上\字符.由于\已经是Rust字符串中的转义字符,因此使用此转义的字符串文字将类似于"\ {".
所以我试过了
write!(f, "\\{ hash:{}, subject: {} \\}", self.hash, self.subject)
Run Code Online (Sandbox Code Playgroud)
但那也行不通.:-(
我不明白 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
}
}
Run Code Online (Sandbox Code Playgroud)
运行时出现错误:
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: …Run Code Online (Sandbox Code Playgroud)