| // run-rustfix |
| |
| #![feature(custom_inner_attributes)] |
| #![allow(unused)] |
| #![warn( |
| clippy::all, |
| clippy::style, |
| clippy::mem_replace_option_with_none, |
| clippy::mem_replace_with_default |
| )] |
| |
| use std::collections::{BTreeMap, BTreeSet, BinaryHeap, HashMap, HashSet, LinkedList, VecDeque}; |
| use std::mem; |
| |
| fn replace_option_with_none() { |
| let mut an_option = Some(1); |
| let _ = an_option.take(); |
| let an_option = &mut Some(1); |
| let _ = an_option.take(); |
| } |
| |
| fn replace_with_default() { |
| let mut s = String::from("foo"); |
| let _ = std::mem::take(&mut s); |
| |
| let s = &mut String::from("foo"); |
| let _ = std::mem::take(s); |
| let _ = std::mem::take(s); |
| |
| let mut v = vec![123]; |
| let _ = std::mem::take(&mut v); |
| let _ = std::mem::take(&mut v); |
| let _ = std::mem::take(&mut v); |
| let _ = std::mem::take(&mut v); |
| |
| let mut hash_map: HashMap<i32, i32> = HashMap::new(); |
| let _ = std::mem::take(&mut hash_map); |
| |
| let mut btree_map: BTreeMap<i32, i32> = BTreeMap::new(); |
| let _ = std::mem::take(&mut btree_map); |
| |
| let mut vd: VecDeque<i32> = VecDeque::new(); |
| let _ = std::mem::take(&mut vd); |
| |
| let mut hash_set: HashSet<&str> = HashSet::new(); |
| let _ = std::mem::take(&mut hash_set); |
| |
| let mut btree_set: BTreeSet<&str> = BTreeSet::new(); |
| let _ = std::mem::take(&mut btree_set); |
| |
| let mut list: LinkedList<i32> = LinkedList::new(); |
| let _ = std::mem::take(&mut list); |
| |
| let mut binary_heap: BinaryHeap<i32> = BinaryHeap::new(); |
| let _ = std::mem::take(&mut binary_heap); |
| |
| let mut tuple = (vec![1, 2], BinaryHeap::<i32>::new()); |
| let _ = std::mem::take(&mut tuple); |
| |
| let mut refstr = "hello"; |
| let _ = std::mem::take(&mut refstr); |
| |
| let mut slice: &[i32] = &[1, 2, 3]; |
| let _ = std::mem::take(&mut slice); |
| } |
| |
| // lint is disabled for primitives because in this case `take` |
| // has no clear benefit over `replace` and sometimes is harder to read |
| fn dont_lint_primitive() { |
| let mut pbool = true; |
| let _ = std::mem::replace(&mut pbool, false); |
| |
| let mut pint = 5; |
| let _ = std::mem::replace(&mut pint, 0); |
| } |
| |
| fn main() { |
| replace_option_with_none(); |
| replace_with_default(); |
| dont_lint_primitive(); |
| } |
| |
| fn msrv_1_39() { |
| #![clippy::msrv = "1.39"] |
| |
| let mut s = String::from("foo"); |
| let _ = std::mem::replace(&mut s, String::default()); |
| } |
| |
| fn msrv_1_40() { |
| #![clippy::msrv = "1.40"] |
| |
| let mut s = String::from("foo"); |
| let _ = std::mem::take(&mut s); |
| } |