iter: memchr::Memchr::new(b'\n', buf),
} }
+ #[throws(AE)]
+ pub fn need_next(&mut self) -> &'b str
+ {
+ self.next().ok_or_else(|| anyhow!("missing"))??
+ }
+
+ #[throws(AE)]
+ pub fn need_parse<T>(&mut self) -> T
+ where T: FromStr,
+ AE: From<T::Err>,
+ {
+ self.parse()?.ok_or_else(|| anyhow!("missing"))?
+ }
+
#[throws(AE)]
pub fn parse<T>(&mut self) -> Option<T>
where T: FromStr,
- T::Err: std::error::Error + Sync + Send + 'static,
+ AE: From<T::Err>,
{
let s = if let Some(r) = self.next() { r? } else { return None };
Some(s.parse()?)