#lazy-evaluation #join #iterator #format #human

join-lazy-fmt

Lazy separator.join(iterable) method and lazy_format! for Rust

3 releases

0.9.2 Mar 20, 2019
0.9.1 Mar 20, 2019
0.9.0 Mar 20, 2019

#2702 in Rust patterns

Download history 10693/week @ 2024-03-13 10016/week @ 2024-03-20 6766/week @ 2024-03-27 10430/week @ 2024-04-03 9418/week @ 2024-04-10 12372/week @ 2024-04-17 13733/week @ 2024-04-24 12871/week @ 2024-05-01 11583/week @ 2024-05-08 16105/week @ 2024-05-15 15714/week @ 2024-05-22 17662/week @ 2024-05-29 14096/week @ 2024-06-05 13497/week @ 2024-06-12 14516/week @ 2024-06-19 16535/week @ 2024-06-26

61,393 downloads per month
Used in 6 crates (3 directly)

MIT license

10KB
102 lines

join-lazy-fmt

Lazy separator.join(iterable) method and lazy_format! for Rust

Repository Latest version Documentation License

Usage

  1. Add the following line to your Cargo.toml, under [dependencies]

    join-lazy-fmt = "0.9.2"
    
  2. Add the folowing line to your .rs code to bring items in scope:

    use ::join_lazy_fmt::*;
    

Example

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 |
+-----+-----+-----+-----+-----+
");

No runtime deps

Features