#[cfg(feature = "serde")] use serde::{Deserialize, Serialize}; /// A capability specifying a range of supported values. /// /// # W3C Spec Compliance /// /// Corresponds to [`sequence`][sequence] from the W3C ["WebIDL"][webidl_spec] spec: /// /// | Rust | W3C | /// | ----------------------------------------- | --------------------- | /// | `MediaTrackValueSequenceCapability` | `sequence` | /// | `MediaTrackValueSequenceCapability` | `sequence` | /// /// [sequence]: https://webidl.spec.whatwg.org/#idl-sequence /// [webidl_spec]: https://webidl.spec.whatwg.org/ #[derive(Default, Debug, Clone, PartialEq)] #[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] #[cfg_attr(feature = "serde", serde(transparent))] pub struct MediaTrackValueSequenceCapability { pub values: Vec, } impl From for MediaTrackValueSequenceCapability { fn from(value: T) -> Self { Self { values: vec![value], } } } impl From> for MediaTrackValueSequenceCapability { fn from(values: Vec) -> Self { Self { values } } } #[cfg(feature = "serde")] #[cfg(test)] mod serde_tests { use crate::macros::test_serde_symmetry; use super::*; type Subject = MediaTrackValueSequenceCapability; #[test] fn customized() { let subject = Subject { values: vec![1, 2, 3], }; let json = serde_json::json!([1, 2, 3]); test_serde_symmetry!(subject: subject, json: json); } }