]>
Commit | Line | Data |
---|---|---|
c295e0f8 XL |
1 | // run-rustfix |
2 | ||
c295e0f8 | 3 | #![warn(clippy::manual_split_once)] |
04454e1e | 4 | #![allow(unused, clippy::iter_skip_next, clippy::iter_nth_zero)] |
c295e0f8 XL |
5 | |
6 | extern crate itertools; | |
7 | ||
8 | #[allow(unused_imports)] | |
9 | use itertools::Itertools; | |
10 | ||
11 | fn main() { | |
c295e0f8 | 12 | let _ = "key=value".splitn(2, '=').nth(2); |
c295e0f8 XL |
13 | let _ = "key=value".splitn(2, '=').nth(1).unwrap(); |
14 | let _ = "key=value".splitn(2, '=').skip(1).next().unwrap(); | |
15 | let (_, _) = "key=value".splitn(2, '=').next_tuple().unwrap(); | |
16 | ||
17 | let s = String::from("key=value"); | |
04454e1e | 18 | let _ = s.splitn(2, '=').nth(1).unwrap(); |
c295e0f8 XL |
19 | |
20 | let s = Box::<str>::from("key=value"); | |
04454e1e | 21 | let _ = s.splitn(2, '=').nth(1).unwrap(); |
c295e0f8 XL |
22 | |
23 | let s = &"key=value"; | |
04454e1e | 24 | let _ = s.splitn(2, '=').skip(1).next().unwrap(); |
c295e0f8 XL |
25 | |
26 | fn _f(s: &str) -> Option<&str> { | |
04454e1e FG |
27 | let _ = s.splitn(2, '=').nth(1)?; |
28 | let _ = s.splitn(2, '=').skip(1).next()?; | |
29 | let _ = s.rsplitn(2, '=').nth(1)?; | |
30 | let _ = s.rsplitn(2, '=').skip(1).next()?; | |
c295e0f8 XL |
31 | None |
32 | } | |
33 | ||
34 | // Don't lint, slices don't have `split_once` | |
35 | let _ = [0, 1, 2].splitn(2, |&x| x == 1).nth(1).unwrap(); | |
36 | ||
37 | // `rsplitn` gives the results in the reverse order of `rsplit_once` | |
c295e0f8 | 38 | let _ = "key=value".rsplitn(2, '=').nth(1).unwrap(); |
c295e0f8 | 39 | let (_, _) = "key=value".rsplitn(2, '=').next_tuple().unwrap(); |
04454e1e FG |
40 | let _ = s.rsplitn(2, '=').nth(1); |
41 | } | |
42 | ||
43 | fn indirect() -> Option<()> { | |
44 | let mut iter = "a.b.c".splitn(2, '.'); | |
45 | let l = iter.next().unwrap(); | |
46 | let r = iter.next().unwrap(); | |
47 | ||
48 | let mut iter = "a.b.c".splitn(2, '.'); | |
49 | let l = iter.next()?; | |
50 | let r = iter.next()?; | |
51 | ||
52 | let mut iter = "a.b.c".rsplitn(2, '.'); | |
53 | let r = iter.next().unwrap(); | |
54 | let l = iter.next().unwrap(); | |
55 | ||
56 | let mut iter = "a.b.c".rsplitn(2, '.'); | |
57 | let r = iter.next()?; | |
58 | let l = iter.next()?; | |
59 | ||
60 | // could lint, currently doesn't | |
61 | ||
62 | let mut iter = "a.b.c".splitn(2, '.'); | |
63 | let other = 1; | |
64 | let l = iter.next()?; | |
65 | let r = iter.next()?; | |
66 | ||
67 | let mut iter = "a.b.c".splitn(2, '.'); | |
68 | let mut mut_binding = iter.next()?; | |
69 | let r = iter.next()?; | |
70 | ||
71 | let mut iter = "a.b.c".splitn(2, '.'); | |
72 | let tuple = (iter.next()?, iter.next()?); | |
73 | ||
74 | // should not lint | |
75 | ||
76 | let mut missing_unwrap = "a.b.c".splitn(2, '.'); | |
77 | let l = missing_unwrap.next(); | |
78 | let r = missing_unwrap.next(); | |
79 | ||
80 | let mut mixed_unrap = "a.b.c".splitn(2, '.'); | |
81 | let unwrap = mixed_unrap.next().unwrap(); | |
82 | let question_mark = mixed_unrap.next()?; | |
83 | ||
84 | let mut iter = "a.b.c".splitn(2, '.'); | |
85 | let same_name = iter.next()?; | |
86 | let same_name = iter.next()?; | |
87 | ||
88 | let mut iter = "a.b.c".splitn(2, '.'); | |
89 | let shadows_existing = "d"; | |
90 | let shadows_existing = iter.next()?; | |
91 | let r = iter.next()?; | |
92 | ||
93 | let mut iter = "a.b.c".splitn(2, '.'); | |
94 | let becomes_shadowed = iter.next()?; | |
95 | let becomes_shadowed = "d"; | |
96 | let r = iter.next()?; | |
97 | ||
98 | let mut iter = "a.b.c".splitn(2, '.'); | |
99 | let l = iter.next()?; | |
100 | let r = iter.next()?; | |
101 | let third_usage = iter.next()?; | |
102 | ||
103 | let mut n_three = "a.b.c".splitn(3, '.'); | |
104 | let l = n_three.next()?; | |
105 | let r = n_three.next()?; | |
106 | ||
107 | let mut iter = "a.b.c".splitn(2, '.'); | |
108 | { | |
109 | let in_block = iter.next()?; | |
110 | } | |
111 | let r = iter.next()?; | |
112 | ||
113 | let mut lacks_binding = "a.b.c".splitn(2, '.'); | |
114 | let _ = lacks_binding.next()?; | |
115 | let r = lacks_binding.next()?; | |
116 | ||
117 | let mut mapped = "a.b.c".splitn(2, '.').map(|_| "~"); | |
118 | let l = iter.next()?; | |
119 | let r = iter.next()?; | |
120 | ||
121 | let mut assigned = ""; | |
122 | let mut iter = "a.b.c".splitn(2, '.'); | |
123 | let l = iter.next()?; | |
124 | assigned = iter.next()?; | |
125 | ||
126 | None | |
c295e0f8 XL |
127 | } |
128 | ||
487cf647 | 129 | #[clippy::msrv = "1.51"] |
c295e0f8 | 130 | fn _msrv_1_51() { |
04454e1e | 131 | // `str::split_once` was stabilized in 1.52. Do not lint this |
c295e0f8 | 132 | let _ = "key=value".splitn(2, '=').nth(1).unwrap(); |
04454e1e FG |
133 | |
134 | let mut iter = "a.b.c".splitn(2, '.'); | |
135 | let a = iter.next().unwrap(); | |
136 | let b = iter.next().unwrap(); | |
c295e0f8 XL |
137 | } |
138 | ||
487cf647 | 139 | #[clippy::msrv = "1.52"] |
c295e0f8 | 140 | fn _msrv_1_52() { |
c295e0f8 | 141 | let _ = "key=value".splitn(2, '=').nth(1).unwrap(); |
04454e1e FG |
142 | |
143 | let mut iter = "a.b.c".splitn(2, '.'); | |
144 | let a = iter.next().unwrap(); | |
145 | let b = iter.next().unwrap(); | |
c295e0f8 | 146 | } |