Should fill in some missing info, and maybe even replace guppy completely at some point.
3NPBHM5FRTNMFB6RK5H765YZEVGYA7B4YAMEYBOHYUBRM7QSXSOQC let source_data = include_bytes!("../timings.stdout");let timings = annotations::timings::Output::new(source_data);
let timings_data = include_bytes!("../timings.stdout");let timings = annotations::timings::Output::new(timings_data);
use cargo_metadata::PackageId;use serde::{Deserialize, Serialize};/// See https://doc.rust-lang.org/nightly/nightly-rustc/cargo/core/profiles/enum.PanicStrategy.html#[derive(Clone, Debug, Serialize, Deserialize)]#[serde(rename_all = "kebab-case")]pub enum PanicStrategy {Unwind,Abort,}/// See https://doc.rust-lang.org/nightly/nightly-rustc/cargo/core/profiles/struct.Profile.html#[derive(Clone, Debug, Serialize, Deserialize)]pub struct Profile {pub name: String,pub opt_level: String,pub lto: String,pub codegen_units: Option<usize>,pub debuginfo: usize,pub debug_assertions: bool,pub overflow_checks: bool,pub rpath: bool,pub incremental: bool,pub panic: PanicStrategy,}/// See https://doc.rust-lang.org/nightly/nightly-rustc/cargo/core/compiler/unit_graph/struct.UnitDep.html#[derive(Clone, Debug, Serialize, Deserialize)]pub struct UnitDep {pub index: usize,pub extern_crate_name: String,pub public: bool,pub noprelude: bool,}/// See https://doc.rust-lang.org/nightly/nightly-rustc/cargo/core/compiler/unit/struct.UnitInner.html#[derive(Clone, Debug, Serialize, Deserialize)]pub struct Unit {pub pkg_id: PackageId,pub target: super::Target,pub profile: Profile,pub platform: Option<String>,pub mode: super::Mode,pub features: Vec<String>,pub is_std: Option<bool>,pub dependencies: Vec<UnitDep>,}/// See https://doc.rust-lang.org/cargo/reference/unstable.html#unit-graph#[derive(Clone, Debug, Serialize, Deserialize)]pub struct UnitGraph {version: usize,pub units: Vec<Unit>,pub roots: Vec<usize>,}impl UnitGraph {pub fn new(source: &str) -> Result<Self, serde_json::Error> {let graph: Self = serde_json::from_str(source)?;assert_eq!(graph.version, 1);Ok(graph)}}