#[non_exhaustive]pub enum MatchKind {
Subgroup,
Fetch,
Datagram,
}Expand description
What a Matcher can be aimed at.
Datagram exists so that aiming a rule at datagrams produces a report
rather than silence; datagrams are not shapeable in this release, so a
Datagram matcher never matches a unit. The report is the scheduler’s
job once this module is wired.
Fetch is live on every draft. Drafts 18, 19 and 20 write a fetch
object’s Group ID as a difference whose sign the fetch’s Group Order
settles; the session reads that order off the FETCH —
capability::fetch_group_order_is_needed — and hands it to the framer, so
what a rule can miss is one stream at a time rather than a whole draft. A
stream the session cannot resolve is bypassed at its header and produces
no ObjectMeta for a rule to see, and says so itself as
Impairment { FramerBypass { FetchGroupOrderUnknown } }.
Being matchable is not being mutable, and the two are answered
separately: whether a rule claims a unit is Matcher::matches, and what
may then be done to it is capability::classify.
#[non_exhaustive] with no Default: there is no meaningful default
stream kind, and a wrong one would silently narrow every rule that
omitted the key.
Written as "subgroup", "fetch" or "datagram".