@@ -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
3027fn 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
5448fn 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
122113fn 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
146134fn 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
214199fn 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
238220fn string_partial_drains ( ) {
0 commit comments