diff --git a/src/span.rs b/src/span.rs index 8df7bf0..296f992 100644 --- a/src/span.rs +++ b/src/span.rs @@ -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 + '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)))), + ) +}