mlb_api/requests/stats/wrappers/
accumulated_vs_player_matchup.rs1use derive_more::{Deref, DerefMut};
2use serde::Deserialize;
3use crate::game_types::GameType;
4use crate::person::NamedPerson;
5use crate::stats::{RawStat, SingletonSplitStat};
6use crate::stats::wrappers::{AccumulatedMatchup, BatterPiece, GameTypePiece, OpposingTeamPiece, PitcherPiece, TeamPiece};
7use crate::team::NamedTeam;
8
9#[derive(Debug, Deserialize, PartialEq, Eq, Clone, Deref, DerefMut)]
10#[serde(rename_all = "camelCase")]
11#[serde(bound = "T: RawStat")]
12pub struct AccumulatedVsPlayerMatchup<T: RawStat> {
13 pub pitcher: NamedPerson,
14 pub batter: NamedPerson,
15
16 #[deref]
17 #[deref_mut]
18 #[serde(flatten)]
19 inner: AccumulatedMatchup<T>,
20}
21
22impl<T: RawStat> OpposingTeamPiece for AccumulatedVsPlayerMatchup<T> {
23 fn opposing_team(&self) -> &NamedTeam {
24 &self.opposing_team
25 }
26}
27
28impl<T: RawStat> GameTypePiece for AccumulatedVsPlayerMatchup<T> {
29 fn game_type(&self) -> &GameType {
30 &self.game_type
31 }
32}
33
34impl<T: RawStat> TeamPiece for AccumulatedVsPlayerMatchup<T> {
35 fn team(&self) -> &NamedTeam {
36 &self.team
37 }
38}
39
40impl<T: RawStat> PitcherPiece for AccumulatedVsPlayerMatchup<T> {
41 fn pitcher(&self) -> &NamedPerson {
42 &self.pitcher
43 }
44}
45
46impl<T: RawStat> BatterPiece for AccumulatedVsPlayerMatchup<T> {
47 fn batter(&self) -> &NamedPerson {
48 &self.batter
49 }
50}
51
52impl<T: RawStat> Default for AccumulatedVsPlayerMatchup<T> {
53 fn default() -> Self {
54 Self {
55 pitcher: NamedPerson::unknown_person(),
56 batter: NamedPerson::unknown_person(),
57
58 inner: AccumulatedMatchup::default(),
59 }
60 }
61}
62
63impl<T: RawStat> SingletonSplitStat for AccumulatedVsPlayerMatchup<T> {}