alloc_counter
Alloc counters
A redesign of the Quick and Dirty Allocation Profiling Tool.
Features
-
Count allocations, reallocations and deallocations individually with
count_alloc
. -
Allow, deny, and forbid use of the global allocator with
allow_alloc
,deny_alloc
andforbid_alloc
. -
#[no_alloc]
function attribute to deny and#[no_alloc(forbid)]
to forbid use of the global allocator.
Limitations and known issues
- Methods must either take a reference to
self
orSelf
must be aCopy
type.
Usage
An AllocCounter<A>
wraps an allocator A
to individually count the number of calls to
alloc
, realloc
, and dealloc
.
use AllocCounter;
static A: = AllocCounter;
Std-users may prefer to inherit their system's allocator.
use AllocCounterSystem;
static A: AllocCounterSystem = AllocCounterSystem;
To count the allocations of an expression, use count_alloc
.
assert_eq!;
To deny allocations for an expression use deny_alloc
.
foo;
Similar to Rust's lints, you can still allow allocation inside a deny block.
foo;
Forbidding allocations forces a panic even when allow_alloc
is used.
foo;
For added sugar you may use the #[no_alloc]
attribute on functions, including methods with
self-binds. #[no_alloc]
expands to calling deny_alloc
and forcefully moves the parameters
into the checked block. #[no_alloc(forbid)]
calls forbid_alloc
.
foo;
License: MIT OR Apache-2.0