Expand description
A simple crate to join elements as a string, interspersing a separator between all elements.
This is done somewhat efficiently, if possible. Meaning if the iterator is
cheaply clonable you can directly print the result of Join::join()
without creating a temporary String in memory. The Join::join()
method will appear on anything that implements std::iter::IntoIterator,
meaning on all iterators and collections. The elements and the separator
need to implement std::fmt::Display. Alternatively the
Join::join_str() method can be used to join elements that only
implement AsRef<str>.
§Examples
use join_string::Join;
assert_eq!(
"foo bar baz".split_whitespace().join(", ").into_string(),
"foo, bar, baz");
println!("{}",
"foo bar baz".split_whitespace()
.map(|s| s.chars().rev().join(""))
.join(' '));
// Output: oof rab zabYou can also write the result more directly to a std::io::Write or
std::fmt::Write even if the backing iterator doesn’t implement
Clone.
["foo", "bar", "baz"].join(", ").write_io(std::io::stdout())?;let mut str = String::new();
["foo", "bar", "baz"].join(", ").write_fmt(&mut str)?;§Notes
The standard library already provides a similar std::slice::Join
trait on slices, but not on iterators, and the standard library version
always directly returns a new String. Further there are multiple
other similar crates that however work a bit differently, e.g. having
more restrictions on element and separator types or always returning a
String.
Structs§
- Display
Iter - Iterator-facade that maps an iterator over
AsRef<str>to an iterator overDisplayWrapper. - Display
Wrapper - Helper for joining elements that only implement
AsRef<str>, but notstd::fmt::Display. - Joiner
- Helper struct that captures the iterator and separator for later joining.
Traits§
- Join
- Trait that provides a method to join elements of an iterator, interspersing a separator between all elements.
Functions§
- join
- Join anything that implements
Join. The elements need to implementstd::fmt::Display. - join_
str - Join anything that implements
Joinwhen elements don’t implementstd::fmt::Display, but implementAsRef<str>instead.