+++ /dev/null
-pub fn first_word(s: &str) -> &str {
- for (i, &item) in s.as_bytes().iter().enumerate() {
- if item == b' ' {
- return &s[..i];
- }
- }
-
- s
-}
-
-pub fn second_word(s: &str) -> Option<&str> {
- for (i, &item) in s.as_bytes().iter().enumerate() {
- if item == b' ' {
- return Some(first_word(&s[(i + 1)..]));
- }
- }
-
- None
-}
-
-#[cfg(test)]
-mod tests {
- use super::*;
-
- #[test]
- fn test_first_word() {
- assert_eq!(first_word(""), "");
- assert_eq!(first_word("one"), "one");
- assert_eq!(first_word("one two"), "one");
-
- assert_eq!(first_word(&String::from("one two")), "one");
- }
-
- #[test]
- fn test_second_word() {
- assert_eq!(second_word(""), None);
- assert_eq!(second_word("one"), None);
- assert_eq!(second_word("one two"), Some("two"));
- assert_eq!(second_word("one two three"), Some("two"));
-
- assert_eq!(second_word(&String::from("one two three")), Some("two"));
- }
-}