1#![allow(clippy::must_use_candidate)]
7#![allow(clippy::cast_precision_loss)]
8#![allow(clippy::cast_possible_truncation)]
9#![allow(clippy::cast_lossless)]
10#![allow(clippy::cast_sign_loss)]
11#![allow(clippy::use_self)]
12#![allow(clippy::missing_errors_doc)]
13#![allow(clippy::missing_panics_doc)]
14#![allow(clippy::module_name_repetitions)]
15#![allow(clippy::needless_pass_by_value)]
16#![allow(clippy::similar_names)]
17#![allow(clippy::too_many_lines)]
18#![allow(clippy::unnested_or_patterns)]
19#![allow(clippy::unused_self)]
20#![allow(clippy::format_in_format_args)]
21#![allow(clippy::doc_markdown)]
22#![allow(clippy::return_self_not_must_use)]
23#![allow(clippy::redundant_closure)]
24#![allow(clippy::float_cmp)]
25#![allow(clippy::manual_range_contains)]
26#![allow(clippy::into_iter_on_ref)]
27#![allow(clippy::map_unwrap_or)]
28#![allow(clippy::format_push_string)]
29#![warn(missing_docs)]
54#![warn(clippy::all)]
55#![warn(clippy::pedantic)]
56
57pub use async_inspect_macros::{inspect, trace};
59
60pub mod config;
62
63pub mod inspector;
65
66pub mod state_machine {}
70
71pub mod task;
73
74pub mod timeline;
76
77pub mod deadlock;
79
80pub mod profile;
82
83pub mod runtime;
85
86pub mod instrument;
88
89pub mod reporter;
91
92pub mod export;
94
95pub mod graph;
97
98pub mod integrations;
100
101#[cfg(feature = "tokio")]
106pub mod sync;
107
108#[cfg(feature = "tokio")]
113pub mod channel;
114
115#[cfg(feature = "cli")]
117pub mod tui;
118
119#[cfg(feature = "dashboard")]
121pub mod dashboard;
122
123#[cfg(feature = "lsp")]
125pub mod lsp;
126
127pub mod telemetry;
132
133pub mod error {
137
138 use thiserror::Error;
139
140 #[derive(Error, Debug)]
142 pub enum Error {
143 #[error("Inspection error: {0}")]
145 Inspection(String),
146
147 #[error("Runtime error: {0}")]
149 Runtime(String),
150
151 #[error("Serialization error: {0}")]
153 Serialization(#[from] serde_json::Error),
154
155 #[error("IO error: {0}")]
157 Io(#[from] std::io::Error),
158 }
159
160 pub type Result<T> = std::result::Result<T, Error>;
162}
163
164pub mod prelude {
172
173 pub use crate::error::{Error, Result};
174 pub use crate::inspector::{Inspector, InspectorStats};
175 pub use crate::instrument::{InspectContext, TaskGuard};
176 pub use crate::reporter::html::HtmlReporter;
177 pub use crate::reporter::Reporter;
178 #[cfg(feature = "tokio")]
179 pub use crate::sync::{LockMetrics, Mutex, MutexGuard, RwLock, Semaphore};
180 pub use crate::task::{
181 sort_tasks, SortDirection, TaskFilter, TaskId, TaskInfo, TaskSortBy, TaskState,
182 };
183 pub use crate::timeline::{Event, EventKind};
184
185 pub use crate::{
187 inspect_point, inspect_task_complete, inspect_task_failed, inspect_task_start,
188 };
189}
190
191pub use error::{Error, Result};
193pub use inspector::Inspector;
194
195#[cfg(test)]
196mod tests {
197
198 #[test]
199 fn test_placeholder() {
200 assert_eq!(2 + 2, 4);
202 }
203}