pub trait CatalogExt:
Serialize
+ DeserializeOwned
+ Default
+ Clone
+ Send
+ Unpin
+ 'static { }Expand description
An application’s catalog extension: a plain serde struct of extra root members, serialized as a flat union with the members MSF itself defines.
Any type that serializes to a JSON object qualifies, so a caller names its own
struct and never touches serde_json:
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Clone, Default)]
struct Mpegts {
program_number: u16,
}
#[derive(Serialize, Deserialize, Clone, Default)]
struct MpegtsExt {
#[serde(skip_serializing_if = "Option::is_none")]
mpegts: Option<Mpegts>,
}
let mut catalog = moq_msf::Catalog::<MpegtsExt>::default();
catalog.ext.mpegts = Some(Mpegts { program_number: 1 });() is the no-extension case, so Catalog<()> carries only what MSF defines and
drops the rest. For passthrough of members that aren’t known at compile time, use
serde_json::Map<String, serde_json::Value>, which keeps them verbatim.
An extension MUST NOT name a member after one MSF defines (version, generatedAt,
isComplete, tracks, initDataList); the wire JSON would carry a duplicate key.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".