#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
#[derive(derivative::Derivative)]
#[derivative(Default)]
pub struct GenZ {
#[serde(rename = "AccessKeyViolations")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub access_key_violations: Option<i64>,
#[serde(rename = "EndToEndCRCErrors")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub end_to_end_crc_errors: Option<i64>,
#[serde(rename = "LLRRecovery")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub llr_recovery: Option<i64>,
#[serde(rename = "LinkNTE")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub link_nte: Option<i64>,
#[serde(rename = "MarkedECN")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub marked_ecn: Option<i64>,
#[serde(rename = "NonCRCTransientErrors")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub non_crc_transient_errors: Option<i64>,
#[serde(rename = "PacketCRCErrors")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub packet_crc_errors: Option<i64>,
#[serde(rename = "PacketDeadlineDiscards")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub packet_deadline_discards: Option<i64>,
#[serde(rename = "RXStompedECRC")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub rx_stomped_ecrc: Option<i64>,
#[serde(rename = "ReceivedECN")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub received_ecn: Option<i64>,
#[serde(rename = "TXStompedECRC")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tx_stomped_ecrc: Option<i64>,
}
impl crate::Metadata<'static> for GenZ {
const JSON_SCHEMA: &'static str = "PortMetrics.v1_4_0.json";
}