pub(crate) fn needs_clippy_allow<'a, I>(fragments: I) -> (bool, bool)
where
I: IntoIterator<Item = &'a str>,
{
let mut needs_redundant_closure = false;
let mut needs_useless_conversion = false;
for fragment in fragments {
needs_redundant_closure |= fragment.contains("(|");
needs_useless_conversion |= fragment.contains(".into()") || fragment.contains("Into::into");
if needs_redundant_closure && needs_useless_conversion {
break;
}
}
(needs_redundant_closure, needs_useless_conversion)
}
pub(crate) fn clippy_allow_attr_line(needs_redundant_closure: bool, needs_useless_conversion: bool) -> String {
match (needs_redundant_closure, needs_useless_conversion) {
(true, true) => "#[allow(clippy::redundant_closure, clippy::useless_conversion)]\n".to_string(),
(true, false) => "#[allow(clippy::redundant_closure)]\n".to_string(),
(false, true) => "#[allow(clippy::useless_conversion)]\n".to_string(),
(false, false) => String::new(),
}
}