pub struct Position;Expand description
Reads this delivery’s own log coordinates, in the form
Seeker::seek takes: seeking to them redelivers exactly this
record.
§Examples
use ruststream_rdkafka::prelude::*;
/// Rewinds to the record it is holding when a downstream dependency is unavailable, so
/// the partition resumes here rather than from the group's committed position.
#[subscriber("orders")]
async fn place(
order: &Order,
Ctx(here): Ctx<Position>,
Ctx(seeker): Ctx<SeekHandle>,
) -> HandlerOutcome {
if order.id == 0 && seeker.seek(here).await.is_err() {
return HandlerOutcome::retry();
}
HandlerOutcome::ack()
}Trait Implementations§
Source§impl ContextField for Position
impl ContextField for Position
Source§type Context = KafkaContext
type Context = KafkaContext
The per-delivery context type this key reads from.
Source§type Value = KafkaPosition
type Value = KafkaPosition
The owned value the key yields.
Source§fn read(self, src: &KafkaContext) -> KafkaPosition
fn read(self, src: &KafkaContext) -> KafkaPosition
Reads this key’s field out of
src. Named apart from Field::get so a key
implementing both traits stays unambiguous to call.impl Copy for Position
impl Eq for Position
Source§impl Field<KafkaContext> for Position
impl Field<KafkaContext> for Position
Source§type Value<'a> = KafkaPosition
type Value<'a> = KafkaPosition
The value read through this key, borrowed from the source for
'a.Source§fn get(self, src: &KafkaContext) -> KafkaPosition
fn get(self, src: &KafkaContext) -> KafkaPosition
Reads this key’s field out of
src.impl StructuralPartialEq for Position
Auto Trait Implementations§
impl Freeze for Position
impl RefUnwindSafe for Position
impl Send for Position
impl Sync for Position
impl Unpin for Position
impl UnsafeUnpin for Position
impl UnwindSafe for Position
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<K> CtxKey for Kwhere
K: ContextField,
impl<K> CtxKey for Kwhere
K: ContextField,
Source§type Value = <K as ContextField>::Value
type Value = <K as ContextField>::Value
The owned value the extractor binds.
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
Compare self to
key and return true if they are equal.impl<T> ErasedDestructor for Twhere
T: 'static,
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> ⓘ
Converts
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> ⓘ
Converts
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