2015-07-04 16 views
11

Czy istnieje prosty sposób na wykonanie następujących czynności (z Python) w Rust?Powtórz ciąg z całkowitym mnożeniem

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

Zaczynam uczyć się języka i wydaje String nie zastępują Mul, i nie mogę znaleźć żadnej dyskusji w dowolnym miejscu na zwarty sposób robienia tego (inne niż mapie lub pętla).

Odpowiedz

28

Jak Rust 1.16, str::repeat jest dostępny:

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

Przed Rust 1.16, można użyć iter::repeat:

use std::iter; 

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

Ma to również korzyści bycia bardziej ogólny - to tworzy nieskończenie powtarzalny iterator dowolnego typu, który jest klonowalny.

4

Ten ktoś nie używa map ale iterator i fold

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

To miłe, też, dzięki! (choć powiedziałbym, że jest mniej czytelny niż iterator). –