writeln in std - Rust (original) (raw)
macro_rules! writeln {
($dst:expr $(,)?) => { ... };
($dst:expr, <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false">(</mo></mrow><annotation encoding="application/x-tex">(</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span></span></span></span>arg:tt)*) => { ... };
}
Expand description
Write formatted data into a buffer, with a newline appended.
On all platforms, the newline is the LINE FEED character (\n
/U+000A
) alone (no additional CARRIAGE RETURN (\r
/U+000D
).
For more information, see write!. For information on the format string syntax, seestd::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(())
}
A module can import both std::fmt::Write
and std::io::Write
and call write!
on objects implementing either, as objects do not typically implement both. However, the module must import the traits qualified so their names do not conflict:
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(())
}