diff --git a/crates/ruff_linter/src/rules/pycodestyle/rules/invalid_escape_sequence.rs b/crates/ruff_linter/src/rules/pycodestyle/rules/invalid_escape_sequence.rs index 3f3b5bce60..20caecb9db 100644 --- a/crates/ruff_linter/src/rules/pycodestyle/rules/invalid_escape_sequence.rs +++ b/crates/ruff_linter/src/rules/pycodestyle/rules/invalid_escape_sequence.rs @@ -87,7 +87,7 @@ pub(crate) fn invalid_escape_sequence(checker: &mut Checker, string_like: String } StringLikePart::FString(f_string) => { let flags = AnyStringFlags::from(f_string.flags); - for element in f_string.elements.iter() { + for element in &f_string.elements { match element { FStringElement::Literal(literal) => { check( diff --git a/crates/ruff_python_ast/src/node.rs b/crates/ruff_python_ast/src/node.rs index cfdbe7113f..d8c2e3eacf 100644 --- a/crates/ruff_python_ast/src/node.rs +++ b/crates/ruff_python_ast/src/node.rs @@ -2814,7 +2814,7 @@ impl AstNode for ast::FStringFormatSpec { where V: PreorderVisitor<'a> + ?Sized, { - for element in self.elements.iter() { + for element in &self.elements { visitor.visit_f_string_element(element); } } @@ -2864,7 +2864,7 @@ impl AstNode for ast::FStringExpressionElement { visitor.visit_expr(expression); if let Some(format_spec) = format_spec { - for spec_part in format_spec.elements.iter() { + for spec_part in &format_spec.elements { visitor.visit_f_string_element(spec_part); } } @@ -4800,7 +4800,7 @@ impl AstNode for ast::FString { flags: _, } = self; - for fstring_element in elements.iter() { + for fstring_element in elements { visitor.visit_f_string_element(fstring_element); } } diff --git a/crates/ruff_python_ast/src/nodes.rs b/crates/ruff_python_ast/src/nodes.rs index eea4462dc0..f0f45e5aa3 100644 --- a/crates/ruff_python_ast/src/nodes.rs +++ b/crates/ruff_python_ast/src/nodes.rs @@ -1526,6 +1526,24 @@ impl From> for FStringElements { } } +impl<'a> IntoIterator for &'a FStringElements { + type IntoIter = Iter<'a, FStringElement>; + type Item = &'a FStringElement; + + fn into_iter(self) -> Self::IntoIter { + self.iter() + } +} + +impl<'a> IntoIterator for &'a mut FStringElements { + type IntoIter = IterMut<'a, FStringElement>; + type Item = &'a mut FStringElement; + + fn into_iter(self) -> Self::IntoIter { + self.iter_mut() + } +} + impl Deref for FStringElements { type Target = Vec; diff --git a/crates/ruff_python_ast/src/visitor.rs b/crates/ruff_python_ast/src/visitor.rs index f4680088a3..bf14e5a0cf 100644 --- a/crates/ruff_python_ast/src/visitor.rs +++ b/crates/ruff_python_ast/src/visitor.rs @@ -739,7 +739,7 @@ pub fn walk_pattern_keyword<'a, V: Visitor<'a> + ?Sized>( } pub fn walk_f_string<'a, V: Visitor<'a> + ?Sized>(visitor: &mut V, f_string: &'a FString) { - for f_string_element in f_string.elements.iter() { + for f_string_element in &f_string.elements { visitor.visit_f_string_element(f_string_element); } } @@ -756,7 +756,7 @@ pub fn walk_f_string_element<'a, V: Visitor<'a> + ?Sized>( { visitor.visit_expr(expression); if let Some(format_spec) = format_spec { - for spec_element in format_spec.elements.iter() { + for spec_element in &format_spec.elements { visitor.visit_f_string_element(spec_element); } } diff --git a/crates/ruff_python_ast/src/visitor/transformer.rs b/crates/ruff_python_ast/src/visitor/transformer.rs index aa309dabbf..9589617ee0 100644 --- a/crates/ruff_python_ast/src/visitor/transformer.rs +++ b/crates/ruff_python_ast/src/visitor/transformer.rs @@ -746,7 +746,7 @@ pub fn walk_pattern_keyword( } pub fn walk_f_string(visitor: &V, f_string: &mut FString) { - for element in f_string.elements.iter_mut() { + for element in &mut f_string.elements { visitor.visit_f_string_element(element); } } @@ -763,7 +763,7 @@ pub fn walk_f_string_element( { visitor.visit_expr(expression); if let Some(format_spec) = format_spec { - for spec_element in format_spec.elements.iter_mut() { + for spec_element in &mut format_spec.elements { visitor.visit_f_string_element(spec_element); } }