//! `dvb-ci`-specific dispatch trait. `Parse` / `Serialize` come from
//! `broadcast_common` and are imported at the call sites.
//!
//! Mirrors dvb-si's `DescriptorDef` and scte35-splice's `CommandDef`: each typed
//! APDU object declares its 3-byte `apdu_tag` and a SCREAMING_SNAKE diagnostic
//! `NAME`, and the `declare_apdus!` dispatch macro pins the tag in the dispatch
//! list to the trait const via a drift test, so the list can never silently
//! drift from the implemented set.
//!
//! The `Parse` impl on each object parses the **whole** APDU including its
//! `apdu_tag` + `length_field` header, and the `Serialize` impl writes the whole
//! APDU back — so dispatch can route on the header and round-trip is symmetric.
use crateApduTag;
use Parse;
/// Implemented by every typed APDU object; drives [`crate::AnyApdu`] dispatch.