Any comments would be appreciative. Thanks for looking!
fn main() {
assert_eq!(pig_latin("apple".to_string()), "apple-hay".to_string());
assert_eq!(pig_latin("banana".to_string()), "anana-bay".to_string());
assert_eq!(pig_latin("Здравствуйте".to_string()), "дравствуйте-Зay".to_string());
}
// Pig Latin
fn pig_latin(phrase: String)-> String {
struct FirstLetter {
first_letter: char,
}
impl FirstLetter {
// Get a vowel function.
fn is_vowel(&self)-> bool {
match self.first_letter {
'A' | 'a' | 'E' | 'e' | 'I' | 'i' | 'O' | 'o' | 'U' | 'u' => {
true
},
_ => false,
}
}
fn new(first_letter: char)-> FirstLetter {
FirstLetter {
first_letter
}
}
}
let mut phrase_chars = phrase.chars();
let first_letter = match phrase_chars.next() {
Some(char) => char,
None => panic!("Empty String?")
};
let first_letter = FirstLetter::new(first_letter);
let mut pig_latin = String::new();
// apple : a
// banana :
if first_letter.is_vowel() {
pig_latin.push(first_letter.first_letter);
}
// apple : apple
// banana : anana
while let Some(char) = phrase_chars.next() {
pig_latin.push(char);
};
// apple : apple-
// banana : anana-
pig_latin.push('-');
// apple : apple-b
// banana : anana-h
if !first_letter.is_vowel() {
pig_latin.push(first_letter.first_letter);
} else {
pig_latin.push('h');
}
// apple : apple-bay
// banana : anana-hy
pig_latin.push_str(&"ay");
pig_latin
}