Skip to content

Commit 6bee700

Browse files
committed
add error anotations
1 parent 448c448 commit 6bee700

File tree

2 files changed

+22
-40
lines changed

2 files changed

+22
-40
lines changed

clippy_lints/src/methods/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4281,7 +4281,7 @@ restriction,
42814281
}
42824282
declare_clippy_lint! {
42834283
/// ### What it does
4284-
/// Checks for usage of `.drain(x..)` for the sole purpose of truncate a container.
4284+
/// Checks for usage of `.drain(x..)` for the sole purpose of truncating a container.
42854285
///
42864286
/// ### Why is this bad?
42874287
/// This creates an unnecessary iterator that is dropped immediately.
@@ -4301,7 +4301,7 @@ declare_clippy_lint! {
43014301
#[clippy::version = "1.84.0"]
43024302
pub TRUNCATE_WITH_DRAIN,
43034303
nursery,
4304-
"calling `drain` in order to `truncate` a `Vec`"
4304+
"calling `drain` in order to truncate a `Vec`"
43054305
}
43064306

43074307
pub struct Methods {

tests/ui/truncate_with_drain.rs

Lines changed: 20 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -10,45 +10,39 @@ fn vec_range() {
1010

1111
// Do not lint because iterator is used
1212
let mut v = vec![1, 2, 3];
13-
let n = v.drain(1..v.len()).count();
14-
15-
// Do not lint because iterator is assigned and used
16-
let mut v = vec![1, 2, 3];
17-
let iter = v.drain(1..v.len());
18-
let n = iter.count();
13+
v.drain(1..v.len()).next();
1914

2015
// Do lint
2116
let mut v = vec![1, 2, 3];
2217
v.drain(1..v.len());
18+
//~^ ERROR: `drain` used to truncate a `Vec`
2319

2420
// Do lint
2521
let x = 1;
2622
let mut v = vec![1, 2, 3];
2723
v.drain(x..v.len());
24+
//~^ ERROR: `drain` used to truncate a `Vec`
2825
}
2926

3027
fn vec_range_from() {
3128
// Do not lint because iterator is assigned
3229
let mut v = vec![1, 2, 3];
3330
let iter = v.drain(1..);
3431

35-
// Do not lint because iterator is assigned and used
36-
let mut v = vec![1, 2, 3];
37-
let mut iter = v.drain(1..);
38-
let next = iter.next();
39-
4032
// Do not lint because iterator is used
4133
let mut v = vec![1, 2, 3];
42-
let next = v.drain(1..).next();
34+
v.drain(1..).next();
4335

4436
// Do lint
4537
let mut v = vec![1, 2, 3];
4638
v.drain(1..);
39+
//~^ ERROR: `drain` used to truncate a `Vec`
4740

4841
// Do lint
4942
let x = 1;
5043
let mut v = vec![1, 2, 3];
5144
v.drain(x..);
45+
//~^ ERROR: `drain` used to truncate a `Vec`
5246
}
5347

5448
fn vec_partial_drains() {
@@ -102,45 +96,39 @@ fn vec_deque_range() {
10296

10397
// Do not lint because iterator is used
10498
let mut deque = VecDeque::from([1, 2, 3]);
105-
let n = deque.drain(1..deque.len()).count();
106-
107-
// Do not lint because iterator is assigned and used
108-
let mut deque = VecDeque::from([1, 2, 3]);
109-
let iter = deque.drain(1..deque.len());
110-
let n = iter.count();
99+
deque.drain(1..deque.len()).next();
111100

112101
// Do lint
113102
let mut v = VecDeque::from([1, 2, 3]);
114103
v.drain(1..v.len());
104+
//~^ ERROR: `drain` used to truncate a `VecDeque`
115105

116106
// Do lint
117107
let x = 1;
118108
let mut v = VecDeque::from([1, 2, 3]);
119109
v.drain(x..v.len());
110+
//~^ ERROR: `drain` used to truncate a `VecDeque`
120111
}
121112

122113
fn vec_deque_range_from() {
123114
// Do not lint because iterator is assigned
124115
let mut deque = VecDeque::from([1, 2, 3]);
125116
let iter = deque.drain(1..);
126117

127-
// Do not lint because iterator is assigned and used
128-
let mut deque = VecDeque::from([1, 2, 3]);
129-
let mut iter = deque.drain(1..);
130-
let next = iter.next();
131-
132118
// Do not lint because iterator is used
133119
let mut deque = VecDeque::from([1, 2, 3]);
134-
let next = deque.drain(1..).next();
120+
deque.drain(1..).next();
135121

136122
// Do lint
137123
let mut deque = VecDeque::from([1, 2, 3]);
138124
deque.drain(1..);
125+
//~^ ERROR: `drain` used to truncate a `VecDeque`
139126

140127
// Do lint
141128
let x = 1;
142129
let mut v = VecDeque::from([1, 2, 3]);
143130
v.drain(x..);
131+
//~^ ERROR: `drain` used to truncate a `VecDeque`
144132
}
145133

146134
fn vec_deque_partial_drains() {
@@ -194,45 +182,39 @@ fn string_range() {
194182

195183
// Do not lint because iterator is used
196184
let mut s = String::from("Hello, world!");
197-
let n = s.drain(1..s.len()).count();
198-
199-
// Do not lint because iterator is assigned and used
200-
let mut s = String::from("Hello, world!");
201-
let iter = s.drain(1..s.len());
202-
let n = iter.count();
185+
s.drain(1..s.len()).next();
203186

204187
// Do lint
205188
let mut s = String::from("Hello, world!");
206189
s.drain(1..s.len());
190+
//~^ ERROR: `drain` used to truncate a `String`
207191

208192
// Do lint
209193
let x = 1;
210194
let mut v = String::from("Hello, world!");
211195
v.drain(x..s.len());
196+
//~^ ERROR: `drain` used to truncate a `String`
212197
}
213198

214199
fn string_range_from() {
215200
// Do not lint because iterator is assigned
216201
let mut s = String::from("Hello, world!");
217202
let iter = s.drain(1..);
218203

219-
// Do not lint because iterator is assigned and used
220-
let mut s = String::from("Hello, world!");
221-
let mut iter = s.drain(1..);
222-
let next = iter.next();
223-
224204
// Do not lint because iterator is used
225205
let mut s = String::from("Hello, world!");
226-
let next = s.drain(1..).next();
206+
s.drain(1..).next();
227207

228208
// Do lint
229209
let mut s = String::from("Hello, world!");
230210
s.drain(1..);
211+
//~^ ERROR: `drain` used to truncate a `String`
231212

232213
// Do lint
233214
let x = 1;
234-
let mut v = String::from("Hello, world!");
235-
v.drain(x..);
215+
let mut s = String::from("Hello, world!");
216+
s.drain(x..);
217+
//~^ ERROR: `drain` used to truncate a `String`
236218
}
237219

238220
fn string_partial_drains() {

0 commit comments

Comments
 (0)