aboutsummaryrefslogtreecommitdiff
path: root/1.0.107/src/drops.rs
diff options
context:
space:
mode:
Diffstat (limited to '1.0.107/src/drops.rs')
-rw-r--r--1.0.107/src/drops.rs58
1 files changed, 0 insertions, 58 deletions
diff --git a/1.0.107/src/drops.rs b/1.0.107/src/drops.rs
deleted file mode 100644
index 89b42d82..00000000
--- a/1.0.107/src/drops.rs
+++ /dev/null
@@ -1,58 +0,0 @@
-use std::iter;
-use std::mem::ManuallyDrop;
-use std::ops::{Deref, DerefMut};
-use std::option;
-use std::slice;
-
-#[repr(transparent)]
-pub(crate) struct NoDrop<T: ?Sized>(ManuallyDrop<T>);
-
-impl<T> NoDrop<T> {
- pub(crate) fn new(value: T) -> Self
- where
- T: TrivialDrop,
- {
- NoDrop(ManuallyDrop::new(value))
- }
-}
-
-impl<T: ?Sized> Deref for NoDrop<T> {
- type Target = T;
- fn deref(&self) -> &Self::Target {
- &self.0
- }
-}
-
-impl<T: ?Sized> DerefMut for NoDrop<T> {
- fn deref_mut(&mut self) -> &mut Self::Target {
- &mut self.0
- }
-}
-
-pub(crate) trait TrivialDrop {}
-
-impl<T> TrivialDrop for iter::Empty<T> {}
-impl<'a, T> TrivialDrop for slice::Iter<'a, T> {}
-impl<'a, T> TrivialDrop for slice::IterMut<'a, T> {}
-impl<'a, T> TrivialDrop for option::IntoIter<&'a T> {}
-impl<'a, T> TrivialDrop for option::IntoIter<&'a mut T> {}
-
-#[test]
-fn test_needs_drop() {
- use std::mem::needs_drop;
-
- struct NeedsDrop;
-
- impl Drop for NeedsDrop {
- fn drop(&mut self) {}
- }
-
- assert!(needs_drop::<NeedsDrop>());
-
- // Test each of the types with a handwritten TrivialDrop impl above.
- assert!(!needs_drop::<iter::Empty<NeedsDrop>>());
- assert!(!needs_drop::<slice::Iter<NeedsDrop>>());
- assert!(!needs_drop::<slice::IterMut<NeedsDrop>>());
- assert!(!needs_drop::<option::IntoIter<&NeedsDrop>>());
- assert!(!needs_drop::<option::IntoIter<&mut NeedsDrop>>());
-}