[PATCH 1/7] drm/panic: avoid reimplementing Iterator::find
Jocelyn Falempe
jfalempe at redhat.com
Mon Oct 14 08:44:56 UTC 2024
On 12/10/2024 09:52, Thomas Böhler wrote:
> Rust's standard library's `std::iter::Iterator` trait provides a function
> `find` that finds the first element that satisfies a predicate.
> The function `Version::from_segments` is doing the same thing but is
> implementing the same logic itself.
> Clippy complains about this in the `manual_find` lint:
>
> error: manual implementation of `Iterator::find`
> --> drivers/gpu/drm/drm_panic_qr.rs:212:9
> |
> 212 | / for v in (1..=40).map(|k| Version(k)) {
> 213 | | if v.max_data() * 8 >= segments.iter().map(|s| s.total_size_bits(v)).sum() {
> 214 | | return Some(v);
> 215 | | }
> 216 | | }
> 217 | | None
> | |____________^ help: replace with an iterator: `(1..=40).map(|k| Version(k)).find(|&v| v.max_data() * 8 >= segments.iter().map(|s| s.total_size_bits(v)).sum())`
> |
> = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_find
> = note: `-D clippy::manual-find` implied by `-D warnings`
> = help: to override `-D warnings` add `#[allow(clippy::manual_find)]`
>
> Use `Iterator::find` instead to make the intention clearer.
Thanks for this patch, and the whole series.
It's a nice cleanup.
Reviewed-by: Jocelyn Falempe <jfalempe at redhat.com>
--
Jocelyn
>
> Reported-by: Miguel Ojeda <ojeda at kernel.org>
> Closes: https://github.com/Rust-for-Linux/linux/issues/1123
> Signed-off-by: Thomas Böhler <witcher at wiredspace.de>
> ---
> drivers/gpu/drm/drm_panic_qr.rs | 9 +++------
> 1 file changed, 3 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_panic_qr.rs b/drivers/gpu/drm/drm_panic_qr.rs
> index 1ef56cb07dfb..76decf49e678 100644
> --- a/drivers/gpu/drm/drm_panic_qr.rs
> +++ b/drivers/gpu/drm/drm_panic_qr.rs
> @@ -209,12 +209,9 @@
> impl Version {
> /// Returns the smallest QR version than can hold these segments.
> fn from_segments(segments: &[&Segment<'_>]) -> Option<Version> {
> - for v in (1..=40).map(|k| Version(k)) {
> - if v.max_data() * 8 >= segments.iter().map(|s| s.total_size_bits(v)).sum() {
> - return Some(v);
> - }
> - }
> - None
> + (1..=40)
> + .map(Version)
> + .find(|&v| v.max_data() * 8 >= segments.iter().map(|s| s.total_size_bits(v)).sum())
> }
>
> fn width(&self) -> u8 {
More information about the dri-devel
mailing list