Create Stream using custom Span

This commit is contained in:
Joscha 2022-11-18 12:19:45 +01:00
parent 8bf446b9c3
commit d64a971ed4

View file

@ -1,6 +1,8 @@
use std::fmt;
use std::ops::Range;
use chumsky::Stream;
#[derive(Clone, Copy)]
pub struct Span {
start: usize,
@ -64,3 +66,13 @@ impl chumsky::Span for Span {
self.end
}
}
pub fn stream_from_str<'a>(
s: &'a str,
) -> Stream<'a, char, Span, Box<dyn Iterator<Item = (char, Span)> + 'a>> {
let len = s.chars().count();
Stream::from_iter(
Span::new(len, len),
Box::new(s.chars().enumerate().map(|(i, c)| (c, Span::new(i, i + 1)))),
)
}