join-string

Crates.iojoin-string
lib.rsjoin-string
version0.3.0
sourcesrc
created_at2023-10-03 23:01:56.757176
updated_at2023-10-18 18:36:57.122909
descriptionJoin the elements of iterators as a string, interspersing a separator between all elements.
homepagehttps://github.com/panzi/rust-join-string
repositoryhttps://github.com/panzi/rust-join-string
max_upload_size
id991635
size28,619
Mathias Panzenböck (panzi)

documentation

README

join-string

Build status Release License Reference

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 zab

You 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.

use join_string::Join;

["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.

Commit count: 54

cargo fmt