pub struct PosCFromIteratorError;
display_as_debug!{PosCFromIteratorError}
+#[macro_export]
macro_rules! pos_zip_try_map { {
$( $input:expr ),* => $closure:expr
} => {
.map($closure)
)
} }
+#[macro_export]
macro_rules! pos_zip_map { {
$( $input:expr ),* => $closure:expr
} => {
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()
}
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;
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) )
}
}
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};