xee_interpreter/
occurrence.rs1use crate::error;
2
3pub fn one<'a, T>(mut iter: impl Iterator<Item = error::Result<T>> + 'a) -> error::Result<T> {
4 if let Some(one) = iter.next() {
5 if iter.next().is_none() {
6 Ok(one?)
7 } else {
8 Err(error::Error::XPTY0004)
9 }
10 } else {
11 Err(error::Error::XPTY0004)
12 }
13}
14
15pub fn option<'a, T>(
16 mut iter: impl Iterator<Item = error::Result<T>> + 'a,
17) -> error::Result<Option<T>> {
18 if let Some(one) = iter.next() {
19 if iter.next().is_none() {
20 Ok(Some(one?))
21 } else {
22 Err(error::Error::XPTY0004)
23 }
24 } else {
25 Ok(None)
26 }
27}