From: Ian Jackson Date: Mon, 8 Mar 2021 20:15:44 +0000 (+0000) Subject: extension traits: Use extend::ext X-Git-Tag: otter-0.4.0~212 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=121208edcefd63f4e51d2e85dc16ff0e609fc8ee;p=otter.git extension traits: Use extend::ext Signed-off-by: Ian Jackson --- diff --git a/src/gamestate.rs b/src/gamestate.rs index 86553a92..89450282 100644 --- a/src/gamestate.rs +++ b/src/gamestate.rs @@ -312,11 +312,6 @@ impl GPiece { } } -pub trait PieceXDataExt { - fn get(&self) -> Result, IE>; - fn get_mut(&mut self) -> Result<&mut T, IE>; -} - fn xdata_unexpected(got: &dyn PieceXData) -> InternalError { internal_logic_error(format!( @@ -327,7 +322,8 @@ fn xdata_unexpected(got: &dyn PieceXData) )) } -impl PieceXDataExt for PieceXDataState { +#[ext(pub)] +impl PieceXDataState { #[throws(IE)] fn get(&self) -> Option<&T> where T: Default { let xdata = if let Some(xdata) = &self { xdata } else { return None }; diff --git a/src/utils.rs b/src/utils.rs index 165b9a27..3adc2d83 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -24,12 +24,12 @@ macro_rules! ensure_eq { } } -pub trait OrdExt: Ord + Sized + Clone { +#[ext(pub, name=OrdExt)] +impl T { fn update_max(&mut self, new: &Self) { if *new > *self { *self = new.clone() } } } -impl OrdExt for T where T: Ord + Sized + Clone { } pub trait SplitAtDelim { fn split_at_delim(&self, delim: Delim) -> (&Self, &Self);