鉴于以下计划:
use std::fmt;
struct A;
impl fmt::Debug for A {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        format!("\nA\n").fmt(f)
    }
} 
fn main() {
    println!("{:?}", A);
}
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
"\nA\n"
Run Code Online (Sandbox Code Playgroud)
是否有可能将这些换行符"翻译"成真正的换行符?不幸的是我不能使用这个Display特性,因为这是用于在显示错误消息时使用特征的hamcrest-rustDebug.
而不是format!使用write!宏.从查看文档,write!直接写入缓冲区,同时format!创建一个String,并格式化fmt::Debug自动转义特殊字符的参数.
use std::fmt;
struct A;
impl fmt::Debug for A {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        write!(f, "\nA\n")
    }
} 
fn main() {
    println!("{:?}", A);
}
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           428 次  |  
        
|   最近记录:  |