[−][src]Struct refpool::PoolBox
A unique pointer to a pool allocated value of A
.
Methods
impl<A> PoolBox<A>
[src]
pub fn default(pool: &Pool<A>) -> Self where
A: PoolDefault,
[src]
A: PoolDefault,
Construct a PoolBox
with a newly initialised value of A
.
This uses PoolDefault::default_uninit()
to initialise a
default value, which may be faster than constructing a PoolBox
from an
existing value using PoolBox::new()
, depending on the data
type.
Examples
let pool: Pool<usize> = Pool::new(256); let zero = PoolBox::default(&pool); assert_eq!(0, *zero);
pub fn new(pool: &Pool<A>, value: A) -> Self
[src]
Wrap a value in a PoolBox
.
This will copy the entire value into the memory handled by the
PoolBox
, which may be slower than using
PoolBox::default()
, so it's not recommended to use this to
construct the default value.
Examples
let pool: Pool<usize> = Pool::new(256); let number = PoolBox::new(&pool, 1337); assert_eq!(1337, *number);
pub fn clone_from(pool: &Pool<A>, value: &A) -> Self where
A: PoolClone,
[src]
A: PoolClone,
Clone a value and return a new PoolBox
to it.
This will use PoolClone::clone_uninit()
to perform the
clone, which may be more efficient than using
PoolBox::new(value.clone())
.
Examples
let pool: Pool<Vec<usize>> = Pool::new(1); let vec = vec![1, 2, 3]; let ref1 = PoolBox::clone_from(&pool, &vec); assert_eq!(vec, *ref1);
pub fn pin_default(pool: &Pool<A>) -> Pin<Self> where
A: PoolDefault,
[src]
A: PoolDefault,
Construct a Pin
ned PoolBox
with a default value.
Examples
let pool: Pool<usize> = Pool::new(256); let zero = PoolBox::pin_default(&pool); assert_eq!(0, *zero);
pub fn pin(pool: &Pool<A>, value: A) -> Pin<Self>
[src]
Construct a Pin
ned PoolBox
with the given value.
Examples
let pool: Pool<usize> = Pool::new(256); let number = PoolBox::pin(&pool, 1337); assert_eq!(1337, *number);
pub fn ptr_eq(left: &Self, right: &Self) -> bool
[src]
Test two PoolBox
es for pointer equality.
Examples
let pool: Pool<usize> = Pool::new(1); let ref1 = PoolBox::default(&pool); assert!(PoolBox::ptr_eq(&ref1, &ref1));
pub fn into_raw_non_null(b: PoolBox<A>) -> NonNull<A>
[src]
Consume the PoolBox
and return a pointer to the contents.
Please note that the only proper way to drop the value pointed to
is by using PoolBox::from_raw
to turn it back into a PoolBox
, because
the value is followed by PoolBox
metadata which also needs to
be dropped.
pub fn into_raw(b: PoolBox<A>) -> *mut A
[src]
Consume the PoolBox
and return a pointer to the contents.
The pointer is guaranteed to be non-null.
Please note that the only proper way to drop the value pointed to
is by using PoolBox::from_raw
to turn it back into a PoolBox
, because
the value is followed by PoolBox
metadata which also needs to
be dropped.
pub unsafe fn from_raw(ptr: *mut A) -> Self
[src]
Turn a raw pointer back into a PoolBox
.
The pointer must be non-null and obtained from a previous call to
PoolBox::into_raw
or PoolBox::into_raw_non_null
.
Safety
This must only be called on pointers obtained through PoolBox::into_raw
.
It's not OK to call it on a pointer to a value of A
you've allocated
yourself.
Examples
let pool: Pool<usize> = Pool::new(1); let ref1 = PoolBox::new(&pool, 31337); // Turn the PoolBox into a raw pointer and see if it still works. let ptr = PoolBox::into_raw(ref1); assert_eq!(31337, unsafe { *ptr }); // Turn it back into a PoolBox and see, again, if it still works. let ref2 = unsafe { PoolBox::from_raw(ptr) }; assert_eq!(31337, *ref2);
Trait Implementations
impl<A> AsMut<A> for PoolBox<A>
[src]
impl<A> AsRef<A> for PoolBox<A>
[src]
impl<A> Borrow<A> for PoolBox<A>
[src]
impl<A> BorrowMut<A> for PoolBox<A>
[src]
fn borrow_mut(&mut self) -> &mut A
[src]
impl<A> Clone for PoolBox<A> where
A: PoolClone,
[src]
A: PoolClone,
fn clone(&self) -> Self
[src]
Clone a PoolBox
and its contents.
This will use PoolClone::clone_uninit()
to perform the
clone, which may be more efficient than using
PoolBox::new(value.clone())
.
Examples
let pool: Pool<Vec<usize>> = Pool::new(1); let vec1 = PoolBox::new(&pool, vec![1, 2, 3]); let vec2 = vec1.clone(); assert_eq!(vec1, vec2);
fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl<A> Debug for PoolBox<A> where
A: Debug,
[src]
A: Debug,
impl<A> Deref for PoolBox<A>
[src]
impl<A> DerefMut for PoolBox<A>
[src]
impl<A> Display for PoolBox<A> where
A: Display,
[src]
A: Display,
impl<A> Drop for PoolBox<A>
[src]
impl<A> Eq for PoolBox<A> where
A: Eq,
[src]
A: Eq,
impl<A> Hash for PoolBox<A> where
A: Hash,
[src]
A: Hash,
fn hash<H: Hasher>(&self, hasher: &mut H)
[src]
fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0[src]
H: Hasher,
impl<A> Ord for PoolBox<A> where
A: Ord,
[src]
A: Ord,
fn cmp(&self, other: &Self) -> Ordering
[src]
#[must_use]fn max(self, other: Self) -> Self
1.21.0[src]
#[must_use]fn min(self, other: Self) -> Self
1.21.0[src]
#[must_use]fn clamp(self, min: Self, max: Self) -> Self
[src]
impl<A> PartialEq<PoolBox<A>> for PoolBox<A> where
A: PartialEq,
[src]
A: PartialEq,
impl<A> PartialOrd<PoolBox<A>> for PoolBox<A> where
A: PartialOrd,
[src]
A: PartialOrd,
fn partial_cmp(&self, other: &Self) -> Option<Ordering>
[src]
#[must_use]fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
impl<A> Pointer for PoolBox<A>
[src]
Auto Trait Implementations
impl<A> RefUnwindSafe for PoolBox<A> where
A: RefUnwindSafe,
A: RefUnwindSafe,
impl<A> !Send for PoolBox<A>
impl<A> !Sync for PoolBox<A>
impl<A> Unpin for PoolBox<A>
impl<A> UnwindSafe for PoolBox<A> where
A: RefUnwindSafe,
A: RefUnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T> ToString for T where
T: Display + ?Sized,
[src]
T: Display + ?Sized,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,