chiark / gitweb /
geometry: Properly publish pos_zip_try_map etc., and use a bit more
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 8 May 2022 10:01:31 +0000 (11:01 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 8 May 2022 10:01:31 +0000 (11:01 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
base/geometry.rs
base/prelude.rs
src/organise.rs
src/prelude.rs

index e32362dd19daa73458495da6b53e0438b717703f..2733632ed09d420a2e8a60aa5d1943da1dcd4196 100644 (file)
@@ -99,6 +99,7 @@ impl<T> PosPromote for PosC<T> where T: Into<f64> + Copy + Debug {
 pub struct PosCFromIteratorError;
 display_as_debug!{PosCFromIteratorError}
 
+#[macro_export]
 macro_rules! pos_zip_try_map { {
   $( $input:expr ),* => $closure:expr
 } => {
@@ -107,6 +108,7 @@ macro_rules! pos_zip_try_map { {
       .map($closure)
   )
 } }
+#[macro_export]
 macro_rules! pos_zip_map { {
   $( $input:expr ),* => $closure:expr
 } => {
@@ -123,7 +125,7 @@ impl<T> PosC<T> {
     PosC::both(<T as num_traits::Zero>::zero())
   }
 
-  fn coords(self) -> impl ExactSizeIterator<Item=T> + FusedIterator<Item=T> {
+  pub fn coords(self) -> impl ExactSizeIterator<Item=T> + FusedIterator {
     self.coords.into_iter()
   }
 
index d482250a9523e78880716f7ccf1fe40f11fd427a..5355dfda30fdf2ec1c17f163a4569d7c74755052 100644 (file)
@@ -29,6 +29,7 @@ pub use void::{self, Void};
 
 pub use crate::html::*;
 
+pub use crate::{pos_zip_map, pos_zip_try_map};
 pub use crate::geometry::{CoordinateOverflow, PosC, PosPromote};
 pub use crate::{dbgc, hformat, hformat_as_display, hwrite};
 pub use crate::misc::default;
index 1f7642cb0cda1786d4c94fa2ba8bc0090f903e08..746145a61f5b0f2fa3c2832b6fb9ed0eee5a3924 100644 (file)
@@ -87,11 +87,8 @@ impl Attempt {
       A::AbutCompr  => (- bbox.tl().map(|v| v/ 3 ))?,
       A::Hanging    => return atleast,
     };
-    PosC::from_iter_2(
-      izip!(atleast.coords.iter(), want.coords.iter()).map(
-        |(v, atleast)| Ord::max(*v,*atleast)
-      )
-    )
+    pos_zip_map!( atleast, want
+                  => |(v, atleast)| Ord::max(v,atleast) )
   }
 }     
 
index eeec8a9a79c503b8b2dc4678b2cbb86062133750..a8c1610af5323fc2b097707e2189deed7fbaaa06 100644 (file)
@@ -125,6 +125,7 @@ use nix::time::ClockId;
 pub const CLOCK_REALTIME : ClockId = ClockId::CLOCK_REALTIME ;
 pub const CLOCK_MONOTONIC: ClockId = ClockId::CLOCK_MONOTONIC;
 
+pub use otter_base::{pos_zip_map, pos_zip_try_map};
 pub use otter_base::geometry::{self,Coord,Pos,PosC,Rect,RectC};
 pub use otter_base::geometry::{CoordinateOverflow,Region};
 pub use otter_base::zcoord::{self, ZCoord};