r#’string’

问题

最初在vscode中遇到提示”rewrite as a raw string”【重写为原生字符串】,然后在字符串前增加了r#,字符串后增加了#,起初不明所以,查找后发现其作用。
类似于python中字符串前的的 r ,可以无需转义字符串中的特殊字符。

解决

r 后面的#需要在字符串的前后配对,符合 r+ n个#+“字符串”+ n个#。

  1. fn main() {
  2. let var = "It's cool!\nI love it!";
  3. println!(r"{}", var);
  4. }
  5. //It's cool!
  6. //I love it!
  7. fn main() {
  8. let var = "It's cool!\nI love it!";
  9. println!(r##"{}"##, var);
  10. }
  11. //It's cool!
  12. //I love it!
  13. fn main() {
  14. let var = "It's cool!\nI love it!";
  15. println!(r###"{}"###, var);
  16. }
  17. //It's cool!
  18. //I love it!

r后面可以跟0-n个#号,相当于在每个特殊符号前的转移字符\。无论是变量还是输出字符串,r只要跟在字符串之前即可。

  1. fn main() {
  2. let var = r"我不是换行\n,我没有换行";
  3. println!("{}", var);
  4. }
  5. //我不是换行\n,我没有换行

The Rust Reference的相关内容

Characters and strings

Example #
sets
Characters
Character 'H' 0 All Unicode
String "hello" 0 All Unicode
Raw string r#"hello"# 0 or more* All Unicode
Byte b'H' 0 All ASCII
Byte string b"hello" 0 All ASCII
Raw byte string br#"hello"# 0 or more* All ASCII

注意:# 号数量前后必须相等。