stevenrwalter

Untitled

Apr 19th, 2015
413
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rust 3.80 KB | None | 0 0
  1. use std::fmt;                                                                                            
  2. use std::string::String;                                                                                  
  3.                                                                                                          
  4. enum FizzBuzz {                                                                                          
  5.         Fizz,                                                                                            
  6.         Buzz,                                                                                            
  7.         FizzBuzz,                                                                                        
  8.         Other(i32)                                                                                        
  9. }                                                                                                        
  10.                                                                                                          
  11. fn toFizzBuzz (x: &i32) -> FizzBuzz {                                                                    
  12.         match x {                                                                                        
  13.                 _ if *x % 3 == 0 && *x % 5 == 0 => FizzBuzz::FizzBuzz,                                    
  14.                 _ if *x % 3 == 0 => FizzBuzz::Fizz,                                                      
  15.                 _ if *x % 5 == 0 => FizzBuzz::Buzz,                                                      
  16.                 _ => FizzBuzz::Other(*x)                                                                  
  17.         }                                                                                                
  18. }                                                                                                        
  19.                                                                                                          
  20. impl fmt::Display for FizzBuzz {                                                                          
  21.         fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> {                                
  22.                 f.write_fmt(format_args!("{}", match self {                                              
  23.                         &FizzBuzz::Fizz => String::from_str("Fizz"),                                      
  24.                         &FizzBuzz::Buzz => String::from_str("Buzz"),                                      
  25.                         &FizzBuzz::FizzBuzz => String::from_str("FizzBuzz"),                              
  26.                         &FizzBuzz::Other(x) => x.to_string()                                              
  27.                 }));                                                                                      
  28.                 return Ok(());                                                                            
  29.         }                                                                                                
  30. }                                                                                                        
  31.                                                                                                          
  32. fn main () {                                                                                              
  33.         let input = vec![1, 3, 5, 15, 20, 21];                                                            
  34.         for x in input.iter().map(toFizzBuzz) {                                                          
  35.                 println!("{}", x);                                                                        
  36.         }                                                                                                
  37. }
Advertisement
Add Comment
Please, Sign In to add comment