Err()强制在撇号周围添加“ \”转义符。搜索发现有关此问题的老投诉,但没有明显的解决方法。
如何避免Err字符串中这些注入的撇号转义?
fn bad() -> Result<(), String> {
return Err("Can't avoid 'apostrophe' escapes.".to_string());
}
fn main() -> Result<(), String> {
println!("{}", "Can avoid 'apostrophe' escapes.".to_string());
bad()?;
Ok(())
}
Run Code Online (Sandbox Code Playgroud)
结果是:
Can avoid 'apostrophe' escapes.
Error: "Can\'t avoid \'apostrophe\' escapes."
Run Code Online (Sandbox Code Playgroud)
默认记录器main返回的Result是使用Debug显示错误。Debug上String总能逃脱'秒。
如果要更改此行为,则必须自己处理错误:
fn bad() -> Result<(), String> {
return Err("Can't avoid 'apostrophe' escapes.".to_string());
}
fn my_main() -> Result<(), String> {
println!("{}", "Can avoid 'apostrophe' escapes.".to_string());
bad()?;
Ok(())
}
fn main() {
if let Err(e) = my_main() {
println!("Error: {}", e);
}
}
Run Code Online (Sandbox Code Playgroud)