2015-07-04 28 views
11

Esiste un modo semplice per eseguire quanto segue (da Python) in Rust?Ripeti la stringa con la moltiplicazione intera

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

sto iniziando a imparare la lingua, e sembra String non prevale Mul, e non riesco a trovare alcuna discussione in qualsiasi punto un modo compatto di fare questo (diverso da una mappa o ciclo continuo).

risposta

28

Come di Rust 1.16, str::repeat è disponibile:

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

Prima Rust 1.16, è possibile utilizzare iter::repeat:

use std::iter; 

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

Questo ha anche il vantaggio di essere più generico - è crea un iteratore ripetuto all'infinito di qualsiasi tipo che sia clonabile.

4

Questo non usa map ma iterator e fold

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

Questo è pulito, anche, grazie! (anche se direi un po 'meno leggibile di quello iteratore.) –

Problemi correlati