Remove overlap between manual_split_once and needless_splitn
Also fixes some incorrect suggestions for rsplitn
This commit is contained in:
parent
1cec8b30fa
commit
6fba89751b
9 changed files with 221 additions and 264 deletions
|
|
@ -1,11 +1,3 @@
|
|||
error: manual implementation of `split_once`
|
||||
--> $DIR/ice-8250.rs:2:13
|
||||
|
|
||||
LL | let _ = s[1..].splitn(2, '.').next()?;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `s[1..].split_once('.').map_or(s[1..], |x| x.0)`
|
||||
|
|
||||
= note: `-D clippy::manual-split-once` implied by `-D warnings`
|
||||
|
||||
error: unnecessary use of `splitn`
|
||||
--> $DIR/ice-8250.rs:2:13
|
||||
|
|
||||
|
|
@ -14,5 +6,5 @@ LL | let _ = s[1..].splitn(2, '.').next()?;
|
|||
|
|
||||
= note: `-D clippy::needless-splitn` implied by `-D warnings`
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
#![feature(custom_inner_attributes)]
|
||||
#![warn(clippy::manual_split_once)]
|
||||
#![allow(clippy::iter_skip_next, clippy::iter_nth_zero, clippy::needless_splitn)]
|
||||
#![allow(clippy::iter_skip_next, clippy::iter_nth_zero)]
|
||||
|
||||
extern crate itertools;
|
||||
|
||||
|
|
@ -10,27 +10,25 @@ extern crate itertools;
|
|||
use itertools::Itertools;
|
||||
|
||||
fn main() {
|
||||
let _ = Some("key=value".split_once('=').map_or("key=value", |x| x.0));
|
||||
let _ = "key=value".splitn(2, '=').nth(2);
|
||||
let _ = "key=value".split_once('=').map_or("key=value", |x| x.0);
|
||||
let _ = "key=value".split_once('=').map_or("key=value", |x| x.0);
|
||||
let _ = "key=value".split_once('=').unwrap().1;
|
||||
let _ = "key=value".split_once('=').unwrap().1;
|
||||
let (_, _) = "key=value".split_once('=').unwrap();
|
||||
|
||||
let s = String::from("key=value");
|
||||
let _ = s.split_once('=').map_or(&*s, |x| x.0);
|
||||
let _ = s.split_once('=').unwrap().1;
|
||||
|
||||
let s = Box::<str>::from("key=value");
|
||||
let _ = s.split_once('=').map_or(&*s, |x| x.0);
|
||||
let _ = s.split_once('=').unwrap().1;
|
||||
|
||||
let s = &"key=value";
|
||||
let _ = s.split_once('=').map_or(*s, |x| x.0);
|
||||
let _ = s.split_once('=').unwrap().1;
|
||||
|
||||
fn _f(s: &str) -> Option<&str> {
|
||||
let _ = s.split_once("key=value").map_or(s, |x| x.0);
|
||||
let _ = s.split_once("key=value")?.1;
|
||||
let _ = s.split_once("key=value")?.1;
|
||||
let _ = s.split_once('=')?.1;
|
||||
let _ = s.split_once('=')?.1;
|
||||
let _ = s.rsplit_once('=')?.0;
|
||||
let _ = s.rsplit_once('=')?.0;
|
||||
None
|
||||
}
|
||||
|
||||
|
|
@ -38,10 +36,9 @@ fn main() {
|
|||
let _ = [0, 1, 2].splitn(2, |&x| x == 1).nth(1).unwrap();
|
||||
|
||||
// `rsplitn` gives the results in the reverse order of `rsplit_once`
|
||||
let _ = "key=value".rsplitn(2, '=').next().unwrap();
|
||||
let _ = "key=value".rsplit_once('=').unwrap().0;
|
||||
let _ = "key=value".rsplit_once('=').map(|x| x.1);
|
||||
let (_, _) = "key=value".rsplit_once('=').map(|(x, y)| (y, x)).unwrap();
|
||||
let _ = s.rsplit_once('=').map(|x| x.0);
|
||||
}
|
||||
|
||||
fn _msrv_1_51() {
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
#![feature(custom_inner_attributes)]
|
||||
#![warn(clippy::manual_split_once)]
|
||||
#![allow(clippy::iter_skip_next, clippy::iter_nth_zero, clippy::needless_splitn)]
|
||||
#![allow(clippy::iter_skip_next, clippy::iter_nth_zero)]
|
||||
|
||||
extern crate itertools;
|
||||
|
||||
|
|
@ -10,27 +10,25 @@ extern crate itertools;
|
|||
use itertools::Itertools;
|
||||
|
||||
fn main() {
|
||||
let _ = "key=value".splitn(2, '=').next();
|
||||
let _ = "key=value".splitn(2, '=').nth(2);
|
||||
let _ = "key=value".splitn(2, '=').next().unwrap();
|
||||
let _ = "key=value".splitn(2, '=').nth(0).unwrap();
|
||||
let _ = "key=value".splitn(2, '=').nth(1).unwrap();
|
||||
let _ = "key=value".splitn(2, '=').skip(1).next().unwrap();
|
||||
let (_, _) = "key=value".splitn(2, '=').next_tuple().unwrap();
|
||||
|
||||
let s = String::from("key=value");
|
||||
let _ = s.splitn(2, '=').next().unwrap();
|
||||
let _ = s.splitn(2, '=').nth(1).unwrap();
|
||||
|
||||
let s = Box::<str>::from("key=value");
|
||||
let _ = s.splitn(2, '=').nth(0).unwrap();
|
||||
let _ = s.splitn(2, '=').nth(1).unwrap();
|
||||
|
||||
let s = &"key=value";
|
||||
let _ = s.splitn(2, '=').skip(0).next().unwrap();
|
||||
let _ = s.splitn(2, '=').skip(1).next().unwrap();
|
||||
|
||||
fn _f(s: &str) -> Option<&str> {
|
||||
let _ = s.splitn(2, "key=value").next()?;
|
||||
let _ = s.splitn(2, "key=value").nth(1)?;
|
||||
let _ = s.splitn(2, "key=value").skip(1).next()?;
|
||||
let _ = s.splitn(2, '=').nth(1)?;
|
||||
let _ = s.splitn(2, '=').skip(1).next()?;
|
||||
let _ = s.rsplitn(2, '=').nth(1)?;
|
||||
let _ = s.rsplitn(2, '=').skip(1).next()?;
|
||||
None
|
||||
}
|
||||
|
||||
|
|
@ -38,10 +36,9 @@ fn main() {
|
|||
let _ = [0, 1, 2].splitn(2, |&x| x == 1).nth(1).unwrap();
|
||||
|
||||
// `rsplitn` gives the results in the reverse order of `rsplit_once`
|
||||
let _ = "key=value".rsplitn(2, '=').next().unwrap();
|
||||
let _ = "key=value".rsplitn(2, '=').nth(1).unwrap();
|
||||
let _ = "key=value".rsplitn(2, '=').nth(0);
|
||||
let (_, _) = "key=value".rsplitn(2, '=').next_tuple().unwrap();
|
||||
let _ = s.rsplitn(2, '=').nth(1);
|
||||
}
|
||||
|
||||
fn _msrv_1_51() {
|
||||
|
|
|
|||
|
|
@ -1,100 +1,88 @@
|
|||
error: manual implementation of `split_once`
|
||||
--> $DIR/manual_split_once.rs:13:13
|
||||
--> $DIR/manual_split_once.rs:14:13
|
||||
|
|
||||
LL | let _ = "key=value".splitn(2, '=').next();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `Some("key=value".split_once('=').map_or("key=value", |x| x.0))`
|
||||
LL | let _ = "key=value".splitn(2, '=').nth(1).unwrap();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `"key=value".split_once('=').unwrap().1`
|
||||
|
|
||||
= note: `-D clippy::manual-split-once` implied by `-D warnings`
|
||||
|
||||
error: manual implementation of `split_once`
|
||||
--> $DIR/manual_split_once.rs:15:13
|
||||
|
|
||||
LL | let _ = "key=value".splitn(2, '=').next().unwrap();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `"key=value".split_once('=').map_or("key=value", |x| x.0)`
|
||||
|
||||
error: manual implementation of `split_once`
|
||||
--> $DIR/manual_split_once.rs:16:13
|
||||
|
|
||||
LL | let _ = "key=value".splitn(2, '=').nth(0).unwrap();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `"key=value".split_once('=').map_or("key=value", |x| x.0)`
|
||||
|
||||
error: manual implementation of `split_once`
|
||||
--> $DIR/manual_split_once.rs:17:13
|
||||
|
|
||||
LL | let _ = "key=value".splitn(2, '=').nth(1).unwrap();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `"key=value".split_once('=').unwrap().1`
|
||||
|
||||
error: manual implementation of `split_once`
|
||||
--> $DIR/manual_split_once.rs:18:13
|
||||
|
|
||||
LL | let _ = "key=value".splitn(2, '=').skip(1).next().unwrap();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `"key=value".split_once('=').unwrap().1`
|
||||
|
||||
error: manual implementation of `split_once`
|
||||
--> $DIR/manual_split_once.rs:19:18
|
||||
--> $DIR/manual_split_once.rs:16:18
|
||||
|
|
||||
LL | let (_, _) = "key=value".splitn(2, '=').next_tuple().unwrap();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `"key=value".split_once('=')`
|
||||
|
||||
error: manual implementation of `split_once`
|
||||
--> $DIR/manual_split_once.rs:19:13
|
||||
|
|
||||
LL | let _ = s.splitn(2, '=').nth(1).unwrap();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `s.split_once('=').unwrap().1`
|
||||
|
||||
error: manual implementation of `split_once`
|
||||
--> $DIR/manual_split_once.rs:22:13
|
||||
|
|
||||
LL | let _ = s.splitn(2, '=').next().unwrap();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `s.split_once('=').map_or(&*s, |x| x.0)`
|
||||
LL | let _ = s.splitn(2, '=').nth(1).unwrap();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `s.split_once('=').unwrap().1`
|
||||
|
||||
error: manual implementation of `split_once`
|
||||
--> $DIR/manual_split_once.rs:25:13
|
||||
|
|
||||
LL | let _ = s.splitn(2, '=').nth(0).unwrap();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `s.split_once('=').map_or(&*s, |x| x.0)`
|
||||
LL | let _ = s.splitn(2, '=').skip(1).next().unwrap();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `s.split_once('=').unwrap().1`
|
||||
|
||||
error: manual implementation of `split_once`
|
||||
--> $DIR/manual_split_once.rs:28:13
|
||||
--> $DIR/manual_split_once.rs:28:17
|
||||
|
|
||||
LL | let _ = s.splitn(2, '=').skip(0).next().unwrap();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `s.split_once('=').map_or(*s, |x| x.0)`
|
||||
LL | let _ = s.splitn(2, '=').nth(1)?;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `s.split_once('=')?.1`
|
||||
|
||||
error: manual implementation of `split_once`
|
||||
--> $DIR/manual_split_once.rs:31:17
|
||||
--> $DIR/manual_split_once.rs:29:17
|
||||
|
|
||||
LL | let _ = s.splitn(2, "key=value").next()?;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `s.split_once("key=value").map_or(s, |x| x.0)`
|
||||
|
||||
error: manual implementation of `split_once`
|
||||
--> $DIR/manual_split_once.rs:32:17
|
||||
|
|
||||
LL | let _ = s.splitn(2, "key=value").nth(1)?;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `s.split_once("key=value")?.1`
|
||||
|
||||
error: manual implementation of `split_once`
|
||||
--> $DIR/manual_split_once.rs:33:17
|
||||
|
|
||||
LL | let _ = s.splitn(2, "key=value").skip(1).next()?;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `s.split_once("key=value")?.1`
|
||||
LL | let _ = s.splitn(2, '=').skip(1).next()?;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `s.split_once('=')?.1`
|
||||
|
||||
error: manual implementation of `rsplit_once`
|
||||
--> $DIR/manual_split_once.rs:42:13
|
||||
--> $DIR/manual_split_once.rs:30:17
|
||||
|
|
||||
LL | let _ = s.rsplitn(2, '=').nth(1)?;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `s.rsplit_once('=')?.0`
|
||||
|
||||
error: manual implementation of `rsplit_once`
|
||||
--> $DIR/manual_split_once.rs:31:17
|
||||
|
|
||||
LL | let _ = s.rsplitn(2, '=').skip(1).next()?;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `s.rsplit_once('=')?.0`
|
||||
|
||||
error: manual implementation of `rsplit_once`
|
||||
--> $DIR/manual_split_once.rs:39:13
|
||||
|
|
||||
LL | let _ = "key=value".rsplitn(2, '=').nth(1).unwrap();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `"key=value".rsplit_once('=').unwrap().0`
|
||||
|
||||
error: manual implementation of `rsplit_once`
|
||||
--> $DIR/manual_split_once.rs:43:13
|
||||
|
|
||||
LL | let _ = "key=value".rsplitn(2, '=').nth(0);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `"key=value".rsplit_once('=').map(|x| x.1)`
|
||||
|
||||
error: manual implementation of `rsplit_once`
|
||||
--> $DIR/manual_split_once.rs:44:18
|
||||
--> $DIR/manual_split_once.rs:40:18
|
||||
|
|
||||
LL | let (_, _) = "key=value".rsplitn(2, '=').next_tuple().unwrap();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `"key=value".rsplit_once('=').map(|(x, y)| (y, x))`
|
||||
|
||||
error: manual implementation of `rsplit_once`
|
||||
--> $DIR/manual_split_once.rs:41:13
|
||||
|
|
||||
LL | let _ = s.rsplitn(2, '=').nth(1);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `s.rsplit_once('=').map(|x| x.0)`
|
||||
|
||||
error: manual implementation of `split_once`
|
||||
--> $DIR/manual_split_once.rs:55:13
|
||||
--> $DIR/manual_split_once.rs:52:13
|
||||
|
|
||||
LL | let _ = "key=value".splitn(2, '=').nth(1).unwrap();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `"key=value".split_once('=').unwrap().1`
|
||||
|
||||
error: aborting due to 16 previous errors
|
||||
error: aborting due to 14 previous errors
|
||||
|
||||
|
|
|
|||
|
|
@ -24,4 +24,24 @@ fn main() {
|
|||
let _ = str.rsplitn(2, '=').nth(1);
|
||||
let (_, _) = str.rsplitn(2, '=').next_tuple().unwrap();
|
||||
let (_, _) = str.rsplit('=').next_tuple().unwrap();
|
||||
|
||||
let _ = str.split('=').next();
|
||||
let _ = str.split('=').nth(3);
|
||||
let _ = str.splitn(5, '=').nth(4);
|
||||
let _ = str.splitn(5, '=').nth(5);
|
||||
}
|
||||
|
||||
fn _question_mark(s: &str) -> Option<()> {
|
||||
let _ = s.split('=').next()?;
|
||||
let _ = s.split('=').nth(0)?;
|
||||
let _ = s.rsplit('=').next()?;
|
||||
let _ = s.rsplit('=').nth(0)?;
|
||||
|
||||
Some(())
|
||||
}
|
||||
|
||||
fn _test_msrv() {
|
||||
#![clippy::msrv = "1.51"]
|
||||
// `manual_split_once` MSRV shouldn't apply to `needless_splitn`
|
||||
let _ = "key=value".split('=').nth(0).unwrap();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,4 +24,24 @@ fn main() {
|
|||
let _ = str.rsplitn(2, '=').nth(1);
|
||||
let (_, _) = str.rsplitn(2, '=').next_tuple().unwrap();
|
||||
let (_, _) = str.rsplitn(3, '=').next_tuple().unwrap();
|
||||
|
||||
let _ = str.splitn(5, '=').next();
|
||||
let _ = str.splitn(5, '=').nth(3);
|
||||
let _ = str.splitn(5, '=').nth(4);
|
||||
let _ = str.splitn(5, '=').nth(5);
|
||||
}
|
||||
|
||||
fn _question_mark(s: &str) -> Option<()> {
|
||||
let _ = s.splitn(2, '=').next()?;
|
||||
let _ = s.splitn(2, '=').nth(0)?;
|
||||
let _ = s.rsplitn(2, '=').next()?;
|
||||
let _ = s.rsplitn(2, '=').nth(0)?;
|
||||
|
||||
Some(())
|
||||
}
|
||||
|
||||
fn _test_msrv() {
|
||||
#![clippy::msrv = "1.51"]
|
||||
// `manual_split_once` MSRV shouldn't apply to `needless_splitn`
|
||||
let _ = "key=value".splitn(2, '=').nth(0).unwrap();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,5 +36,47 @@ error: unnecessary use of `rsplitn`
|
|||
LL | let (_, _) = str.rsplitn(3, '=').next_tuple().unwrap();
|
||||
| ^^^^^^^^^^^^^^^^^^^ help: try this: `str.rsplit('=')`
|
||||
|
||||
error: aborting due to 6 previous errors
|
||||
error: unnecessary use of `splitn`
|
||||
--> $DIR/needless_splitn.rs:28:13
|
||||
|
|
||||
LL | let _ = str.splitn(5, '=').next();
|
||||
| ^^^^^^^^^^^^^^^^^^ help: try this: `str.split('=')`
|
||||
|
||||
error: unnecessary use of `splitn`
|
||||
--> $DIR/needless_splitn.rs:29:13
|
||||
|
|
||||
LL | let _ = str.splitn(5, '=').nth(3);
|
||||
| ^^^^^^^^^^^^^^^^^^ help: try this: `str.split('=')`
|
||||
|
||||
error: unnecessary use of `splitn`
|
||||
--> $DIR/needless_splitn.rs:35:13
|
||||
|
|
||||
LL | let _ = s.splitn(2, '=').next()?;
|
||||
| ^^^^^^^^^^^^^^^^ help: try this: `s.split('=')`
|
||||
|
||||
error: unnecessary use of `splitn`
|
||||
--> $DIR/needless_splitn.rs:36:13
|
||||
|
|
||||
LL | let _ = s.splitn(2, '=').nth(0)?;
|
||||
| ^^^^^^^^^^^^^^^^ help: try this: `s.split('=')`
|
||||
|
||||
error: unnecessary use of `rsplitn`
|
||||
--> $DIR/needless_splitn.rs:37:13
|
||||
|
|
||||
LL | let _ = s.rsplitn(2, '=').next()?;
|
||||
| ^^^^^^^^^^^^^^^^^ help: try this: `s.rsplit('=')`
|
||||
|
||||
error: unnecessary use of `rsplitn`
|
||||
--> $DIR/needless_splitn.rs:38:13
|
||||
|
|
||||
LL | let _ = s.rsplitn(2, '=').nth(0)?;
|
||||
| ^^^^^^^^^^^^^^^^^ help: try this: `s.rsplit('=')`
|
||||
|
||||
error: unnecessary use of `splitn`
|
||||
--> $DIR/needless_splitn.rs:46:13
|
||||
|
|
||||
LL | let _ = "key=value".splitn(2, '=').nth(0).unwrap();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `"key=value".split('=')`
|
||||
|
||||
error: aborting due to 13 previous errors
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue