#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
pub struct Container {
pub duration: ::std::option::Option<f64>,
pub format: ::std::option::Option<crate::types::Format>,
pub tracks: ::std::option::Option<::std::vec::Vec<crate::types::Track>>,
}
impl Container {
pub fn duration(&self) -> ::std::option::Option<f64> {
self.duration
}
pub fn format(&self) -> ::std::option::Option<&crate::types::Format> {
self.format.as_ref()
}
pub fn tracks(&self) -> &[crate::types::Track] {
self.tracks.as_deref().unwrap_or_default()
}
}
impl Container {
pub fn builder() -> crate::types::builders::ContainerBuilder {
crate::types::builders::ContainerBuilder::default()
}
}
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
#[non_exhaustive]
pub struct ContainerBuilder {
pub(crate) duration: ::std::option::Option<f64>,
pub(crate) format: ::std::option::Option<crate::types::Format>,
pub(crate) tracks: ::std::option::Option<::std::vec::Vec<crate::types::Track>>,
}
impl ContainerBuilder {
pub fn duration(mut self, input: f64) -> Self {
self.duration = ::std::option::Option::Some(input);
self
}
pub fn set_duration(mut self, input: ::std::option::Option<f64>) -> Self {
self.duration = input;
self
}
pub fn get_duration(&self) -> &::std::option::Option<f64> {
&self.duration
}
pub fn format(mut self, input: crate::types::Format) -> Self {
self.format = ::std::option::Option::Some(input);
self
}
pub fn set_format(mut self, input: ::std::option::Option<crate::types::Format>) -> Self {
self.format = input;
self
}
pub fn get_format(&self) -> &::std::option::Option<crate::types::Format> {
&self.format
}
pub fn tracks(mut self, input: crate::types::Track) -> Self {
let mut v = self.tracks.unwrap_or_default();
v.push(input);
self.tracks = ::std::option::Option::Some(v);
self
}
pub fn set_tracks(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Track>>) -> Self {
self.tracks = input;
self
}
pub fn get_tracks(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Track>> {
&self.tracks
}
pub fn build(self) -> crate::types::Container {
crate::types::Container {
duration: self.duration,
format: self.format,
tracks: self.tracks,
}
}
}