pub struct DurablePromise<T> { /* private fields */ }Expand description
A typed handle to a value that an out-of-band party will resolve later.
Created by DurableContext::promise and consumed by
DurableContext::await_promise. The type parameter T
ties the awaited result type to the creation site; T is a phantom (fn() -> T, so the handle
is unconditionally Send + Sync and owns no T).
On a fresh creation the handle carries the resolver token; hand it to the resolving channel via
resolver_token. On resume the original token was already
delivered out of band before the crash and is unrecoverable, so a resumed handle carries no token
(is_resumed is true) — it can still be awaited.
Implementations§
Source§impl<T> DurablePromise<T>
impl<T> DurablePromise<T>
Sourcepub fn resolver_token(&self) -> Option<&[u8; 32]>
pub fn resolver_token(&self) -> Option<&[u8; 32]>
Borrow the resolver token to hand to the out-of-band resolving channel.
Returns None for a resumed promise (the token was delivered before the crash and cannot be
recovered). The token is secret: deliver it only over the operator/A2A channel, never to the
LLM (INV-9).
Sourcepub fn is_resumed(&self) -> bool
pub fn is_resumed(&self) -> bool
Whether this handle was reconstructed on resume (and therefore holds no token).
Trait Implementations§
Auto Trait Implementations§
impl<T> Freeze for DurablePromise<T>
impl<T> RefUnwindSafe for DurablePromise<T>
impl<T> Send for DurablePromise<T>
impl<T> Sync for DurablePromise<T>
impl<T> Unpin for DurablePromise<T>
impl<T> UnsafeUnpin for DurablePromise<T>
impl<T> UnwindSafe for DurablePromise<T>
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
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 more