diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b34e84bad..1e7f7011cf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ### Fixed +- Fixed a `dropping_references` warning in `LinearMap`. + ### Removed - [breaking-change] this crate no longer has a Minimum Supported Rust Version (MSRV) guarantee and diff --git a/src/linear_map.rs b/src/linear_map.rs index d096f210a2..0a3b8a3ef5 100644 --- a/src/linear_map.rs +++ b/src/linear_map.rs @@ -461,15 +461,6 @@ impl<'a, K, V> Clone for Iter<'a, K, V> { } } -impl Drop for LinearMap { - fn drop(&mut self) { - // heapless::Vec implements drop right? - drop(&self.buffer); - // original code below - // unsafe { ptr::drop_in_place(self.buffer.as_mut_slice()) } - } -} - pub struct IterMut<'a, K, V> { iter: slice::IterMut<'a, (K, V)>, } @@ -540,5 +531,25 @@ mod test { } } - // TODO: drop test + #[test] + fn drop() { + droppable!(); + + { + let mut v: LinearMap = LinearMap::new(); + v.insert(0, Droppable::new()).ok().unwrap(); + v.insert(1, Droppable::new()).ok().unwrap(); + v.remove(&1).unwrap(); + } + + assert_eq!(Droppable::count(), 0); + + { + let mut v: LinearMap = LinearMap::new(); + v.insert(0, Droppable::new()).ok().unwrap(); + v.insert(1, Droppable::new()).ok().unwrap(); + } + + assert_eq!(Droppable::count(), 0); + } }