pub enum BindError {
ClosureProvedAgainstAnotherPlan {
planned: PlanId,
proved: PlanId,
},
ExplanationAnsweredOverAnotherPlan {
planned: PlanId,
answered: PlanId,
},
ExplanationAnsweredOverAnotherClosure {
proved: ClosureId,
answered: ClosureId,
},
}Expand description
How binding one expansion refuses.
Three values produced separately can disagree about their parentage in exactly three places, and each of the three is a different repair. Every arm names both identities it holds and elects neither.
Variants§
ClosureProvedAgainstAnotherPlan
The closure proves a rendering against a plan other than the one handed in beside it.
Fields
ExplanationAnsweredOverAnotherPlan
The explanation was answered over a plan other than the one handed in beside it.
Reachable under one kind, which is why the type parameter cannot catch it: two plans of one kind admit the same questions, so an explanation written over the other one covers its roster exactly.
Fields
ExplanationAnsweredOverAnotherClosure
The explanation was answered over a proof other than the one handed in beside it.
Reachable on its own, because one plan may be proved by two renderings and an explanation over the other proof states a digest of bytes this expansion never emitted.
Implementations§
Source§impl BindError
impl BindError
Sourcepub fn canonical_bytes(&self) -> Vec<u8> ⓘ
pub fn canonical_bytes(&self) -> Vec<u8> ⓘ
This disagreement’s complete canonical material: which pair disagreed, then the identity that was BOUND and the identity the value handed in turned out to name, each at full width.
The pair’s position leads, so two pairs holding identities that happened to coincide still derive two related identities. The bound identity rides ahead of the carried one, so a reader of the two knows which is which without the diagnostic saying so twice.
Trait Implementations§
impl Copy for BindError
impl Eq for BindError
Source§impl Error for BindError
impl Error for BindError
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Source§impl Refused for BindError
impl Refused for BindError
Source§fn body(&self) -> LineBody
fn body(&self) -> LineBody
One disagreement, always.
The binding compares each pair in turn and refuses at the first that disagrees, so there is no body behind the cause and nothing for a line to count.
A single cause enumerates nothing: the primary cause is the summary’s own subject, never a member of its related set.
Source§fn repairs(&self) -> Bounded<Repair, REPAIR_LIMIT>
fn repairs(&self) -> Bounded<Repair, REPAIR_LIMIT>
The one repair, citing this home’s own declared fact.
Unlike a refusal about what a caller declared, the law here is this compiler’s, so the fact is this home’s to cite.