Skip to main content

hotpath_meta/
lib.rs

1//! hotpath-rs is a simple async Rust profiler. It instruments functions, channels, futures, and streams to quickly find bottlenecks and focus optimizations where they matter most.
2//! It can provide actionable insights into time, memory, and data flow with minimal setup.
3//! ## Setup & Usage
4//! For a complete setup guide, examples, and advanced configuration, visit
5//! [hotpath.rs](https://hotpath.rs).
6
7#[cfg(all(feature = "hotpath-meta", not(feature = "hotpath-off-meta")))]
8#[doc(inline)]
9pub use lib_on::*;
10#[cfg(all(feature = "hotpath-meta", not(feature = "hotpath-off-meta")))]
11mod lib_on;
12
13#[cfg(all(feature = "hotpath-meta", not(feature = "hotpath-off-meta")))]
14pub use lib_on::channels;
15#[cfg(all(feature = "hotpath-meta", not(feature = "hotpath-off-meta")))]
16pub use lib_on::data_flow;
17#[cfg(all(feature = "hotpath-meta", not(feature = "hotpath-off-meta")))]
18pub use lib_on::futures;
19#[cfg(all(feature = "hotpath-meta", not(feature = "hotpath-off-meta")))]
20pub use lib_on::streams;
21#[cfg(all(
22    feature = "hotpath-meta",
23    not(feature = "hotpath-off-meta"),
24    feature = "threads"
25))]
26pub use lib_on::threads;
27#[cfg(all(
28    feature = "hotpath-meta",
29    not(feature = "hotpath-off-meta"),
30    feature = "tokio"
31))]
32pub use lib_on::tokio_runtime;
33
34#[cfg(any(feature = "hotpath-meta", feature = "ci", feature = "tui"))]
35pub(crate) mod output;
36#[cfg(all(feature = "hotpath-meta", not(feature = "hotpath-off-meta")))]
37pub use output::format_debug_truncated;
38#[cfg(any(feature = "hotpath-meta", feature = "ci", feature = "tui"))]
39pub use output::{
40    ceil_char_boundary, floor_char_boundary, format_bytes, format_duration, parse_bytes,
41    parse_duration, shorten_function_name, FunctionLogsList, FunctionsData, MetricType,
42    MetricsProvider, OutputDestination, ProfilingMode, MAX_RESULT_LEN,
43};
44
45#[cfg(all(feature = "hotpath-meta", not(feature = "hotpath-off-meta")))]
46pub(crate) mod output_on;
47
48#[cfg(all(feature = "hotpath-meta", not(feature = "hotpath-off-meta")))]
49pub(crate) mod metrics_server;
50
51#[cfg(all(feature = "hotpath-mcp-meta", not(feature = "hotpath-off-meta")))]
52pub(crate) mod mcp_server;
53
54#[cfg(any(feature = "hotpath-meta", feature = "ci", feature = "tui"))]
55pub mod json;
56#[cfg(any(feature = "hotpath-meta", feature = "ci", feature = "tui"))]
57pub use json::Route;
58
59#[cfg(all(feature = "hotpath-meta", not(feature = "hotpath-off-meta")))]
60pub(crate) mod tid;
61
62// When hotpath feature is not enabled or hotpath-off-meta is enabled, use no-op stubs
63#[cfg(any(not(feature = "hotpath-meta"), feature = "hotpath-off-meta"))]
64#[doc(inline)]
65pub use lib_off::*;
66#[cfg(any(not(feature = "hotpath-meta"), feature = "hotpath-off-meta"))]
67mod lib_off;
68
69#[cfg(any(not(feature = "hotpath-meta"), feature = "hotpath-off-meta"))]
70pub use lib_off::channels;
71#[cfg(any(not(feature = "hotpath-meta"), feature = "hotpath-off-meta"))]
72pub use lib_off::futures;
73#[cfg(any(not(feature = "hotpath-meta"), feature = "hotpath-off-meta"))]
74pub use lib_off::streams;
75#[cfg(any(not(feature = "hotpath-meta"), feature = "hotpath-off-meta"))]
76pub use lib_off::threads;
77
78mod shared;
79pub use shared::{Format, IntoF64, Section};