pub enum ClosureIssue<R: Role> {
Show 14 variants
MemberMissing {
role: R,
},
MemberUnplanned {
role: R,
},
MemberDuplicated {
role: R,
observed: u32,
},
OriginOrphan {
role: R,
},
DigestMismatch {
role: R,
},
SemanticKeyMismatch {
role: R,
},
MaterializationMismatch {
role: R,
},
MemberPlannedTwice {
role: R,
observed: u32,
},
MembershipDisagreement {
role: R,
},
ReconstructionEmpty,
ReconstructionUndeclarable {
observed: u32,
},
JoinedTreeUnbounded {
destination: Destination,
},
ArtifactAddressDoubled {
role: R,
address: OwnerIdentity,
},
ArtifactAddressAbsent {
role: R,
},
}Expand description
One way a rendering and the plan it claims to materialize disagree.
Every issue about a seat names it; the issues about the whole reconstruction name none, because there is no seat to name and electing one would be a stand-in nobody established.
Variants§
MemberMissing
A seat the plan declared was not rendered at all.
Fields
role: RThe planned seat nothing materialized.
MemberUnplanned
A seat was rendered that the plan never declared — the output firewall’s own reversal.
Fields
role: RThe rendered seat nothing planned.
MemberDuplicated
One seat was rendered more than once.
OriginOrphan
A rendered unit walks back to an origin the plan did not declare, which orphans it from the declaration it claims to project.
Fields
role: RThe seat whose origin disagreed.
DigestMismatch
The digest a rendered unit carries is not the digest of the bytes it actually carries, taken under the contract the plan stated.
Fields
role: RThe seat whose digest disagreed.
SemanticKeyMismatch
A unit stood under the planned seat and answered to a different semantic key: the right seat, filled by the wrong thing.
Fields
role: RThe seat whose semantic key disagreed.
MaterializationMismatch
A unit was rendered under a profile, or written to an address, the plan did not name.
The delivery cannot disagree and is not checked: a delivery is the seat’s own constant answer, so both sides read one value.
Fields
role: RThe seat whose materialization disagreed.
MemberPlannedTwice
The plan itself declared one seat twice, independent of what was rendered.
Two members under one seat make the seat-to-unit match elect one of them, and a proof that elected its own subject proves nothing.
MembershipDisagreement
The rebuilt membership and the planned one are not the same set under this seat.
The final theorem, checked as sets: a walk comparing one member per seat would agree about two memberships that differ in their second.
Fields
role: RThe seat the two sets disagree under.
ReconstructionEmpty
The rebuild produced no member at all.
ReconstructionUndeclarable
The rebuild produced members that will not declare as a complete output set.
JoinedTreeUnbounded
One delivery’s joined token tree outgrows the declared token magnitude.
It names the delivery it overran at: a caller told only that “the tree” is too wide does not know which build to cut.
Fields
destination: DestinationThe delivery whose joined tree overran.
ArtifactAddressDoubled
Two rendered units are published to ONE address, so the artifact written second stands where the first stands.
The two stand under different seats and carry different material, so every check before this one passes them.
Fields
role: RThe seat whose artifact would stand at an address already taken.
address: OwnerIdentityThe address both units are written under.
ArtifactAddressAbsent
A unit was rendered into the publication delivery with no address to write it to.
A publication that elected an address for it would be minting the consumer’s own fact.
Fields
role: RThe seat whose artifact has nowhere to be written.
Implementations§
Source§impl<R: Role> ClosureIssue<R>
impl<R: Role> ClosureIssue<R>
Sourcepub fn canonical_bytes(&self) -> Vec<u8> ⓘ
pub fn canonical_bytes(&self) -> Vec<u8> ⓘ
This issue’s canonical bytes on their own, for the related identity a diagnostic derives over it.
Sourcepub fn encode_into(&self, into: &mut Vec<u8>)
pub fn encode_into(&self, into: &mut Vec<u8>)
Appends this issue’s canonical bytes: the row’s position in the declared roster, then the typed material that row carries, framed.
Exhaustive over the roster on purpose: an issue added to ClosureIssue stops compiling HERE until somebody says what of it a preimage commits to.
Source§impl<R: Role> ClosureIssue<R>
impl<R: Role> ClosureIssue<R>
Sourcepub const fn slot(&self) -> u8
pub const fn slot(&self) -> u8
This row’s position in the declared roster, written ahead of the issue’s own material.
Appended and never renumbered: the byte stands inside every identity derived over a refusal that carries it.
Sourcepub const fn role(&self) -> Option<R>
pub const fn role(&self) -> Option<R>
The seat this issue was established at, where it is about one.
Sourcepub const fn observed(&self) -> Observed
pub const fn observed(&self) -> Observed
How what this issue observed differs from the contract that was expected.
Sourcepub const fn class(&self) -> RefusalClass
pub const fn class(&self) -> RefusalClass
Which class of refusal a line opening with this issue is about.
Two rows are magnitudes rather than disagreements: what they report is a rendering that would have passed a declared bound, and the seats it filled are not in question.
Trait Implementations§
Source§impl<R: Clone + Role> Clone for ClosureIssue<R>
impl<R: Clone + Role> Clone for ClosureIssue<R>
Source§fn clone(&self) -> ClosureIssue<R>
fn clone(&self) -> ClosureIssue<R>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more