Struct RustAlloc

Source
#[repr(C)]
pub struct RustAlloc { /* private fields */ }
Expand description

Rust’s GlobalAlloc, annotating its yielded pointers in such a way that the allocated pointers can be safely freed from other binaries.

Implementations§

Source§

impl RustAlloc
where Struct<[u8; 0]>: IStable, [u8; 0]: IStable,

Source

pub const fn has_optimal_layout() -> bool

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

Source§

impl RustAlloc

Source

pub const fn new() -> Self

Constructs the allocator.

Trait Implementations§

Source§

impl Clone for RustAlloc

Source§

fn clone(&self) -> RustAlloc

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 Default for RustAlloc

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl IAlloc for RustAlloc

Source§

fn alloc(&mut self, layout: Layout) -> *mut ()

Allocates at least as much memory as requested by layout, ensuring the requested alignment is respected. Read more
Source§

unsafe fn free(&mut self, ptr: *mut ())

Frees the allocation Read more
Source§

unsafe fn realloc( &mut self, ptr: *mut (), _prev_layout: Layout, new_size: usize, ) -> *mut ()

Reallocates ptr, ensuring that it has enough memory for the newly requested layout. Read more
Source§

impl IStable for RustAlloc
where Struct<[u8; 0]>: IStable, [u8; 0]: 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 = 8_860_189_847_171_676_008u64

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<[u8; 0]> as IStable>::ForbiddenValues

The values that the annotated type cannot occupy.
Source§

type UnusedBits = <Struct<[u8; 0]> as IStable>::UnusedBits

The padding bits in the annotated types
Source§

type Size = <Struct<[u8; 0]> as IStable>::Size

The size of the annotated type in bytes.
Source§

type Align = <Struct<[u8; 0]> as IStable>::Align

The alignment of the annotated type in bytes.
Source§

type HasExactlyOneNiche = <Struct<[u8; 0]> as IStable>::HasExactlyOneNiche

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

type ContainsIndirections = <Struct<[u8; 0]> 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 Copy for RustAlloc

Auto Trait Implementations§

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> IPod for T
where T: IStable<ContainsIndirections = B0> + Copy,

Source§

fn identifier() -> u64

Produces an identifier for the type, allowing to check type at runtime (barring collisions).
Source§

impl<T> IStableAlloc for T
where T: IAlloc,

Source§

extern "C" fn alloc(&mut self, layout: Layout) -> *mut ()

👎Deprecated: Stabby doesn’t actually use this trait due to conflicts.
Allocates at least as much memory as requested by layout, ensuring the requested alignment is respected. Read more
Source§

extern "C" fn free(&mut self, ptr: *mut ())

👎Deprecated: Stabby doesn’t actually use this trait due to conflicts.
Frees the allocation Read more
Source§

extern "C" fn realloc( &mut self, ptr: *mut (), prev_layout: Layout, new_size: usize, ) -> *mut ()

👎Deprecated: Stabby doesn’t actually use this trait due to conflicts.
Reallocates ptr, ensuring that it has enough memory for the newly requested layout. 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<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.