use alloc_tracker::{Allocator, ReportOperation, Session};
#[global_allocator]
static ALLOCATOR: Allocator<std::alloc::System> = Allocator::system();
fn report_total_bytes(session: &Session, operation_name: &str) -> u64 {
report_operation(
session,
operation_name,
ReportOperation::total_bytes_allocated,
)
}
fn report_peak(session: &Session, operation_name: &str) -> Option<f64> {
report_operation(
session,
operation_name,
ReportOperation::peak_outstanding_bytes,
)
}
fn report_operation<R>(
session: &Session,
operation_name: &str,
read: impl FnOnce(&ReportOperation) -> R,
) -> R {
let report = session.to_report();
let (_, operation) = report
.operations()
.find(|&(name, _)| name == operation_name)
.unwrap();
read(operation)
}
mod cumulative;
mod lifecycle;
mod multithreading;
mod peak;