pub enum AutoBindAttempt {
Bind {
key: [u8; 32],
msg: ClientMessage,
},
Suppressed,
Failed {
error: ClientError,
},
}Expand description
The outcome of one shared auto-bind attempt — see
attempt_keystore_auto_bind for the policy and the delivery-contract
comments on each variant.
Not Clone: AutoBindAttempt::Failed carries the structured
ClientError (so a frontend CAN distinguish a refused pre-send persist
from a store load failure) and the minted key material in
AutoBindAttempt::Bind must not be silently duplicated.
Variants§
Bind
A fresh bind key was minted and recorded into known_servers PRE-SEND.
The caller MUST send msg and hold key in its pending-key lifecycle
for the targeted DaemonMessage::Bound confirmation (record_unlock_key
re-records the already-persisted key, so the confirm is a no-op-safe
uniform path).
Suppressed
Bind-loop guard: a BindKeystore was already minted on this
connection. The caller must NOT re-mint; it surfaces its own
“reconnect to retry” UI.
Failed
The pre-send persist (or store load) was REFUSED, so no
BindKeystore was built — sending nothing is the only safe outcome
(an unrecorded bind key risks an unrecoverable orphaned binding).
The latch stays set; the caller surfaces the error (structured, not a
pre-flattened string — keep the cause type for future UI branching).
Fields
error: ClientErrorTrait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for AutoBindAttempt
impl !UnwindSafe for AutoBindAttempt
impl Freeze for AutoBindAttempt
impl Send for AutoBindAttempt
impl Sync for AutoBindAttempt
impl Unpin for AutoBindAttempt
impl UnsafeUnpin for AutoBindAttempt
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> 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> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreimpl<T> JsonSchemaMaybe for T
impl<T> MaybeDebug for Twhere
T: Debug,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
Source§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
unchecked_from.