mlb-api 1.0.3

Endpoints for MLB's public Statcast API.
Documentation
use derive_more::{Deref, DerefMut};
use serde::Deserialize;
use crate::meta::GameType;
use crate::person::NamedPerson;
use crate::season::SeasonId;
use crate::stats::{RawStat, SingletonSplitStat};
use crate::stats::wrappers::SeasonPiece;

#[derive(Debug, Deserialize, PartialEq, Eq, Clone, Deref, DerefMut)]
#[serde(rename_all = "camelCase")]
#[serde(bound = "T: RawStat")]
pub struct WithPlayer<T: RawStat> {
	pub player: NamedPerson,
	pub game_type: GameType,
	pub season: SeasonId,

	#[deref]
	#[deref_mut]
	#[serde(rename = "stat")]
	pub stats: T,
}

impl<T: RawStat> SeasonPiece for WithPlayer<T> {
	fn season(&self) -> &SeasonId {
		&self.season
	}
}

impl<T: RawStat + Default> Default for WithPlayer<T> {
	fn default() -> Self {
		Self {
			player: NamedPerson::unknown_person(),
			game_type: GameType::default(),
			season: SeasonId::current_season(),
			stats: T::default(),
		}
	}
}

impl<T: RawStat + Default> SingletonSplitStat for WithPlayer<T> {}