pub trait SourceCode: Send + Sync {
// Required method
fn read_span<'a>(
&'a self,
span: &SourceSpan,
context_lines_before: usize,
context_lines_after: usize,
) -> Result<Box<dyn SpanContents<'a> + 'a>, MietteError>;
}
Expand description
Represents readable source code of some sort.
This trait is able to support simple SourceCode
types like String
s, as
well as more involved types like indexes into centralized SourceMap
-like
types, file handles, and even network streams.
If you can read it, you can source it, and it’s not necessary to read the
whole thing–meaning you should be able to support SourceCode
s which are
gigabytes or larger in size.
Required Methods§
Sourcefn read_span<'a>(
&'a self,
span: &SourceSpan,
context_lines_before: usize,
context_lines_after: usize,
) -> Result<Box<dyn SpanContents<'a> + 'a>, MietteError>
fn read_span<'a>( &'a self, span: &SourceSpan, context_lines_before: usize, context_lines_after: usize, ) -> Result<Box<dyn SpanContents<'a> + 'a>, MietteError>
Read the bytes for a specific span from this SourceCode
, keeping a
certain number of lines before and after the span as context.
Implementations on Foreign Types§
Source§impl SourceCode for str
impl SourceCode for str
fn read_span<'a>( &'a self, span: &SourceSpan, context_lines_before: usize, context_lines_after: usize, ) -> Result<Box<dyn SpanContents<'a> + 'a>, MietteError>
Source§impl SourceCode for String
impl SourceCode for String
fn read_span<'a>( &'a self, span: &SourceSpan, context_lines_before: usize, context_lines_after: usize, ) -> Result<Box<dyn SpanContents<'a> + 'a>, MietteError>
Source§impl SourceCode for Vec<u8>
impl SourceCode for Vec<u8>
fn read_span<'a>( &'a self, span: &SourceSpan, context_lines_before: usize, context_lines_after: usize, ) -> Result<Box<dyn SpanContents<'a> + 'a>, MietteError>
Source§impl SourceCode for [u8]
impl SourceCode for [u8]
fn read_span<'a>( &'a self, span: &SourceSpan, context_lines_before: usize, context_lines_after: usize, ) -> Result<Box<dyn SpanContents<'a> + 'a>, MietteError>
Source§impl<'s> SourceCode for &'s str
impl<'s> SourceCode for &'s str
Makes src: &'static str
or struct S<'a> { src: &'a str }
usable.