bump_scope/traits/
mut_bump_allocator.rs1use crate::{
2 BaseAllocator, Bump, BumpAllocator, BumpScope, MinimumAlignment, SupportedMinimumAlignment, WithoutDealloc,
3 WithoutShrink, traits::assert_implements,
4};
5
6pub unsafe trait MutBumpAllocator: BumpAllocator {}
12
13assert_implements! {
14 [MutBumpAllocator + ?Sized]
15
16 Bump
17 &mut Bump
18
19 BumpScope
20 &mut BumpScope
21
22 dyn MutBumpAllocator
23 &mut dyn MutBumpAllocator
24}
25
26unsafe impl<A: MutBumpAllocator + ?Sized> MutBumpAllocator for &mut A {}
27
28unsafe impl<A: MutBumpAllocator> MutBumpAllocator for WithoutDealloc<A> {}
29unsafe impl<A: MutBumpAllocator> MutBumpAllocator for WithoutShrink<A> {}
30
31unsafe impl<A, const MIN_ALIGN: usize, const UP: bool, const GUARANTEED_ALLOCATED: bool, const DEALLOCATES: bool>
32 MutBumpAllocator for Bump<A, MIN_ALIGN, UP, GUARANTEED_ALLOCATED, DEALLOCATES>
33where
34 MinimumAlignment<MIN_ALIGN>: SupportedMinimumAlignment,
35 A: BaseAllocator<GUARANTEED_ALLOCATED>,
36{
37}
38
39unsafe impl<A, const MIN_ALIGN: usize, const UP: bool, const GUARANTEED_ALLOCATED: bool, const DEALLOCATES: bool>
40 MutBumpAllocator for BumpScope<'_, A, MIN_ALIGN, UP, GUARANTEED_ALLOCATED, DEALLOCATES>
41where
42 MinimumAlignment<MIN_ALIGN>: SupportedMinimumAlignment,
43 A: BaseAllocator<GUARANTEED_ALLOCATED>,
44{
45}