nvd-cwe 0.1.0

A rust implementation of the nvd-cwe.
Documentation
use serde::{Deserialize, Serialize};

#[derive(Debug, Deserialize, Serialize)]
#[serde(deny_unknown_fields)]
pub struct StructuredCode {
  #[serde(rename(deserialize = "@Nature"))]
  pub nature: String,
  #[serde(rename(deserialize = "@Language"))]
  pub language: Option<String>,
  #[serde(rename(deserialize = "$value"), default)]
  pub children: Option<Vec<StructuredTextType>>,
}

#[derive(Debug, Deserialize, Serialize)]
#[serde(deny_unknown_fields)]
pub struct StructuredText {
  #[serde(rename(deserialize = "$value"))]
  pub descriptions: Vec<StructuredTextType>,
}

#[derive(Debug, Deserialize, Serialize)]
#[serde(deny_unknown_fields, rename_all(serialize = "snake_case"))]
pub enum StructuredTextType {
  #[serde(rename(deserialize = "p"))]
  P {
    #[serde(rename(deserialize = "$value"), default)]
    children: Vec<Box<StructuredTextType>>,
  },
  #[serde(rename(deserialize = "sup"))]
  Sup {
    #[serde(rename(deserialize = "$value"), default)]
    children: Vec<Box<StructuredTextType>>,
  },
  #[serde(rename(deserialize = "b"))]
  XhtmlB {
    #[serde(rename(deserialize = "$value"), default)]
    children: Vec<Box<StructuredTextType>>,
  },
  #[serde(rename(deserialize = "ol"))]
  XhtmlOl {
    #[serde(rename(deserialize = "$value"), default)]
    children: Vec<Box<StructuredTextType>>,
  },
  #[serde(rename(deserialize = "li"))]
  XhtmlLi {
    #[serde(rename(deserialize = "$value"), default)]
    children: Vec<Box<StructuredTextType>>,
  },
  #[serde(rename(deserialize = "ul"))]
  XhtmlUl {
    #[serde(rename(deserialize = "$value"), default)]
    children: Vec<Box<StructuredTextType>>,
  },
  #[serde(rename(deserialize = "tbody"))]
  XhtmlTBody {
    #[serde(rename(deserialize = "$value"), default)]
    children: Vec<Box<StructuredTextType>>,
  },
  #[serde(rename(deserialize = "table"))]
  XhtmlTable {
    #[serde(rename(deserialize = "$value"), default)]
    children: Vec<Box<StructuredTextType>>,
  },
  #[serde(rename(deserialize = "tr"))]
  XhtmlTr {
    #[serde(rename(deserialize = "$value"), default)]
    children: Vec<Box<StructuredTextType>>,
  },
  #[serde(rename(deserialize = "th"))]
  XhtmlTh {
    #[serde(rename(deserialize = "$value"), default)]
    children: Vec<Box<StructuredTextType>>,
  },
  #[serde(rename(deserialize = "td"))]
  XhtmlTd {
    #[serde(rename(deserialize = "$value"), default)]
    children: Vec<Box<StructuredTextType>>,
  },
  #[serde(rename(deserialize = "img"))]
  XhtmlImg {
    #[serde(rename(deserialize = "@src"))]
    src: String,
    #[serde(rename(deserialize = "@alt"))]
    alt: Option<String>,
  },
  #[serde(rename(deserialize = "div"))]
  XhtmlDiv {
    #[serde(rename(deserialize = "@style"))]
    style: Option<String>,
    #[serde(rename(deserialize = "$value"), default)]
    children: Vec<Box<StructuredTextType>>,
  },
  #[serde(rename(deserialize = "br"))]
  XhtmlBr,
  #[serde(rename(deserialize = "i"))]
  XhtmlI {
    #[serde(rename(deserialize = "$value"))]
    text: String,
  },
  #[serde(rename(deserialize = "$text"))]
  Text(String),
}