pub struct PlayStream { /* private fields */ }Expand description
Meant for active & live games, gives a streamable version of the plays in a game.
The PlayStream is meant to be for consistently polling the MLB API for live play-by-play updates.
The list of events can be seen on PlayStreamEvent
Note that the Linescore and Boxscore are not timed to the current state of the game as of the event, to achieve that it is recommended the timecode argument to live feed and iterate through the timecodes on its endpoint; however is much slower, or using diffPatch.
§Examples
PlayStream::new(/* game id */).run(|event: PlayStreamEvent, meta: &LiveFeedMetadata, data: &LiveFeedData, linescore: &Linescore, boxscore: &Boxscore| {
match event {
PlayStreamEvent::Start => println!("Start"),
PlayStreamEvent::StartPlay(play) => println!("{} vs. {}", play.matchup.batter.full_name, play.matchup.pitcher.full_name),
PlayStreamEvent::PlayEvent(play_event, _play) => {
match play_event {
PlayEvent::Action { details, .. } => println!("{}", details.description),
PlayEvent::Pitch { details, common, .. } => println!("{} -> {}", details.call, common.count),
PlayEvent::Stepoff { .. } => println!("Stepoff"),
PlayEvent::NoPitch { .. } => println!("No Pitch"),
PlayEvent::Pickoff { .. } => println!("Pickoff"),
}
},
PlayStreamEvent::PlayEventReviewStart(review, _play_event, _play) => println!("PlayEventReviewStart; {}", review.review_type),
PlayStreamEvent::PlayEventReviewEnd(review, _play_event, _play) => println!("PlayEventReviewEnd; {}", review.review_type),
PlayStreamEvent::PlayReviewStart(review, _play) => println!("PlayReviewStart; {}", review.review_type),
PlayStreamEvent::PlayReviewEnd(review, _play) => println!("PlayReviewEnd; {}", review.review_type),
PlayStreamEvent::EndPlay(play) => println!("{}", play.result.completed_play_details.as_ref().expect("Completed play").description),
PlayStreamEvent::GameEnd(_, _) => println!("GameEnd"),
}
}).await?;Implementations§
Source§impl PlayStream
impl PlayStream
Sourcepub async fn run<F: AsyncFnMut(PlayStreamEvent<'_>, &LiveFeedMetadata, &LiveFeedData, &Linescore, &Boxscore) -> Result<ControlFlow<()>, Error>>(
self,
f: F,
) -> Result<(), Error>
pub async fn run<F: AsyncFnMut(PlayStreamEvent<'_>, &LiveFeedMetadata, &LiveFeedData, &Linescore, &Boxscore) -> Result<ControlFlow<()>, Error>>( self, f: F, ) -> Result<(), Error>
Sourcepub async fn run_with_custom_error<E: From<Error>, F: AsyncFnMut(PlayStreamEvent<'_>, &LiveFeedMetadata, &LiveFeedData, &Linescore, &Boxscore) -> Result<ControlFlow<()>, E>>(
self,
f: F,
) -> Result<(), E>
pub async fn run_with_custom_error<E: From<Error>, F: AsyncFnMut(PlayStreamEvent<'_>, &LiveFeedMetadata, &LiveFeedData, &Linescore, &Boxscore) -> Result<ControlFlow<()>, E>>( self, f: F, ) -> Result<(), E>
Sourcepub async fn with_presupplied_feed<E: From<Error>, F: AsyncFnMut(PlayStreamEvent<'_>, &LiveFeedMetadata, &LiveFeedData, &Linescore, &Boxscore) -> Result<ControlFlow<()>, E>>(
feed: LiveFeedResponse,
f: F,
) -> Result<(), E>
pub async fn with_presupplied_feed<E: From<Error>, F: AsyncFnMut(PlayStreamEvent<'_>, &LiveFeedMetadata, &LiveFeedData, &Linescore, &Boxscore) -> Result<ControlFlow<()>, E>>( feed: LiveFeedResponse, f: F, ) -> Result<(), E>
Variant of the run function that begins with a pre-supplied LiveFeedResponse, useful if preprocessing was done before the play stream.
§Errors
See request::Error
Trait Implementations§
Auto Trait Implementations§
impl Freeze for PlayStream
impl RefUnwindSafe for PlayStream
impl Send for PlayStream
impl Sync for PlayStream
impl Unpin for PlayStream
impl UnsafeUnpin for PlayStream
impl UnwindSafe for PlayStream
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> 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