當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。