]> git.lizzy.rs Git - rust.git/blob - tests/ui/get_unwrap.rs
Auto merge of #3529 - matthiaskrgr:rustfmt_tests, r=phansch
[rust.git] / tests / ui / get_unwrap.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 #![allow(unused_mut)]
11
12 use std::collections::BTreeMap;
13 use std::collections::HashMap;
14 use std::collections::VecDeque;
15 use std::iter::FromIterator;
16
17 struct GetFalsePositive {
18     arr: [u32; 3],
19 }
20
21 impl GetFalsePositive {
22     fn get(&self, pos: usize) -> Option<&u32> {
23         self.arr.get(pos)
24     }
25     fn get_mut(&mut self, pos: usize) -> Option<&mut u32> {
26         self.arr.get_mut(pos)
27     }
28 }
29
30 fn main() {
31     let mut boxed_slice: Box<[u8]> = Box::new([0, 1, 2, 3]);
32     let mut some_slice = &mut [0, 1, 2, 3];
33     let mut some_vec = vec![0, 1, 2, 3];
34     let mut some_vecdeque: VecDeque<_> = some_vec.iter().cloned().collect();
35     let mut some_hashmap: HashMap<u8, char> = HashMap::from_iter(vec![(1, 'a'), (2, 'b')]);
36     let mut some_btreemap: BTreeMap<u8, char> = BTreeMap::from_iter(vec![(1, 'a'), (2, 'b')]);
37     let mut false_positive = GetFalsePositive { arr: [0, 1, 2] };
38
39     {
40         // Test `get().unwrap()`
41         let _ = boxed_slice.get(1).unwrap();
42         let _ = some_slice.get(0).unwrap();
43         let _ = some_vec.get(0).unwrap();
44         let _ = some_vecdeque.get(0).unwrap();
45         let _ = some_hashmap.get(&1).unwrap();
46         let _ = some_btreemap.get(&1).unwrap();
47         let _ = false_positive.get(0).unwrap();
48     }
49
50     {
51         // Test `get_mut().unwrap()`
52         *boxed_slice.get_mut(0).unwrap() = 1;
53         *some_slice.get_mut(0).unwrap() = 1;
54         *some_vec.get_mut(0).unwrap() = 1;
55         *some_vecdeque.get_mut(0).unwrap() = 1;
56         // Check false positives
57         *some_hashmap.get_mut(&1).unwrap() = 'b';
58         *some_btreemap.get_mut(&1).unwrap() = 'b';
59         *false_positive.get_mut(0).unwrap() = 1;
60     }
61
62     {
63         // Test `get().unwrap().foo()` and `get_mut().unwrap().bar()`
64         let _ = some_vec.get(0..1).unwrap().to_vec();
65         let _ = some_vec.get_mut(0..1).unwrap().to_vec();
66     }
67 }