Repeat string with integer multiplication

2019-02-21 10:38发布

问题:

Is there an easy way to do the following (from Python) in Rust?

>>> print ("Repeat" * 4) RepeatRepeatRepeatRepeat

I'm starting to learn the language, and it seems String doesn't override Mul, and I can't find any discussion anywhere on a compact way of doing this (other than a map or loop).

回答1:

Rust 1.16+

str::repeat is now available:

fn main() {
    let repeated = "Repeat".repeat(4);
    println!("{}", repeated);
}

Rust 1.0+

You can use iter::repeat:

use std::iter;

fn main() {
    let repeated: String = iter::repeat("Repeat").take(4).collect();
    println!("{}", repeated);
}

This also has the benefit of being more generic — it creates an infinitely repeating iterator of any type that is cloneable.



回答2:

This one doesn't use Iterator::map but Iterator::fold instead:

fn main() {
    println!("{:?}", (1..5).fold(String::new(), |b, _| b + "Repeat"));
}


标签: rust