如何将格式化的字符串写入文件?

tez*_*tez 3 rust

我想将函数的输出写入文件.我预计这write_fmt就是我的要求:

use std::{
    fs::File,
    io::{BufWriter, Write},
};

fn main() {
    let write_file = File::create("/tmp/output").unwrap();
    let mut writer = BufWriter::new(&write_file);

    // From my function
    let num = 1;
    let factorial = 1;

    writer.write_fmt("Factorial of {} = {}", num, factorial);
}
Run Code Online (Sandbox Code Playgroud)

错误

error[E0061]: this function takes 1 parameter but 3 parameters were supplied
  --> src/main.rs:11:12
   |
11 |     writer.write_fmt("Factorial of {} = {}", num, factorial);
   |            ^^^^^^^^^ expected 1 parameter
Run Code Online (Sandbox Code Playgroud)

这似乎是错误的,文档中没有太多可用的内容.

小智 8

use std::fs::File;
use std::io::Write;

fn main() {
    let mut w = File::create("/tmp/test.txt").unwrap();
    writeln!(&mut w, "test").unwrap();
    writeln!(&mut w, "formatted {}", "arguments").unwrap();
}
Run Code Online (Sandbox Code Playgroud)


huo*_*uon 7

该文档指示该问题:所述write_fmt方法使用一个参数,类型的std::fmt::Arguments,它可以经由被构建format_args!宏.它还建议使用它的最佳方式:

write!应该优先使用宏来调用此方法.

一个调用write!(或writeln!)就像println!,但通过将写入的位置作为第一个参数传递:

write!(&mut writer, "Factorial of {} = {}", num, factorial);
Run Code Online (Sandbox Code Playgroud)

(请注意,文档在每个页面的顶部都有一个搜索栏,因此可以通过在<name>!那里搜索来查找文档,例如宏.)