1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
use self::token::with_suspended_allocation_group;
mod stack;
mod token;
mod tracer;
mod tracing;
mod tracing_allocator;

pub use self::token::AllocationGroupId;
pub use self::token::AllocationGroupToken;
pub use self::tracer::Tracer;
pub use self::tracing::AllocationLayer;
pub use self::tracing_allocator::GroupedTraceableAllocator;

/// Runs the given closure without tracing allocations or deallocations.
///
/// Inevitably, memory may need to be allocated and deallocated in the area of the program that's
/// aggregating and processing the allocator events. While `GroupedTraceableAllocator` already
/// avoids reentrantly tracing (de)allocations, this method provides a way to do so from _outside_
/// of the `GlobalAlloc` codepath.
#[inline(always)]
pub fn without_allocation_tracing<F>(f: F)
where
    F: FnOnce(),
{
    with_suspended_allocation_group(f)
}