Skip to content

Commit

Permalink
[tuple_array_conversions]: move from complexity to pedantic
Browse files Browse the repository at this point in the history
The lint suggestion is arguably often less readable and more complex than the original code.

For example, which of the following is the most readable:
```rust
let _vertices = edges.flat_map(|(src, dst)| [src, dst]);
let _vertices = edges.flat_map(<_ as Into<[i32; 2]>>::into);
let _vertices = edges.flat_map(<[i32; 2]>::from);
```

The lint really only applies if the tuple is either long enough that naming the fields is silly (maybe at least 4 entries long), or if the author intends the fields to be homogenous, which is author intent and can't be determined by the lint. Therefore I think the lint should be marked as pedantic.

Currently, there are also a lot of false positives with the lint:
* rust-lang#11082
* rust-lang#11085
* rust-lang#11100 (rust-lang#11105)
* rust-lang#11124
* rust-lang#11144

Should fix those issues before enabling it for everyone.
  • Loading branch information
MingweiSamuel committed Jul 12, 2023
1 parent 3be3fb7 commit 35e7588
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions clippy_lints/src/tuple_array_conversions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ declare_clippy_lint! {
/// Checks for tuple<=>array conversions that are not done with `.into()`.
///
/// ### Why is this bad?
/// It's unnecessary complexity. `.into()` works for tuples<=>arrays at or below 12 elements and
/// conveys the intent a lot better, while also leaving less room for hard to spot bugs!
/// It may be unnecessary complexity. `.into()` works for converting tuples
/// <=> arrays of up to 12 elements and may convey intent more clearly.
///
/// ### Example
/// ```rust,ignore
Expand All @@ -31,7 +31,7 @@ declare_clippy_lint! {
/// ```
#[clippy::version = "1.72.0"]
pub TUPLE_ARRAY_CONVERSIONS,
complexity,
pedantic,
"checks for tuple<=>array conversions that are not done with `.into()`"
}
impl_lint_pass!(TupleArrayConversions => [TUPLE_ARRAY_CONVERSIONS]);
Expand Down

0 comments on commit 35e7588

Please sign in to comment.