Skip to content

Use ControlFlow in more visitors #12829

Closed
@y21

Description

@y21

Description

As of "recently" the Visitor and TypeVisitor traits have an optional associated Result type that can be used to early exit the visitor, by setting type Result = ControlFlow<()> (instead of the implicit type Result = ()).

A lot of lints (and utils) use visitors to search for something in HIR nodes and try to avoid doing a bunch of extra work by storing something like a bool for "done" and then ignore any visit_* calls when set to true, but rustc will still keep calling into the visitor (for e.g. the remaining statements in a block), so it seems like a good idea to make use of this associated type by setting type Result = ControlFlow<()>; in more places.

This seems especially useful for e.g. for_each_expr, where a lot of lints already do return ControlFlow.

Version

No response

Additional Labels

No response

Metadata

Metadata

Assignees

Labels

performance-projectFor issues and PRs related to the Clippy Performance Project

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions