Struct bump_scope::BumpPoolGuard

source ·
pub struct BumpPoolGuard<'a, A, const MIN_ALIGN: usize, const UP: bool, const GUARANTEED_ALLOCATED: bool>
where A: BaseAllocator<GUARANTEED_ALLOCATED>, MinimumAlignment<MIN_ALIGN>: SupportedMinimumAlignment,
{ /* private fields */ }
Available on crate feature std only.
Expand description

This is a wrapper around Bump that mutably derefs to a BumpScope and returns its Bump back to the BumpPool on drop.

Methods from Deref<Target = BumpScope<'a, A, MIN_ALIGN, UP, GUARANTEED_ALLOCATED>>§

source

pub fn scoped(&mut self, f: impl FnOnce(BumpScope<'_, A, MIN_ALIGN, UP>))

Calls f with a new child scope.

§Examples
let mut bump: Bump = Bump::new();

bump.scoped(|bump| {
    bump.alloc_str("Hello world!");
    assert_eq!(bump.stats().allocated(), 12);
});

assert_eq!(bump.stats().allocated(), 0);
source

pub fn scoped_aligned<const NEW_MIN_ALIGN: usize>( &mut self, f: impl FnOnce(BumpScope<'_, A, MIN_ALIGN, UP>), )

Calls f with a new child scope of a new minimum alignment.

source

pub fn scope_guard(&mut self) -> BumpScopeGuard<'_, A, MIN_ALIGN, UP>

Creates a new BumpScopeGuard. This allows for creation of child scopes.

§Examples
let mut bump: Bump = Bump::new();

{
    let mut guard = bump.scope_guard();
    let bump = guard.scope();
    bump.alloc_str("Hello world!");
    assert_eq!(bump.stats().allocated(), 12);
}

assert_eq!(bump.stats().allocated(), 0);
source

pub fn aligned<const NEW_MIN_ALIGN: usize>( &mut self, f: impl FnOnce(BumpScope<'_, A, NEW_MIN_ALIGN, UP>), )

Calls f with this scope but with a new minimum alignment.

source

pub fn checkpoint(&self) -> Checkpoint

Creates a checkpoint of the current bump position.

§Examples
let checkpoint = bump.checkpoint();

{
    let hello = bump.alloc_str("hello");
    assert_eq!(bump.stats().allocated(), 5);
}

unsafe { bump.reset_to(checkpoint); }
assert_eq!(bump.stats().allocated(), 0);
source

pub unsafe fn reset_to(&mut self, checkpoint: Checkpoint)

Resets the bump position to a previously created checkpoint. The memory that has been allocated since then will be reused by future allocations.

§Safety
  • the checkpoint must have been created by this bump allocator
  • the bump allocator must not have been reset since creation of this checkpoint
  • there must be no references to allocations made since creation of this checkpoint
source

pub fn guaranteed_allocated_stats(&self) -> GuaranteedAllocatedStats<'a, UP>

Returns GuaranteedAllocatedStats, which provides statistics about the memory usage of the bump allocator.

source

pub fn stats(&self) -> Stats<'a, UP>

Returns Stats, which provides statistics about the memory usage of the bump allocator.

source

pub fn allocator(&self) -> &A

Returns a reference to the base allocator.

source

pub fn without_dealloc(&self) -> WithoutDealloc<&Self>

Wraps &self in WithoutDealloc so that deallocate becomes a no-op.

source

pub fn without_shrink(&self) -> WithoutShrink<&Self>

Wraps &self in WithoutShrink so that shrink becomes a no-op.

source

pub fn as_scope(&self) -> &Self

Returns &self as is. This is used in for macros that support both Bump and BumpScope, like bump_vec!.

source

pub fn as_mut_scope(&mut self) -> &mut Self

Returns &mut self as is. This is useful for macros that support both Bump and BumpScope, like mut_bump_vec!.

source

pub fn as_aligned_mut<const NEW_MIN_ALIGN: usize>( &mut self, ) -> &mut BumpScope<'a, A, NEW_MIN_ALIGN, UP, GUARANTEED_ALLOCATED>

Mutably borrows BumpScope with a new minimum alignment.

This can not decrease the alignment. Trying to decrease alignment will result in a compile error. You can use aligned or scoped_aligned to decrease the alignment.

source

pub fn as_guaranteed_allocated(&self) -> &BumpScope<'a, A, MIN_ALIGN, UP>

Borrows BumpScope in a guaranteed allocated state.

§Panics

Panics if the allocation fails.

source

pub fn try_as_guaranteed_allocated( &self, ) -> Result<&BumpScope<'a, A, MIN_ALIGN, UP>, AllocError>

Borrows BumpScope in a guaranteed allocated state.

§Errors

Errors if the allocation fails.

source

pub fn as_guaranteed_allocated_mut( &mut self, ) -> &mut BumpScope<'a, A, MIN_ALIGN, UP>

Mutably borrows BumpScope in a guaranteed allocated state.

§Panics

Panics if the allocation fails.

source

pub fn try_as_guaranteed_allocated_mut( &mut self, ) -> Result<&mut BumpScope<'a, A, MIN_ALIGN, UP>, AllocError>

Mutably borrows BumpScope in a guaranteed allocated state.

§Errors

Errors if the allocation fails.

source

pub fn alloc_zeroed<T>(&self) -> BumpBox<'a, T>
where T: FromZeroes,

Available on crate feature zerocopy only.

Allocate an zeroed object.

§Panics

Panics if the allocation fails.

§Examples
let mut bump: Bump = Bump::new();
let zero = bump.alloc_zeroed::<i32>();
assert_eq!(*zero, 0)
source

pub fn alloc_slice_zeroed<T>(&self, len: usize) -> BumpBox<'a, [T]>
where T: FromZeroes,

👎Deprecated: use alloc_zeroed_slice instead
Available on crate feature zerocopy only.

Allocate an zeroed object slice.

§Panics

Panics if the allocation fails.

§Examples
let mut bump: Bump = Bump::new();
let zeroes = bump.alloc_slice_zeroed::<i32>(3);
assert_eq!(*zeroes, [0; 3])
source

pub fn alloc_zeroed_slice<T>(&self, len: usize) -> BumpBox<'a, [T]>
where T: FromZeroes,

Available on crate feature zerocopy only.

Allocate an zeroed object slice.

§Panics

Panics if the allocation fails.

§Examples
let mut bump: Bump = Bump::new();
let zeroes = bump.alloc_slice_zeroed::<i32>(3);
assert_eq!(*zeroes, [0; 3])
source

pub fn try_alloc_zeroed<T>(&self) -> Result<BumpBox<'a, T>, AllocError>
where T: FromZeroes,

Available on crate feature zerocopy only.

Allocate an zeroed object.

§Errors

Errors if the allocation fails.

source

pub fn try_alloc_slice_zeroed<T>( &self, len: usize, ) -> Result<BumpBox<'a, [T]>, AllocError>
where T: FromZeroes,

👎Deprecated: use try_alloc_zeroed_slice instead
Available on crate feature zerocopy only.

Allocate an zeroed object slice.

§Errors

Errors if the allocation fails.

source

pub fn try_alloc_zeroed_slice<T>( &self, len: usize, ) -> Result<BumpBox<'a, [T]>, AllocError>
where T: FromZeroes,

Available on crate feature zerocopy only.

Allocate an zeroed object slice.

§Errors

Errors if the allocation fails.

source

pub fn alloc<T>(&self, value: T) -> BumpBox<'a, T>

Allocate an object.

§Panics

Panics if the allocation fails.

source

pub fn alloc_with<T>(&self, f: impl FnOnce() -> T) -> BumpBox<'a, T>

Pre-allocate space for an object. Once space is allocated f will be called to create the value to be put at that place. In some situations this can help the compiler realize that T can be constructed at the allocated space instead of having to copy it over.

§Panics

Panics if the allocation fails.

source

pub fn alloc_default<T: Default>(&self) -> BumpBox<'a, T>

Allocate an object with its default value. This is equivalent to alloc_with(T::default()).

§Panics

Panics if the allocation fails.

source

pub fn alloc_try_with<T, E>( &self, f: impl FnOnce() -> Result<T, E>, ) -> Result<BumpBox<'a, T>, E>

Allocates the result of f in the bump allocator, then moves E out of it and deallocates the space it took up.

This can be more performant than allocating T after the fact, as Result<T, E> may be constructed in the bump allocators memory instead of on the stack and then copied over.

§Panics

Panics if the allocation fails.

source

pub fn alloc_slice_copy<T: Copy>(&self, slice: &[T]) -> BumpBox<'a, [T]>

Allocate a slice and Copy elements from an existing slice.

§Panics

Panics if the allocation fails.

source

pub fn alloc_slice_clone<T: Clone>(&self, slice: &[T]) -> BumpBox<'a, [T]>

Allocate a slice and Clone elements from an existing slice.

§Panics

Panics if the allocation fails.

source

pub fn alloc_slice_fill<T: Clone>( &self, len: usize, value: T, ) -> BumpBox<'a, [T]>

Allocate a slice and fill it with elements by cloning value.

§Panics

Panics if the allocation fails.

source

pub fn alloc_slice_fill_with<T>( &self, len: usize, f: impl FnMut() -> T, ) -> BumpBox<'a, [T]>

Allocates a slice by fill it with elements returned by calling a closure repeatedly.

This method uses a closure to create new values. If you’d rather Clone a given value, use (try_)alloc_slice_fill. If you want to use the Default trait to generate values, you can pass Default::default as the argument.

§Panics

Panics if the allocation fails.

source

pub fn alloc_str(&self, src: &str) -> BumpBox<'a, str>

Allocate a str.

§Panics

Panics if the allocation fails.

source

pub fn alloc_fmt(&self, args: Arguments<'_>) -> BumpBox<'a, str>

Allocate a str from format arguments. For better performance prefer alloc_fmt_mut.

§Panics

Panics if the allocation fails.

Panics if a formatting trait implementation returned an error.

§Examples
let one = 1;
let two = 2;
let string = bump.alloc_fmt(format_args!("{one} + {two} = {}", one + two));

assert_eq!(string, "1 + 2 = 3");
source

pub fn alloc_fmt_mut(&mut self, args: Arguments<'_>) -> BumpBox<'a, str>

Allocate a str from format arguments. Unlike alloc_fmt, this function requires a mutable Bump(Scope).

§Panics

Panics if the allocation fails.

Panics if a formatting trait implementation returned an error.

§Examples
let one = 1;
let two = 2;
let string = bump.alloc_fmt_mut(format_args!("{one} + {two} = {}", one + two));

assert_eq!(string, "1 + 2 = 3");
source

pub fn alloc_iter<T>( &self, iter: impl IntoIterator<Item = T>, ) -> BumpBox<'a, [T]>

Allocate elements of an iterator into a slice. For better performance prefer alloc_iter_exact or alloc_iter_mut(_rev).

§Panics

Panics if the allocation fails.

§Examples
let slice = bump.alloc_iter([1, 2, 3]);
assert_eq!(slice, [1, 2, 3]);
source

pub fn alloc_iter_exact<T, I>( &self, iter: impl IntoIterator<Item = T, IntoIter = I>, ) -> BumpBox<'a, [T]>
where I: ExactSizeIterator<Item = T>,

Allocate elements of an ExactSizeIterator into a slice.

§Panics

Panics if the allocation fails.

Panics if the supplied iterator returns fewer elements than it promised.

§Examples
let slice = bump.alloc_iter_exact([1, 2, 3]);
assert_eq!(slice, [1, 2, 3]);
source

pub fn alloc_iter_mut<T>( &mut self, iter: impl IntoIterator<Item = T>, ) -> BumpBox<'a, [T]>

Allocate elements of an iterator into a slice. Unlike alloc_iter, this function requires a mutable Bump(Scope).

When bumping downwards, prefer alloc_iter_mut_rev or alloc_iter_exact as in this case this function incurs an additional copy of the slice internally.

§Panics

Panics if the allocation fails.

§Examples
let slice = bump.alloc_iter_mut([1, 2, 3]);
assert_eq!(slice, [1, 2, 3]);
source

pub fn alloc_iter_mut_rev<T>( &mut self, iter: impl IntoIterator<Item = T>, ) -> BumpBox<'a, [T]>

Allocate elements of an iterator into a slice in reverse order.

When bumping upwards, prefer alloc_iter_mut or alloc_iter_exact as in this case this function incurs an additional copy of the slice internally.

§Panics

Panics if the allocation fails.

§Examples
let slice = bump.alloc_iter_mut_rev([1, 2, 3]);
assert_eq!(slice, [3, 2, 1]);
source

pub fn alloc_uninit<T>(&self) -> BumpBox<'a, MaybeUninit<T>>

Allocate an unitialized object.

You can safely initialize the object with init or unsafely with assume_init.

§Panics

Panics if the allocation fails.

§Examples

Safely:

let mut bump: Bump = Bump::new();
let mut five = bump.alloc_uninit();

let five = five.init(5);

assert_eq!(*five, 5)

Unsafely:

let mut bump: Bump = Bump::new();
let mut five = bump.alloc_uninit();

let five = unsafe {
    five.write(5);
    five.assume_init()
};

assert_eq!(*five, 5)
source

pub fn alloc_uninit_slice<T>(&self, len: usize) -> BumpBox<'a, [MaybeUninit<T>]>

Allocate an unitialized object slice.

You can safely initialize the object with init_fill, init_fill_with, init_copy, init_clone or unsafely with assume_init.

§Panics

Panics if the allocation fails.

§Examples

Safely:

let bump: Bump = Bump::new();
let mut values = bump.alloc_uninit_slice(3);

let values = values.init_copy(&[1, 2, 3]);

assert_eq!(*values, [1, 2, 3])

Unsafely:

let bump: Bump = Bump::new();
let mut values = bump.alloc_uninit_slice(3);

let values = unsafe {
    values[0].write(1);
    values[1].write(2);
    values[2].write(3);

    values.assume_init()
};

assert_eq!(*values, [1, 2, 3])
source

pub fn alloc_uninit_slice_for<T>( &self, slice: &[T], ) -> BumpBox<'a, [MaybeUninit<T>]>

Allocate an unitialized object slice.

You can safely initialize the object with init_fill, init_fill_with, init_copy, init_clone or unsafely with assume_init.

This is just like (try_)alloc_uninit_slice but uses a slice to provide the len. This avoids a check for a valid layout. The elements of slice are irrelevant.

§Panics

Panics if the allocation fails.

source

pub fn alloc_fixed_vec<T>(&self, len: usize) -> FixedBumpVec<'a, T>

Allocate a FixedBumpVec with the given capacity.

§Panics

Panics if the allocation fails.

§Examples
let mut values = bump.alloc_fixed_vec(3);
values.push(1);
values.push(2);
values.push(3);
assert_eq!(values, [1, 2, 3])
source

pub fn alloc_fixed_string(&self, len: usize) -> FixedBumpString<'a>

Allocate a FixedBumpString with the given capacity.

§Panics

Panics if the allocation fails.

§Examples
let mut values = bump.alloc_fixed_vec(3);
values.push(1);
values.push(2);
values.push(3);
assert_eq!(values, [1, 2, 3])
source

pub fn alloc_layout(&self, layout: Layout) -> NonNull<u8>

Allocates memory as described by the given Layout.

§Panics

Panics if the allocation fails.

source

pub fn reserve_bytes(&self, additional: usize)

Reserves capacity for at least additional more bytes to be bump allocated. The bump allocator may reserve more space to avoid frequent reallocations. After calling reserve, chunks().remaining() will be greater than or equal to additional. Does nothing if capacity is already sufficient.

§Panics

Panics if the allocation fails.

§Examples
let bump: Bump = Bump::new();
assert!(bump.stats().capacity() < 4096);

bump.reserve_bytes(4096);
assert!(bump.stats().capacity() > 4096);
source

pub fn try_alloc<T>(&self, value: T) -> Result<BumpBox<'a, T>, AllocError>

Allocate an object.

§Errors

Errors if the allocation fails.

source

pub fn try_alloc_with<T>( &self, f: impl FnOnce() -> T, ) -> Result<BumpBox<'a, T>, AllocError>

Pre-allocate space for an object. Once space is allocated f will be called to create the value to be put at that place. In some situations this can help the compiler realize that T can be constructed at the allocated space instead of having to copy it over.

§Errors

Errors if the allocation fails.

source

pub fn try_alloc_default<T: Default>( &self, ) -> Result<BumpBox<'a, T>, AllocError>

Allocate an object with its default value. This is equivalent to try_alloc_with(T::default()).

§Errors

Errors if the allocation fails.

source

pub fn try_alloc_try_with<T, E>( &self, f: impl FnOnce() -> Result<T, E>, ) -> Result<Result<BumpBox<'a, T>, E>, AllocError>

Allocates the result of f in the bump allocator, then moves E out of it and deallocates the space it took up.

This can be more performant than allocating T after the fact, as Result<T, E> may be constructed in the bump allocators memory instead of on the stack and then copied over.

§Errors

Errors if the allocation fails.

source

pub fn try_alloc_slice_copy<T: Copy>( &self, slice: &[T], ) -> Result<BumpBox<'a, [T]>, AllocError>

Allocate a slice and Copy elements from an existing slice.

§Errors

Errors if the allocation fails.

source

pub fn try_alloc_slice_clone<T: Clone>( &self, slice: &[T], ) -> Result<BumpBox<'a, [T]>, AllocError>

Allocate a slice and Clone elements from an existing slice.

§Errors

Errors if the allocation fails.

source

pub fn try_alloc_slice_fill<T: Clone>( &self, len: usize, value: T, ) -> Result<BumpBox<'a, [T]>, AllocError>

Allocate a slice and fill it with elements by cloning value.

§Errors

Errors if the allocation fails.

source

pub fn try_alloc_slice_fill_with<T>( &self, len: usize, f: impl FnMut() -> T, ) -> Result<BumpBox<'a, [T]>, AllocError>

Allocates a slice by fill it with elements returned by calling a closure repeatedly.

This method uses a closure to create new values. If you’d rather Clone a given value, use (try_)alloc_slice_fill. If you want to use the Default trait to generate values, you can pass Default::default as the argument.

§Errors

Errors if the allocation fails.

source

pub fn try_alloc_str(&self, src: &str) -> Result<BumpBox<'a, str>, AllocError>

Allocate a str.

§Errors

Errors if the allocation fails.

source

pub fn try_alloc_fmt( &self, args: Arguments<'_>, ) -> Result<BumpBox<'a, str>, AllocError>

Allocate a str from format arguments. For better performance prefer try_alloc_fmt_mut.

§Errors

Errors if the allocation fails.

Errors if a formatting trait implementation returned an error.

source

pub fn try_alloc_fmt_mut( &mut self, args: Arguments<'_>, ) -> Result<BumpBox<'a, str>, AllocError>

Allocate a str from format arguments. Unlike try_alloc_fmt, this function requires a mutable Bump(Scope).

§Errors

Errors if the allocation fails.

Errors if a formatting trait implementation returned an error.

source

pub fn try_alloc_iter<T>( &self, iter: impl IntoIterator<Item = T>, ) -> Result<BumpBox<'a, [T]>, AllocError>

Allocate elements of an iterator into a slice. For better performance prefer try_alloc_iter_exact or try_alloc_iter_mut(_rev).

§Errors

Errors if the allocation fails.

§Examples
let slice = bump.alloc_iter([1, 2, 3]);
assert_eq!(slice, [1, 2, 3]);
source

pub fn try_alloc_iter_exact<T, I>( &self, iter: impl IntoIterator<Item = T, IntoIter = I>, ) -> Result<BumpBox<'a, [T]>, AllocError>
where I: ExactSizeIterator<Item = T>,

Allocate elements of an ExactSizeIterator into a slice.

§Panics

Panics if the supplied iterator returns fewer elements than it promised.

§Errors

Errors if the allocation fails.

source

pub fn try_alloc_iter_mut<T>( &mut self, iter: impl IntoIterator<Item = T>, ) -> Result<BumpBox<'a, [T]>, AllocError>

Allocate elements of an iterator into a slice. Unlike try_alloc_iter, this function requires a mutable Bump(Scope).

When bumping downwards, prefer try_alloc_iter_mut_rev or try_alloc_iter_exact as in this case this function incurs an additional copy of the slice internally.

§Errors

Errors if the allocation fails.

§Examples
let slice = bump.alloc_iter_mut([1, 2, 3]);
assert_eq!(slice, [1, 2, 3]);
source

pub fn try_alloc_iter_mut_rev<T>( &mut self, iter: impl IntoIterator<Item = T>, ) -> Result<BumpBox<'a, [T]>, AllocError>

Allocate elements of an iterator into a slice in reverse order.

When bumping upwards, prefer try_alloc_iter_mut or try_alloc_iter_exact as in this case this function incurs an additional copy of the slice internally.

§Errors

Errors if the allocation fails.

source

pub fn try_alloc_uninit<T>( &self, ) -> Result<BumpBox<'a, MaybeUninit<T>>, AllocError>

Allocate an unitialized object.

You can safely initialize the object with init or unsafely with assume_init.

§Errors

Errors if the allocation fails.

§Examples

Safely:

let mut bump: Bump = Bump::new();
let mut five = bump.alloc_uninit();

let five = five.init(5);

assert_eq!(*five, 5)

Unsafely:

let mut bump: Bump = Bump::new();
let mut five = bump.alloc_uninit();

let five = unsafe {
    five.write(5);
    five.assume_init()
};

assert_eq!(*five, 5)
source

pub fn try_alloc_uninit_slice<T>( &self, len: usize, ) -> Result<BumpBox<'a, [MaybeUninit<T>]>, AllocError>

Allocate an unitialized object slice.

You can safely initialize the object with init_fill, init_fill_with, init_copy, init_clone or unsafely with assume_init.

§Errors

Errors if the allocation fails.

§Examples

Safely:

let bump: Bump = Bump::new();
let mut values = bump.alloc_uninit_slice(3);

let values = values.init_copy(&[1, 2, 3]);

assert_eq!(*values, [1, 2, 3])

Unsafely:

let bump: Bump = Bump::new();
let mut values = bump.alloc_uninit_slice(3);

let values = unsafe {
    values[0].write(1);
    values[1].write(2);
    values[2].write(3);

    values.assume_init()
};

assert_eq!(*values, [1, 2, 3])
source

pub fn try_alloc_uninit_slice_for<T>( &self, slice: &[T], ) -> Result<BumpBox<'a, [MaybeUninit<T>]>, AllocError>

Allocate an unitialized object slice.

You can safely initialize the object with init_fill, init_fill_with, init_copy, init_clone or unsafely with assume_init.

This is just like (try_)alloc_uninit_slice but uses a slice to provide the len. This avoids a check for a valid layout. The elements of slice are irrelevant.

§Errors

Errors if the allocation fails.

source

pub fn try_alloc_fixed_vec<T>( &self, len: usize, ) -> Result<FixedBumpVec<'a, T>, AllocError>

Allocate a FixedBumpVec with the given capacity.

§Errors

Errors if the allocation fails.

§Examples
let mut values = bump.alloc_fixed_vec(3);
values.push(1);
values.push(2);
values.push(3);
assert_eq!(values, [1, 2, 3])
source

pub fn try_alloc_fixed_string( &self, len: usize, ) -> Result<FixedBumpString<'a>, AllocError>

Allocate a FixedBumpString with the given capacity.

§Errors

Errors if the allocation fails.

§Examples
let mut values = bump.alloc_fixed_vec(3);
values.push(1);
values.push(2);
values.push(3);
assert_eq!(values, [1, 2, 3])
source

pub fn try_alloc_layout( &self, layout: Layout, ) -> Result<NonNull<u8>, AllocError>

Allocates memory as described by the given Layout.

§Errors

Errors if the allocation fails.

source

pub fn try_reserve_bytes(&self, additional: usize) -> Result<(), AllocError>

Reserves capacity for at least additional more bytes to be bump allocated. The bump allocator may reserve more space to avoid frequent reallocations. After calling reserve, chunks().remaining() will be greater than or equal to additional. Does nothing if capacity is already sufficient.

§Errors

Errors if the allocation fails.

§Examples
let bump: Bump = Bump::new();
assert!(bump.stats().capacity() < 4096);

bump.reserve_bytes(4096);
assert!(bump.stats().capacity() > 4096);

Trait Implementations§

source§

impl<'a, A, const MIN_ALIGN: usize, const UP: bool, const GUARANTEED_ALLOCATED: bool> Debug for BumpPoolGuard<'a, A, MIN_ALIGN, UP, GUARANTEED_ALLOCATED>
where A: BaseAllocator<GUARANTEED_ALLOCATED> + Debug, MinimumAlignment<MIN_ALIGN>: SupportedMinimumAlignment,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'a, A, const MIN_ALIGN: usize, const UP: bool, const GUARANTEED_ALLOCATED: bool> Deref for BumpPoolGuard<'a, A, MIN_ALIGN, UP, GUARANTEED_ALLOCATED>
where A: BaseAllocator<GUARANTEED_ALLOCATED>, MinimumAlignment<MIN_ALIGN>: SupportedMinimumAlignment,

§

type Target = BumpScope<'a, A, MIN_ALIGN, UP, GUARANTEED_ALLOCATED>

The resulting type after dereferencing.
source§

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

Dereferences the value.
source§

impl<'a, A, const MIN_ALIGN: usize, const UP: bool, const GUARANTEED_ALLOCATED: bool> DerefMut for BumpPoolGuard<'a, A, MIN_ALIGN, UP, GUARANTEED_ALLOCATED>
where A: BaseAllocator<GUARANTEED_ALLOCATED>, MinimumAlignment<MIN_ALIGN>: SupportedMinimumAlignment,

source§

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

Mutably dereferences the value.
source§

impl<'a, A, const MIN_ALIGN: usize, const UP: bool, const GUARANTEED_ALLOCATED: bool> Drop for BumpPoolGuard<'a, A, MIN_ALIGN, UP, GUARANTEED_ALLOCATED>
where A: BaseAllocator<GUARANTEED_ALLOCATED>, MinimumAlignment<MIN_ALIGN>: SupportedMinimumAlignment,

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl<'a, A, const MIN_ALIGN: usize, const UP: bool, const GUARANTEED_ALLOCATED: bool> !Freeze for BumpPoolGuard<'a, A, MIN_ALIGN, UP, GUARANTEED_ALLOCATED>

§

impl<'a, A, const MIN_ALIGN: usize, const UP: bool, const GUARANTEED_ALLOCATED: bool> RefUnwindSafe for BumpPoolGuard<'a, A, MIN_ALIGN, UP, GUARANTEED_ALLOCATED>

§

impl<'a, A, const MIN_ALIGN: usize, const UP: bool, const GUARANTEED_ALLOCATED: bool> Send for BumpPoolGuard<'a, A, MIN_ALIGN, UP, GUARANTEED_ALLOCATED>
where A: Sync,

§

impl<'a, A, const MIN_ALIGN: usize, const UP: bool, const GUARANTEED_ALLOCATED: bool> !Sync for BumpPoolGuard<'a, A, MIN_ALIGN, UP, GUARANTEED_ALLOCATED>

§

impl<'a, A, const MIN_ALIGN: usize, const UP: bool, const GUARANTEED_ALLOCATED: bool> Unpin for BumpPoolGuard<'a, A, MIN_ALIGN, UP, GUARANTEED_ALLOCATED>

§

impl<'a, A, const MIN_ALIGN: usize, const UP: bool, const GUARANTEED_ALLOCATED: bool> UnwindSafe for BumpPoolGuard<'a, A, MIN_ALIGN, UP, GUARANTEED_ALLOCATED>

Blanket Implementations§

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> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

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, U> TryFrom<U> for T
where U: Into<T>,

§

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>,

§

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.