From 63bad1fd2c82eadc88107003dd819f3cfa7530a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kat=20March=C3=A1n?= <kzm@zkat.tech> Date: Mon, 26 Apr 2021 17:21:47 -0700 Subject: [PATCH] fix(scorers): Scorer builders now properly return themselves + some API changes BREAKING CHANGE: All composite scorers now use push, instead of a weird push/when mixture. Additionally, they were previously (erroneously) returning &mut Self from push/when. This is now just Self, which means they will actually work now. --- src/actions.rs | 2 +- src/lib.rs | 2 +- src/scorers.rs | 13 +++---------- 3 files changed, 5 insertions(+), 12 deletions(-) diff --git a/src/actions.rs b/src/actions.rs index 2e69efe..b569886 100644 --- a/src/actions.rs +++ b/src/actions.rs @@ -112,7 +112,7 @@ impl StepsBuilder { /** Adds an action step. Order matters. */ - pub fn step(&mut self, action_builder: impl ActionBuilder + 'static) -> &mut Self { + pub fn step(mut self, action_builder: impl ActionBuilder + 'static) -> Self { self.steps.push(Arc::new(action_builder)); self } diff --git a/src/lib.rs b/src/lib.rs index d8067d7..5174ba6 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -165,7 +165,7 @@ pub mod prelude { pub use super::BigBrainPlugin; pub use actions::{ActionBuilder, ActionState, Steps}; pub use pickers::{FirstToScore, Picker}; - pub use scorers::{AllOrNothing, FixedScore, Score, ScorerBuilder, SumOfScorers}; + pub use scorers::{AllOrNothing, FixedScore, Score, ScorerBuilder, SumOfScorers, WinningScorer}; pub use thinker::{Actor, Thinker, ThinkerBuilder}; } diff --git a/src/scorers.rs b/src/scorers.rs index 17ab62e..b49b02b 100644 --- a/src/scorers.rs +++ b/src/scorers.rs @@ -163,7 +163,7 @@ impl AllOrNothingBuilder { /** Add another Scorer to this [`ScorerBuilder`]. */ - pub fn push(&mut self, scorer: impl ScorerBuilder + 'static) -> &mut Self { + pub fn push(mut self, scorer: impl ScorerBuilder + 'static) -> Self { self.scorers.push(Arc::new(scorer)); self } @@ -245,7 +245,7 @@ pub struct SumOfScorersBuilder { } impl SumOfScorersBuilder { - pub fn when(&mut self, scorer: impl ScorerBuilder + 'static) -> &mut Self { + pub fn push(mut self, scorer: impl ScorerBuilder + 'static) -> Self { self.scorers.push(Arc::new(scorer)); self } @@ -331,18 +331,11 @@ pub struct WinningScorerBuilder { scorers: Vec<Arc<dyn ScorerBuilder>>, } -impl WinningScorerBuilder { - pub fn when(&mut self, scorer: impl ScorerBuilder + 'static) -> &mut Self { - self.scorers.push(Arc::new(scorer)); - self - } -} - impl WinningScorerBuilder { /** Add another Scorer to this [`ScorerBuilder`]. */ - pub fn push(&mut self, scorer: impl ScorerBuilder + 'static) -> &mut Self { + pub fn push(mut self, scorer: impl ScorerBuilder + 'static) -> Self { self.scorers.push(Arc::new(scorer)); self } -- GitLab