// run-rustfix
#![warn(clippy::iter_overeager_cloned, clippy::redundant_clone, clippy::filter_next)]
+#![allow(dead_code, clippy::let_unit_value)]
fn main() {
let vec = vec!["1".to_string(), "2".to_string(), "3".to_string()];
let _ = vec.iter().filter(|x| x == &"2").nth(2).cloned();
let _ = [Some(Some("str".to_string())), Some(Some("str".to_string()))]
- .iter().flatten().cloned();
+ .iter()
+ .flatten().cloned();
// Not implemented yet
let _ = vec.iter().cloned().filter(|x| x.starts_with('2'));
// Should probably stay as it is.
let _ = [0, 1, 2, 3, 4].iter().cloned().take(10);
+
+ // `&Range<_>` doesn't implement `IntoIterator`
+ let _ = [0..1, 2..5].iter().cloned().flatten();
+}
+
+// #8527
+fn cloned_flatten(x: Option<&Option<String>>) -> Option<String> {
+ x.cloned().flatten()
}