intermodal/src/mode.rs

25 lines
572 B
Rust
Raw Normal View History

2019-05-24 10:25:55 +02:00
use crate::common::*;
#[skip_serializing_none]
2019-05-24 10:25:55 +02:00
#[serde(untagged)]
#[derive(Deserialize, Serialize, Debug, PartialEq)]
pub(crate) enum Mode {
Single {
length: u64,
#[serde(skip_serializing_if = "Option::is_none", default, with = "inner")]
md5sum: Option<String>,
},
Multiple {
files: Vec<FileInfo>,
},
2019-05-24 10:25:55 +02:00
}
impl Mode {
pub(crate) fn total_size(&self) -> Bytes {
match self {
Self::Single { length, .. } => Bytes::from(*length),
Self::Multiple { files } => Bytes::from(files.iter().map(|file| file.length).sum::<u64>()),
}
}
}