不需要的撇号在Err()中逸出

srk*_*ing 1 rust

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)

mca*_*ton 5

默认记录器main返回的Result是使用Debug显示错误。DebugString总能逃脱'秒。

如果要更改此行为,则必须自己处理错误:

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)