stevenrwalter icon

Untitled

stevenrwalter | PRO | 04/20/15 02:35:57 AM UTC | 0 ⭐ | 380 👁️ | Never ⏰ | []
Rust |

3.8 KB

|

None

|

0 👍

/

0 👎

use std::fmt;                                                                                             
use std::string::String;                                                                                  
                                                                                                          
enum FizzBuzz {                                                                                           
        Fizz,                                                                                             
        Buzz,                                                                                             
        FizzBuzz,                                                                                         
        Other(i32)                                                                                        
}                                                                                                         
                                                                                                          
fn toFizzBuzz (x: &i32) -> FizzBuzz {                                                                     
        match x {                                                                                         
                _ if *x % 3 == 0 && *x % 5 == 0 => FizzBuzz::FizzBuzz,                                    
                _ if *x % 3 == 0 => FizzBuzz::Fizz,                                                       
                _ if *x % 5 == 0 => FizzBuzz::Buzz,                                                       
                _ => FizzBuzz::Other(*x)                                                                  
        }                                                                                                 
}                                                                                                         
                                                                                                          
impl fmt::Display for FizzBuzz {                                                                          
        fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> {                                 
                f.write_fmt(format_args!("{}", match self {                                               
                        &FizzBuzz::Fizz => String::from_str("Fizz"),                                      
                        &FizzBuzz::Buzz => String::from_str("Buzz"),                                      
                        &FizzBuzz::FizzBuzz => String::from_str("FizzBuzz"),                              
                        &FizzBuzz::Other(x) => x.to_string()                                              
                }));                                                                                      
                return Ok(());                                                                            
        }                                                                                                 
}                                                                                                         
                                                                                                          
fn main () {                                                                                              
        let input = vec![1, 3, 5, 15, 20, 21];                                                            
        for x in input.iter().map(toFizzBuzz) {                                                           
                println!("{}", x);                                                                        
        }                                                                                                 
}

Comments