Struct Box

Source
#[repr(C)]
pub struct Box<T, Alloc: IAlloc = DefaultAllocator> { /* private fields */ }
Expand description

An ABI-stable Box, provided Alloc is ABI-stable.

Implementations§

Source§

impl<T, Alloc: IAlloc> Box<T, Alloc>
where Struct<AllocPtr<T, Alloc>>: IStable, AllocPtr<T, Alloc>: IStable,

Source

pub const fn has_optimal_layout() -> bool

Returns true if the layout for Box is smaller or equal to that Rust would have generated for it.

Source§

impl<T> Box<T>

Source

pub unsafe fn make<F: for<'a> FnOnce(&'a mut MaybeUninit<T>) -> Result<&'a mut T, ()>>( constructor: F, ) -> Result<Self, Box<MaybeUninit<T>>>

Attempts to allocate Self, initializing it with constructor.

Note that the allocation may or may not be zeroed.

If the allocation fails, the constructor will not be run.

§Safety

constructor MUST return Err(()) if it failed to initialize the passed argument.

§Errors

Returns the uninitialized allocation if the constructor declares a failure.

§Panics

If the allocator fails to provide an appropriate allocation.

Source

pub fn new(value: T) -> Self

Attempts to allocate Self and store value in it.

§Panics

If the allocator fails to provide an appropriate allocation.

Source§

impl<T, Alloc: IAlloc> Box<T, Alloc>

Source

pub unsafe fn try_make_in<F: for<'a> FnOnce(&'a mut MaybeUninit<T>) -> Result<&'a mut T, ()>>( constructor: F, alloc: Alloc, ) -> Result<Self, Result<Box<MaybeUninit<T>, Alloc>, (F, Alloc)>>

Attempts to allocate Self, initializing it with constructor.

Note that the allocation may or may not be zeroed.

If the constructor panics, the allocated memory will be leaked.

§Errors
  • Returns the constructor and the allocator in case of allocation failure.
  • Returns the uninitialized allocated memory if constructor fails.
§Safety

constructor MUST return Err(()) if it failed to initialize the passed argument.

§Notes

Note that the allocation may or may not be zeroed.

Source

pub fn try_new_in(value: T, alloc: Alloc) -> Result<Self, (T, Alloc)>

Attempts to allocate a Self and store value in it

§Errors

Returns value and the allocator in case of failure.

Source

pub unsafe fn make_in<F: for<'a> FnOnce(&'a mut MaybeUninit<T>) -> Result<&'a mut T, ()>>( constructor: F, alloc: Alloc, ) -> Result<Self, Box<MaybeUninit<T>, Alloc>>

Attempts to allocate Self, initializing it with constructor.

Note that the allocation may or may not be zeroed.

§Errors

Returns the uninitialized allocated memory if constructor fails.

§Safety

constructor MUST return Err(()) if it failed to initialize the passed argument.

§Panics

If the allocator fails to provide an appropriate allocation.

Source

pub fn new_in(value: T, alloc: Alloc) -> Self

Attempts to allocate Self and store value in it.

§Panics

If the allocator fails to provide an appropriate allocation.

Source

pub fn into_inner(this: Self) -> T

Extracts the value from the allocation, freeing said allocation.

Source

pub const fn into_raw(this: Self) -> AllocPtr<T, Alloc>

Returns the pointer to the inner raw allocation, leaking this.

Note that the pointer may be dangling if T is zero-sized.

Source

pub const unsafe fn from_raw(this: AllocPtr<T, Alloc>) -> Self

Constructs Self from a raw allocation.

§Safety

No other container must own (even partially) this.

Trait Implementations§

Source§

impl<T: Clone, Alloc: IAlloc + Clone> Clone for Box<T, Alloc>

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<T, Alloc: IAlloc> Deref for Box<T, Alloc>

Source§

type Target = T

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl<T, Alloc: IAlloc> DerefMut for Box<T, Alloc>

Source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.
Source§

impl<T, Alloc: IAlloc> Drop for Box<T, Alloc>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl<T, Alloc: IAlloc> IPtr for Box<T, Alloc>

Source§

unsafe fn as_ref(&self) -> AnonymRef<'_>

Safety Read more
Source§

impl<T, Alloc: IAlloc> IPtrMut for Box<T, Alloc>

Source§

unsafe fn as_mut(&mut self) -> AnonymRefMut<'_>

Safety Read more
Source§

impl<T, Alloc: IAlloc> IPtrOwned for Box<T, Alloc>

Source§

fn drop( this: &mut ManuallyDrop<Self>, drop: unsafe extern "C" fn(AnonymRefMut<'_>), )

Called instead of Drop::drop when the dynptr is dropped.
Source§

impl<T, Alloc: IAlloc> IStable for Box<T, Alloc>
where Struct<AllocPtr<T, Alloc>>: IStable, AllocPtr<T, Alloc>: IStable,

Source§

const REPORT: &'static TypeReport

A compile-time generated report of the fields of the type, allowing for compatibility inspection.
Source§

const ID: u64

A stable (and ideally unique) identifier for the type. Often generated using crate::report::gen_id, but can be manually set.
Source§

type ForbiddenValues = <Struct<AllocPtr<T, Alloc>> as IStable>::ForbiddenValues

The values that the annotated type cannot occupy.
Source§

type UnusedBits = <Struct<AllocPtr<T, Alloc>> as IStable>::UnusedBits

The padding bits in the annotated types
Source§

type Size = <Struct<AllocPtr<T, Alloc>> as IStable>::Size

The size of the annotated type in bytes.
Source§

type Align = <Struct<AllocPtr<T, Alloc>> as IStable>::Align

The alignment of the annotated type in bytes.
Source§

type HasExactlyOneNiche = <Struct<AllocPtr<T, Alloc>> as IStable>::HasExactlyOneNiche

Allows the detection of whether or not core::option::Options are stable: Read more
Source§

type ContainsIndirections = <Struct<AllocPtr<T, Alloc>> as IStable>::ContainsIndirections

Whether or not the type contains indirections (pointers, indices in independent data-structures…)
Source§

fn size() -> usize

Returns the size of the type.
Source§

fn align() -> usize

Returns the alignment of the type.
Source§

unsafe fn is_invalid(ptr: *const u8) -> bool

Returns true if ptr points to memory that cannot be a valid value of Self. Read more
Source§

impl<T, Alloc: IAlloc> IntoDyn for Box<T, Alloc>

Source§

type Anonymized = Box<(), Alloc>

A pointer type with type information discarded.
Source§

type Target = T

The original pointee.
Source§

fn anonimize(self) -> Self::Anonymized

Drop the type information from the pointer.
Source§

impl<T: Send, Alloc: IAlloc + Send> Send for Box<T, Alloc>

Source§

impl<T: Sync, Alloc: IAlloc> Sync for Box<T, Alloc>

Auto Trait Implementations§

§

impl<T, Alloc> Freeze for Box<T, Alloc>

§

impl<T, Alloc> RefUnwindSafe for Box<T, Alloc>
where Alloc: RefUnwindSafe, T: RefUnwindSafe,

§

impl<T, Alloc> Unpin for Box<T, Alloc>

§

impl<T, Alloc> UnwindSafe for Box<T, Alloc>
where T: RefUnwindSafe, Alloc: UnwindSafe,

Blanket Implementations§

Source§

impl<Source> AccessAs for Source

Source§

fn ref_as<T>(&self) -> <Source as IGuardRef<T>>::Guard<'_>
where Source: IGuardRef<T>, T: ?Sized,

Provides immutable access to a type as if it were its ABI-unstable equivalent.
Source§

fn mut_as<T>(&mut self) -> <Source as IGuardMut<T>>::GuardMut<'_>
where Source: IGuardMut<T>, T: ?Sized,

Provides mutable access to a type as if it were its ABI-unstable equivalent.
Source§

impl<T> Any for T
where T: IStable,

Source§

extern "C" fn report(&self) -> &'static TypeReport

The report of the type.
Source§

extern "C" fn id(&self) -> u64

The id of the type.
Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, As> IGuardMut<As> for T
where T: Into<As>, As: Into<T>,

Source§

type GuardMut<'a> = MutAs<'a, T, As> where T: 'a

The type of the guard which will clean up the temporary after applying its changes to the original.
Source§

fn guard_mut_inner(&mut self) -> <T as IGuardMut<As>>::GuardMut<'_>

Construct the temporary and guard it through a mutable reference.
Source§

impl<T, As> IGuardRef<As> for T
where T: Into<As>, As: Into<T>,

Source§

type Guard<'a> = RefAs<'a, T, As> where T: 'a

The type of the guard which will clean up the temporary.
Source§

fn guard_ref_inner(&self) -> <T as IGuardRef<As>>::Guard<'_>

Construct the temporary and guard it through an immutable reference.
Source§

impl<T> IPtrTryAsMut for T
where T: IPtrMut,

Source§

unsafe fn try_as_mut(&mut self) -> Option<AnonymRefMut<'_>>

Safety Read more
Source§

impl<T> Includes<End> for T

Source§

type Output = End

The result
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.