chiark / gitweb /
geometry: Promote PosPromote to a trait
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 2 Apr 2021 21:15:57 +0000 (22:15 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 2 Apr 2021 21:15:57 +0000 (22:15 +0100)
And provide for f64

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
base/geometry.rs
base/prelude.rs

index df523f79f68efe37e48e5bc953f3f10f4b17e1fd..4040207da5567da552090c40d8ea0272522adbc6 100644 (file)
@@ -87,8 +87,11 @@ impl Mean for i32 { fn mean(&self, other: &Self) -> Self {
 
 //---------- Pos ----------
 
-impl PosC<Coord> {
-  pub fn promote(&self) -> PosC<f64> { self.map(|v| v as f64) }
+pub trait PosPromote {
+  fn promote(&self) -> PosC<f64>;
+}
+impl<T> PosPromote for PosC<T> where T: Into<f64> + Copy + Debug {
+  fn promote(&self) -> PosC<f64> { self.map(|v| v.into()) }
 }
 
 #[derive(Error,Debug,Copy,Clone,Serialize,Deserialize)]
index 092409b044d6d5aa71792134d51a508ac56e9ef2..8348fdfd137ecfcb7c8ba5e92e0af826507c8302 100644 (file)
@@ -28,7 +28,7 @@ pub use void::Void;
 
 pub use crate::html::*;
 
-pub use crate::geometry::{CoordinateOverflow, PosC};
+pub use crate::geometry::{CoordinateOverflow, PosC, PosPromote};
 pub use crate::{hformat, hformat_as_display, hwrite};
 pub use crate::misc::default;
 pub use crate::misc::display_as_debug;