pub enum LinkCeremony {
Linked {
persona_id: String,
},
AlreadyLinked {
persona_id: String,
},
InvalidOrExpired,
Throttled,
Failed,
}Expand description
The outcome of completing a link ceremony, in edge-renderable terms.
InvalidCode and Expired are deliberately fused into one variant: the
proto contract is that edges present them identically so a guesser cannot
learn whether a code was ever valid. The distinction stays in the control
plane’s logs.
Variants§
Linked
The identity is now bound to the persona (directly or by merge).
AlreadyLinked
The identity already resolved to that persona; the code was consumed.
InvalidOrExpired
No usable code (never minted, already consumed, or expired). Rendered identically to the user.
Throttled
The completing identity is locked out after repeated failures (or the deployment-wide backstop tripped). Rendered distinctly: “wait”.
Failed
An unexpected/unspecified outcome — the edge should surface a generic failure rather than claim success.
Implementations§
Source§impl LinkCeremony
impl LinkCeremony
Sourcepub const fn user_message(&self) -> &'static str
pub const fn user_message(&self) -> &'static str
The user-facing message for this outcome, shared by every edge.
InvalidCode and Expired are fused into one variant upstream (so no
edge can distinguish them — no oracle for a guesser); centralizing the
rendering here keeps that security-relevant wording identical across
surfaces. Channel-neutral phrasing; an edge that needs surface-specific
text can still match the variant itself.
Trait Implementations§
Source§impl Clone for LinkCeremony
impl Clone for LinkCeremony
Source§fn clone(&self) -> LinkCeremony
fn clone(&self) -> LinkCeremony
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for LinkCeremony
impl Debug for LinkCeremony
impl Eq for LinkCeremony
Source§impl PartialEq for LinkCeremony
impl PartialEq for LinkCeremony
Source§fn eq(&self, other: &LinkCeremony) -> bool
fn eq(&self, other: &LinkCeremony) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for LinkCeremony
Auto Trait Implementations§
impl Freeze for LinkCeremony
impl RefUnwindSafe for LinkCeremony
impl Send for LinkCeremony
impl Sync for LinkCeremony
impl Unpin for LinkCeremony
impl UnsafeUnpin for LinkCeremony
impl UnwindSafe for LinkCeremony
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request