//! Snapshots of runtime state. //! //! See [Handle::dump][crate::runtime::Handle::dump]. use std::fmt; /// A snapshot of a runtime's state. /// /// See [Handle::dump][crate::runtime::Handle::dump]. #[derive(Debug)] pub struct Dump { tasks: Tasks, } /// Snapshots of tasks. /// /// See [Handle::dump][crate::runtime::Handle::dump]. #[derive(Debug)] pub struct Tasks { tasks: Vec, } /// A snapshot of a task. /// /// See [Handle::dump][crate::runtime::Handle::dump]. #[derive(Debug)] pub struct Task { trace: Trace, } /// An execution trace of a task's last poll. /// /// See [Handle::dump][crate::runtime::Handle::dump]. #[derive(Debug)] pub struct Trace { inner: super::task::trace::Trace, } impl Dump { pub(crate) fn new(tasks: Vec) -> Self { Self { tasks: Tasks { tasks }, } } /// Tasks in this snapshot. pub fn tasks(&self) -> &Tasks { &self.tasks } } impl Tasks { /// Iterate over tasks. pub fn iter(&self) -> impl Iterator { self.tasks.iter() } } impl Task { pub(crate) fn new(trace: super::task::trace::Trace) -> Self { Self { trace: Trace { inner: trace }, } } /// A trace of this task's state. pub fn trace(&self) -> &Trace { &self.trace } } impl fmt::Display for Trace { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { self.inner.fmt(f) } }