https://doc.rust-lang.org/std/macro.concat.html
works for literals only (? statics ?)
https://crates.io/crates/concat-string
https://docs.rs/concat-string
https://github.com/FaultyRAM/concat-string
https://github.com/FaultyRAM/concat-string/blob/master/src/lib.rs
...
macro_rules! concat_string {
    () => { String::with_capacity(0) };
    ($($s:expr),+) => {{
        use std::ops::AddAssign;
        let mut len = 0;
        $(len.add_assign(AsRef::::as_ref(&$s).len());)+
        let mut buf = String::with_capacity(len);
        $(buf.push_str($s.as_ref());)+
        buf
    }};
}
...
// The addition assignment operator +=.
https://doc.rust-lang.org/std/ops/trait.AddAssign.html
https://github.com/hoodie/concatenation_benchmarks-rs
...
#[bench]
#[cfg(unix)]
fn from_bytes(b: &mut Bencher) {
    use std::slice;
    use std::ffi::OsStr;
    use std::os::unix::ffi::OsStrExt;
    b.iter(|| {
               let bytes = unsafe { slice::from_raw_parts(DATE.as_ptr(), 20) };
               let datetime = OsStr::from_bytes(bytes);
               test::black_box(datetime);
           });
}
2017
https://www.reddit.com/r/rust/comments/48fmta/seven_ways_to_concatenate_strings_in_rust_the/