当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Rust writeln用法及代码示例


本文简要介绍rust语言中 Macro core::writeln 的用法。

用法

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

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

在所有平台上,换行符都是 LINE FEED 字符(\n /U+000A)(没有额外的回车(\r /U+000D)。

有关详细信息,请参阅 write! 。有关格式字符串语法的信息,请参阅 std::fmt

例子

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(())
}

模块可以同时导入 std::fmt::Writestd::io::Write 并在实现其中任何一个的对象上调用 write!,因为对象通常不会同时实现这两者。但是,模块必须导入限定的特征,以便它们的名称不会冲突:

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)?; // uses fmt::Write::write_fmt
    writeln!(&mut v, "s = {:?}", s)?; // uses io::Write::write_fmt
    assert_eq!(v, b"s = \"abc 123\\n\"\n");
    Ok(())
}

相关用法


注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 Macro core::writeln。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。