whichdoc 0.2.1

A cargo documentation diagnostics-driven editor
Documentation
//! The types mirror cargo's diagnostic ("message") JSON format.
//!
//! They were generated automatically from a JSON schema created via the genson-cli tool (see crate)
//! which was converted to Rust (serde) structs using quicktype at <https://app.quicktype.io#l=rust>
use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize, Clone)]
pub struct Coordinate {
    pub reason: String,
    pub message: Option<Message>,
    pub package_id: Option<String>,
    pub manifest_path: Option<String>,
    pub target: Option<Target>,
}

#[derive(Serialize, Deserialize, Clone)]
pub struct Message {
    #[serde(rename = "$message_type")]
    pub message_type: String,
    pub children: Vec<Child>,
    pub code: Code,
    pub level: String,
    pub message: String,
    pub rendered: String,
    pub spans: Vec<Span>,
}

#[derive(Serialize, Deserialize, Clone)]
pub struct Child {
    pub children: Vec<Option<serde_json::Value>>,
    pub code: Option<serde_json::Value>,
    pub level: String,
    pub message: String,
    pub rendered: Option<serde_json::Value>,
    pub spans: Vec<Option<serde_json::Value>>,
}

#[derive(Serialize, Deserialize, Clone)]
pub struct Code {
    pub code: String,
    pub explanation: Option<serde_json::Value>,
}

#[derive(Serialize, Deserialize, Clone)]
pub struct Span {
    pub byte_end: i64,
    pub byte_start: i64,
    pub column_end: i64,
    pub column_start: i64,
    pub expansion: Option<serde_json::Value>,
    pub file_name: String,
    pub is_primary: bool,
    pub label: Option<serde_json::Value>,
    pub line_end: i64,
    pub line_start: i64,
    pub suggested_replacement: Option<serde_json::Value>,
    pub suggestion_applicability: Option<serde_json::Value>,
    pub text: Vec<Text>,
}

#[derive(Serialize, Deserialize, Clone)]
pub struct Text {
    pub highlight_end: i64,
    pub highlight_start: i64,
    pub text: String,
}

#[derive(Serialize, Deserialize, Clone)]
pub struct Target {
    pub crate_types: Vec<String>,
    pub doc: bool,
    pub doctest: bool,
    pub edition: String,
    pub kind: Vec<String>,
    pub name: String,
    pub src_path: String,
    pub test: bool,
}