Rust Language中的 format! 和 println! 是什么关系?

在这篇文章【译】用 Rust 实现 csv 解析-part4 中看到了一个新的写法:👇

fn run() -> Result<(), Box<Error>> {
    let mut rdr = csv::Reader::from_reader(io::stdin());
    for result in rdr.deserialize() {
        let record: Record = result?;
        println!("{:?}", record);
        // 如果你不喜欢所有的内容缩卷到一行,可以试试下面这个打印:
        // println!("{:#?}", record);
    }
    Ok(())
}

println!("{:#?}", record); 中的 #,在看 Rust 官方关于 print 的文档(Formatted print)的时候,并没有 # 的内容。👇

Printing is handled by a series of macros defined in std::fmt some of which include:

format!: write formatted text to String
print!: same as format! but the text is printed to the console (io::stdout).
println!: same as print! but a newline is appended.
eprint!: same as format! but the text is printed to the standard error (io::stderr).
eprintln!: same as eprint!but a newline is appended.

但是在 Module std::fmt 看到了 format! 有相关的内容👇

format!("Hello");                 // => "Hello"
format!("Hello, {}!", "world");   // => "Hello, world!"
format!("The number is {}", 1);   // => "The number is 1"
format!("{:?}", (3, 4));          // => "(3, 4)"
format!("{value}", value=4);      // => "4"
format!("{} {}", 1, 2);           // => "1 2"
format!("{:04}", 42);             // => "0042" with leading zeros
format!("{:#?}", (100, 200));     // => "(
                                  //       100,
                                  //       200,
                                  //     )"
阅读 2.5k
1 个回答

println 内部调用了 format。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏