Rod*_*igo 4 generics algorithm vector slice rust
给定任何切片,例如:
let words = &["one", "one", "one", "two"];
Run Code Online (Sandbox Code Playgroud)
如何知道所有元素是否相同?
更进一步,如果所有元素都相同,如何返回对第一个元素的引用?
本质上,我正在尝试编写一个如下函数:
fn are_all_elements_equal<T>(elems: &[T]) -> Option<&T> {
// ... ?
}
Run Code Online (Sandbox Code Playgroud)
我认为这是子切片模式的一个很好的用例:
pub fn are_all_elements_equal<T: PartialEq>(elems: &[T]) -> Option<&T> {
match elems {
[head, tail @ ..] => tail.iter().all(|x| x == head).then(|| head),
[] => None,
}
}
Run Code Online (Sandbox Code Playgroud)