From 86610b631c20832d160c1a38181080232a05b508 Mon Sep 17 00:00:00 2001 From: Botahamec Date: Tue, 21 May 2024 19:17:11 -0400 Subject: Sharable API --- src/collection/boxed_collection.rs | 60 -------------------------------------- 1 file changed, 60 deletions(-) delete mode 100644 src/collection/boxed_collection.rs (limited to 'src/collection/boxed_collection.rs') diff --git a/src/collection/boxed_collection.rs b/src/collection/boxed_collection.rs deleted file mode 100644 index 1aae1e4..0000000 --- a/src/collection/boxed_collection.rs +++ /dev/null @@ -1,60 +0,0 @@ -use std::ops::{Deref, DerefMut}; - -use crate::{Lockable, OwnedLockable}; - -use super::{BoxedLockCollection, RefLockCollection}; - -impl<'a, L> Deref for BoxedLockCollection<'a, L> { - type Target = RefLockCollection<'a, L>; - - fn deref(&self) -> &Self::Target { - &self.0 - } -} - -impl<'a, L> DerefMut for BoxedLockCollection<'a, L> { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } -} - -impl<'a, L> Drop for BoxedLockCollection<'a, L> { - fn drop(&mut self) { - // this was created with Box::new - let boxed = unsafe { Box::from_raw((self.0.data as *const L).cast_mut()) }; - drop(boxed); - } -} - -impl<'a, L: OwnedLockable> BoxedLockCollection<'a, L> { - #[must_use] - pub fn new(data: L) -> Self { - let boxed = Box::leak(Box::new(data)); - Self(RefLockCollection::new(boxed)) - } -} - -impl<'a, L: OwnedLockable> BoxedLockCollection<'a, &'a L> { - #[must_use] - pub fn new_ref(data: &'a L) -> Self { - let boxed = Box::leak(Box::new(data)); - - // safety: this is a reference to an OwnedLockable, which can't - // possibly contain inner duplicates - Self(unsafe { RefLockCollection::new_unchecked(boxed) }) - } -} - -impl<'a, L: Lockable> BoxedLockCollection<'a, L> { - #[must_use] - pub unsafe fn new_unchecked(data: L) -> Self { - let boxed = Box::leak(Box::new(data)); - Self(RefLockCollection::new_unchecked(boxed)) - } - - #[must_use] - pub fn try_new(data: L) -> Option { - let boxed = Box::leak(Box::new(data)); - RefLockCollection::try_new(boxed).map(Self) - } -} -- cgit v1.2.3