#[derive(Debug, PartialEq, Clone)]
pub enum OrbitPolicy {
Vertex,
VertexLinear,
Edge,
Face,
FaceLinear,
Volume,
VolumeLinear,
Custom(&'static [u8]),
}
#[derive(Clone)]
pub(crate) struct TryFromFn<F>(F);
impl<T, E, F> Iterator for TryFromFn<F>
where
F: FnMut() -> Result<Option<T>, E>,
{
type Item = Result<T, E>;
fn next(&mut self) -> Option<Self::Item> {
match (self.0)() {
Ok(Some(value)) => Some(Ok(value)), Ok(None) => None, Err(e) => Some(Err(e)), }
}
}
pub(crate) fn try_from_fn<T, E, F>(f: F) -> TryFromFn<F>
where
F: FnMut() -> Result<Option<T>, E>,
{
TryFromFn(f)
}