Skip to main content

Module version

Module version 

Source
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§

AcpVersionParseError
The error returned by AcpVersion::from_str when the input is not a well-formed Major.Minor.Patch triple.

Enums§

AcpVersion
A pinned ACP release, or a future release published after this build was compiled.