chiark / gitweb /
extension traits: Use extend::ext
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 8 Mar 2021 20:15:44 +0000 (20:15 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 8 Mar 2021 20:21:02 +0000 (20:21 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/gamestate.rs
src/utils.rs

index 86553a92cc26aa0490bba2ad799fcbefe9991b22..89450282e77ba3fcf784de590ca65cdb8618279d 100644 (file)
@@ -312,11 +312,6 @@ impl GPiece {
   }
 }
 
-pub trait PieceXDataExt {
-  fn get<T:PieceXData+Default>(&self) -> Result<Option<&T>, IE>;
-  fn get_mut<T:PieceXData+Default>(&mut self) -> Result<&mut T, IE>;
-}
-
 fn xdata_unexpected<T:PieceXData+Default>(got: &dyn PieceXData)
                                           -> InternalError {
   internal_logic_error(format!(
@@ -327,7 +322,8 @@ fn xdata_unexpected<T:PieceXData+Default>(got: &dyn PieceXData)
   ))
 }
 
-impl PieceXDataExt for PieceXDataState {
+#[ext(pub)]
+impl PieceXDataState {
   #[throws(IE)]
   fn get<T:PieceXData>(&self) -> Option<&T> where T: Default {
     let xdata = if let Some(xdata) = &self { xdata } else { return None };
index 165b9a27b15d85ddbce95c97c250787c9aedd70f..3adc2d83d7cd93863fcfd97c6ee8485693e71bc9 100644 (file)
@@ -24,12 +24,12 @@ macro_rules! ensure_eq {
   }
 }
 
-pub trait OrdExt: Ord + Sized + Clone {
+#[ext(pub, name=OrdExt)]
+impl<T: Ord + Sized + Clone> T {
   fn update_max(&mut self, new: &Self) {
     if *new > *self { *self = new.clone() }
   }
 }
-impl<T> OrdExt for T where T: Ord + Sized + Clone { }
 
 pub trait SplitAtDelim<Delim> {
   fn split_at_delim(&self, delim: Delim) -> (&Self, &Self);