]> git.proxmox.com Git - rustc.git/blame - src/tools/clippy/tests/ui/manual_split_once.rs
New upstream version 1.67.1+dfsg1
[rustc.git] / src / tools / clippy / tests / ui / manual_split_once.rs
CommitLineData
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
6extern crate itertools;
7
8#[allow(unused_imports)]
9use itertools::Itertools;
10
11fn 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
43fn 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 130fn _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 140fn _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}