[−][src]Trait join_lazy_fmt::Join
separator.join(iterable)
method on anything Display
able.
Note that the separator goes in first argument position (before the dot), following Python's style.
The difference with stdlib's .join()
is that it can take a lazy
sequence of Display
ables, such as Itertools::join()
,
while also returning a lazy struct that, when Display
ed, shall write
each item separated by self
.
Example
ⓘThis code runs with edition 2018
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 | +-----+-----+-----+-----+-----+ ");
Provided methods
fn join<Iterable>(
&self,
iterable: Iterable
) -> DisplayableJoin<Self, Iterable::IntoIter> where
Iterable: IntoIterator,
Iterable::Item: Display,
&self,
iterable: Iterable
) -> DisplayableJoin<Self, Iterable::IntoIter> where
Iterable: IntoIterator,
Iterable::Item: Display,
Implementors
impl<Separator: Display + ?Sized> Join for Separator
[src]
fn join<Iterable>(
&self,
iterable: Iterable
) -> DisplayableJoin<Self, Iterable::IntoIter> where
Iterable: IntoIterator,
Iterable::Item: Display,
[src]
&self,
iterable: Iterable
) -> DisplayableJoin<Self, Iterable::IntoIter> where
Iterable: IntoIterator,
Iterable::Item: Display,