Crates.io | join-lazy-fmt |
lib.rs | join-lazy-fmt |
version | 0.9.2 |
source | src |
created_at | 2019-03-20 22:40:02.502899 |
updated_at | 2019-03-20 23:03:38.743668 |
description | Lazy `separator.join(iterable)` method and `lazy_format!` for Rust |
homepage | https://github.com/danielhenrymantilla/join-lazy-fmt-rs |
repository | https://github.com/danielhenrymantilla/join-lazy-fmt-rs |
max_upload_size | |
id | 122774 |
size | 11,322 |
Lazy
separator.join(iterable)
method andlazy_format!
for Rust
Add the following line to your Cargo.toml
, under [dependencies]
join-lazy-fmt = "0.9.2"
Add the folowing line to your .rs
code to bring items in scope:
use ::join_lazy_fmt::*;
use ::join_lazy_fmt::*;
let sequence = format!("[{}]", ", ".join(0 .. 5));
assert_eq!(sequence, "[0, 1, 2, 3, 4]");
// Since `.join()` is lazy, this does not compute an infinite string.
let _ = ", ".join(0 ..);
const N: usize = 6;
let line = format!("+-{}-+", "-+-".join((1 .. N).map(|_| "---")));
// And the following allocates only one `String`:
let matrix = format!(
"{line}\n{body}\n{line}\n",
line=line,
body="\n".join(
(1 .. N).map(|i| lazy_format!(
"| {row} |",
row=" | ".join(
(1 .. N).map(|j| lazy_format!(
"a{i}{j}",
i=i,
j=j,
))
),
))
),
);
assert_eq!(matrix, "\
+-----+-----+-----+-----+-----+
| a11 | a12 | a13 | a14 | a15 |
| a21 | a22 | a23 | a24 | a25 |
| a31 | a32 | a33 | a34 | a35 |
| a41 | a42 | a43 | a44 | a45 |
| a51 | a52 | a53 | a54 | a55 |
+-----+-----+-----+-----+-----+
");