Macro std::writeln1.0.0[][src]

macro_rules! writeln {
    ($dst:expr $(,)?) => { ... };
    ($dst:expr, $($arg:tt)*) => { ... };
}
Expand description

将格式化的数据写入缓冲区,并附加换行符。

在所有平台上,换行符仅是 LINE FEED 字符 (\n/U+000A) (没有其他的 CARRIAGE RETURN (\r/U+000D)。

有关更多信息,请参见 write!。有关格式字符串语法的信息,请参见 std::fmt

Examples

use std::io::{Write, Result};

fn main() -> Result<()> {
    let mut w = Vec::new();
    writeln!(&mut w)?;
    writeln!(&mut w, "test")?;
    writeln!(&mut w, "formatted {}", "arguments")?;

    assert_eq!(&w[..], "\ntest\nformatted arguments\n".as_bytes());
    Ok(())
}
Run

模块可以同时在实现两者的对象上导入 std::fmt::Writestd::io::Write 以及调用 write!,因为对象通常不会同时实现两者。 但是,该模块必须导入合格的 traits,以便其名称不会冲突:

use std::fmt::Write as FmtWrite;
use std::io::Write as IoWrite;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut s = String::new();
    let mut v = Vec::new();

    writeln!(&mut s, "{} {}", "abc", 123)?; // 使用 fmt::Write::write_fmt
    writeln!(&mut v, "s = {:?}", s)?; // 使用 io::Write::write_fmt
    assert_eq!(v, b"s = \"abc 123\\n\"\n");
    Ok(())
}
Run