■ String 구조체의 bytes 메소드를 사용해 바이트 값을 나열하는 방법을 보여준다. ▶ 예제 코드 (RS)
|
let string : String = String::from("ABCDE"); for value in string.bytes() { println!("{}", value); } /* 65 66 67 68 69 */ |
■ String 구조체의 chars 메소드를 사용해 문자를 나열하는 방법을 보여준다. ▶ 예제 코드 (RS)
|
let string : String = String::from("ABCDE"); for character in string.chars() { println!("{}", character); } /* A B C D E */ |
■ Iterator 트레잇의 rev 메소드를 사용해 반복자 방향을 반대로 하는 방법을 보여준다. ▶ 예제 코드 (RS)
|
for index in (1..11).rev() { println!("{}", index); } |
■ Iterator 트레잇의 map 메소드를 사용해 분할 문자열 벡터를 구하는 방법을 보여준다. ▶ 예제 코드 (RS)
|
use std::str; let source : &str = "가가가,나나나,다다다"; let split :str::Split<'_, &str> = source.split(","); let string_vector : Vec<String> = split.map(|s| s.to_string()).collect(); println!("{:?}", string_vector); |
■ Chars 구조체의 next 메소드를 사용해 다음 문자를 구하는 방법을 보여준다. ▶ 예제 코드 (RS)
|
use std::str; let source_string : String = String::from("ABCDEFGHIJKLMNOPQRSTUVWXYZ".to_string()); let mut source_chars: str::Chars = source_string.chars(); while let Some(source_character) = source_chars.next() { println!("{}", source_character); } |
■ String 구조체의 chars 메소드를 사용해 반복자를 구하는 방법을 보여준다. ▶ 예제 코드 (RS)
|
use std::str; let source_string : String = String::from("ABCDEFGHIJKLMNOPQRSTUVWXYZ".to_string()); let mut source_chars: str::Chars = source_string.chars(); |
■ Iterator 트레잇의 take 메소드를 사용하는 방법을 보여준다. ▶ 예제 코드 (RS)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
struct NumberIterator { maximum : usize, value : usize } impl NumberIterator { fn new(minimum : usize, maximum : usize) -> Self { return NumberIterator { maximum : maximum, value : minimum }; } } impl Iterator for NumberIterator { type Item = usize; fn next(&mut self) -> Option<Self::Item> { if self.value > self.maximum { return None; } self.value += 1; return Some(self.value - 1); } } fn main() { let iterator : NumberIterator = NumberIterator::new(10, 19); for value in iterator.take(5) { println!("{}", value); } } /* 10 11 12 13 14 */ |
■ Iterator 트레잇의 for_each 메소드를 사용하는 방법을 보여준다. ▶ 예제 코드 (RS)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
struct NumberIterator { maximum : usize, value : usize } impl NumberIterator { fn new(minimum : usize, maximum : usize) -> Self { return NumberIterator { maximum : maximum, value : minimum }; } } impl Iterator for NumberIterator { type Item = usize; fn next(&mut self) -> Option<Self::Item> { if self.value > self.maximum { return None; } self.value += 1; return Some(self.value - 1); } } fn main() { let iterator : NumberIterator = NumberIterator::new(10, 14); iterator.for_each(|value| println!("{}", value)); } /* 10 11 12 13 14 */ |
■ Iterator 트레잇의 enumerate 메소드를 사용하는 방법을 보여준다. ▶ 예제 코드 (RS)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
struct NumberIterator { maximum : usize, value : usize } impl NumberIterator { fn new(minimum : usize, maximum : usize) -> Self { return NumberIterator { maximum : maximum, value : minimum }; } } impl Iterator for NumberIterator { type Item = usize; fn next(&mut self) -> Option<Self::Item> { if self.value > self.maximum { return None; } self.value += 1; return Some(self.value - 1); } } fn main() { let iterator : NumberIterator = NumberIterator::new(10, 15); for (index, value) in iterator.enumerate() { println!("{} : {}", index, value); } } /* 0 : 10 1 : 11 2 : 12 3 : 13 4 : 14 5 : 15 */ |
■ Iterator 트레잇을 사용해 피보나치 수열을 구하는 반복자를 만드는 방법을 보여준다. ▶ 예제 코드 (RS)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
struct FibonacciIterator { a : usize, b : usize } impl FibonacciIterator { fn new() -> Self { return FibonacciIterator { a : 1, b : 1 }; } } impl Iterator for FibonacciIterator { type Item = usize; fn next(&mut self) -> Option<Self::Item> { let temporary_value : usize = self.a; self.a = self.b; self.b += temporary_value; return Some(self.a); } } fn main() { let fibonacci_iterator1 : FibonacciIterator = FibonacciIterator::new(); for (index, value) in fibonacci_iterator1.enumerate() { if index >= 10 { break; } print!("{},", value); } println!(""); let fibonacci_iterator2 : FibonacciIterator = FibonacciIterator::new(); fibonacci_iterator2.take(10).for_each(|value : usize| print!("{},", value)); print!("\n") } |
■ Iterator 트레잇을 구현해 소수를 구하는 반복자를 만드는 방법을 보여준다. ▶ 예제 코드 (RS)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
struct PrimeIterator { n : u8 } impl PrimeIterator { fn new() -> Self { return PrimeIterator { n : 1 }; } fn is_prime(&self) -> bool { for i in 2..self.n { if self.n % i == 0 { return false; } } return true; } } impl Iterator for PrimeIterator { type Item = u8; fn next(&mut self) -> Option<Self::Item> { loop { self.n += 1; if std::u8::MAX == self.n { return None } if self.is_prime() { return Some(self.n); } } } } fn main() { let prime_iterator : PrimeIterator = PrimeIterator::new(); for n in prime_iterator { print!("{},", n); } } |