cwe-xml 0.7.2

A local in-memory, queryable, and navigable CWE database initialized with one or multiple CWE XML files.
Documentation
use std::rc::Rc;
use serde::Deserialize;
use crate::cwe::content_history::ContentHistory;
use crate::cwe::notes::Notes;
use crate::cwe::relationships::Relationships;
use crate::cwe::structured_text::StructuredText;
use crate::cwe::weaknesses::MappingNotes;

#[derive(Debug, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct Views {
    #[serde(rename = "$value", default)]
    pub views: Vec<Rc<View>>,
}

#[derive(Debug, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct View {
    #[serde(rename = "@ID")]
    pub id: i64,
    #[serde(rename = "@Name")]
    pub name: String,
    #[serde(rename = "@Type")]
    pub r#type: String,
    #[serde(rename = "@Status")]
    pub status: String,
    #[serde(rename = "Objective")]
    pub objective: StructuredText,
    #[serde(rename = "Audience")]
    pub audience: Option<Audience>,
    #[serde(rename = "Members")]
    pub members: Option<Relationships>,
    #[serde(rename = "Notes")]
    pub notes: Option<Notes>,
    #[serde(rename = "Filter")]
    pub filter: Option<String>,
    #[serde(rename = "Content_History")]
    pub content_history: ContentHistory,
    #[serde(rename = "Mapping_Notes")]
    pub mapping_notes: Option<MappingNotes>,
}

#[derive(Debug, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct Audience {
    #[serde(rename = "$value", default)]
    pub stake_holders: Vec<StakeHolder>,
}

#[derive(Debug, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct StakeHolder {
    #[serde(rename = "Type")]
    pub r#type: String,
    #[serde(rename = "Description")]
    pub description: Option<String>,
}