use unicode_segmentation::UnicodeSegmentation; pub trait Palindrome { fn is_palindrome(&self) -> bool; } impl Palindrome for [N] where N: Clone + PartialEq { fn is_palindrome(&self) -> bool { if self.is_empty() { true } else { let rev: Vec = self.iter().map(|n| n.clone()).rev().collect(); &rev == self } } } impl Palindrome for str { fn is_palindrome(&self) -> bool { let rev: String = self.graphemes(true).rev().collect(); &rev == self } }