use serde::{Deserialize, Serialize};
use crate::types::{Reasons, TargetRef};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Partitions {
pub volume: f64,
#[serde(
rename = "endPtTable",
skip_serializing_if = "Option::is_none",
default
)]
pub end_pt_table: Option<String>,
pub data: Vec<PartitionData>,
}
impl Partitions {
#[must_use]
pub fn new(volume: f64) -> Self {
Self {
volume,
end_pt_table: None,
data: Vec::new(),
}
}
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct PartitionData {
pub tar: TargetRef,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub excluded: Option<Reasons>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub note: Option<Reasons>,
pub pos: i32,
pub neg: i32,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub undef: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub excl: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub conc: Option<f64>,
}
impl PartitionData {
#[must_use]
pub fn new(tar: TargetRef, pos: i32, neg: i32) -> Self {
Self {
tar,
excluded: None,
note: None,
pos,
neg,
undef: None,
excl: None,
conc: None,
}
}
}