Expand description
AcpVersion — the pinned ACP release, as a value object.
§Why a major/minor/patch triple
ACP release tags are schema-v<major>.<minor>.<patch> (schema-v1.25.0).
The release tag is what the verifier pins; the parsed AcpVersion
is what crosses the dispatcher’s API boundary. A u16-per-field
representation is decimal-clean, the same shape the wire never
carries (the wire does not pass a version) but the same shape
a comparable type like crate::domain::protocol_version::ProtocolVersion
uses.
§The Unknown variant
A future ACP release that is published after this build is
compiled shows up as Unknown { major, minor, patch }. The
three-tuple form means Unknown orders the same as a known
release with the same numbers would, and serde_json round-
trips the parsed form losslessly into a debug log. A peer
that announces a release older than the pin (e.g.
schema-v1.0.0) deserialises into the same shape the build
knows — the consumer’s FeatureProfile is what gates
feature-specific code, not the version itself.
§The ordering invariant
Ord and PartialOrd are hand-written, comparing by
(major, minor, patch) in order. The 1.98 derive fast path
that assumes a derived PartialOrd agrees with a hand-written
Ord does not apply here; this is the case the rule was
written for.
Structs§
- AcpVersion
Parse Error - The error returned by
AcpVersion::from_strwhen the input is not a well-formedMajor.Minor.Patchtriple.
Enums§
- AcpVersion
- A pinned ACP release, or a future release published after this build was compiled.