19 stable releases
2.0.0 | Aug 11, 2022 |
---|---|
1.10.0 | Dec 5, 2021 |
1.9.0 | Aug 21, 2021 |
1.8.4 | Apr 22, 2021 |
1.2.1 | Feb 16, 2019 |
#76 in Rust patterns
48,758 downloads per month
Used in 17 crates
(4 directly)
17KB
98 lines
lazy_format
A [no_std]
library for lazily formatting things. Because allocating temporary strings just to write them to a buffered stream is bad for your health.
use std::io;
use lazy_format::lazy_format;
use joinery::JoinableIterator;
fn main() {
let result = (0..10)
.map(|value| lazy_format!("\t'{}'", value))
.join_with(",\n")
.to_string();
assert_eq!(result,
" '0'
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'")
}
The above example is the key motivating example: when building up some kind of object you wish to write or format, there's no reason to allocate intermediary strings (which is what format!
does). Instead, lazy_format!
captures its arguments and returns an opaque struct with a Display
implementation, so that the actual formatting can happen directly into its final destination buffer (such as a file or string).