Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
let puse = puse.value().as_element().ok_or(Loop::Continue)?;
let attr = puse.attr("data-info").ok_or(Loop::Break)?;
let info = serde_json::from_str(attr).unwrap();
- Ok::<_,Loop<Infallible>>(PieceInfo { id: (), info })
+ Loop::ok(PieceInfo { id: (), info })
})
.collect()
}
impl<E> From<E> for Loop<E> {
fn from(e: E) -> Loop<E> { Loop::Error(e) }
}
+impl Loop<Infallible> {
+ pub fn ok<T>(t: T) -> Result<T,Loop<Infallible>> { Ok(t) }
+}
pub trait IteratorExt<U,E,F>: Iterator
where F: FnMut(Self::Item) -> Result<U,Loop<E>>,