]> git.lizzy.rs Git - rust.git/blob - tests/ui/for_kv_map.rs
Auto merge of #3603 - xfix:random-state-lint, r=phansch
[rust.git] / tests / ui / for_kv_map.rs
1 // Copyright 2014-2018 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution.
3 //
4 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
5 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
6 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
7 // option. This file may not be copied, modified, or distributed
8 // except according to those terms.
9
10 #![warn(clippy::for_kv_map)]
11 #![allow(clippy::used_underscore_binding)]
12
13 use std::collections::*;
14 use std::rc::Rc;
15
16 fn main() {
17     let m: HashMap<u64, u64> = HashMap::new();
18     for (_, v) in &m {
19         let _v = v;
20     }
21
22     let m: Rc<HashMap<u64, u64>> = Rc::new(HashMap::new());
23     for (_, v) in &*m {
24         let _v = v;
25         // Here the `*` is not actually necessary, but the test tests that we don't
26         // suggest
27         // `in *m.values()` as we used to
28     }
29
30     let mut m: HashMap<u64, u64> = HashMap::new();
31     for (_, v) in &mut m {
32         let _v = v;
33     }
34
35     let m: &mut HashMap<u64, u64> = &mut HashMap::new();
36     for (_, v) in &mut *m {
37         let _v = v;
38     }
39
40     let m: HashMap<u64, u64> = HashMap::new();
41     let rm = &m;
42     for (k, _value) in rm {
43         let _k = k;
44     }
45     test_for_kv_map();
46 }
47
48 fn test_for_kv_map() {
49     let m: HashMap<u64, u64> = HashMap::new();
50
51     // No error, _value is actually used
52     for (k, _value) in &m {
53         let _ = _value;
54         let _k = k;
55     }
56 }