pub struct SourceSpan {
pub file: PathBuf,
start: usize,
end: usize,
}Expand description
A byte-range location in a source file (manifest §6 stage 1).
§Examples
use std::path::PathBuf;
use mos_core::SourceSpan;
let span = SourceSpan::new(PathBuf::from("main.mos"), 2, 8);
assert_eq!(span.start(), 2);start and end are private so the start <= end invariant cannot be
violated after construction; read them through SourceSpan::start,
SourceSpan::end, or SourceSpan::range.
Fields§
§file: PathBufThe source file this range points into.
start: usizeByte offset of the first covered byte (inclusive).
end: usizeByte offset one past the last covered byte (exclusive); always
>= start.
Implementations§
Source§impl SourceSpan
impl SourceSpan
Sourcepub const fn end(&self) -> usize
pub const fn end(&self) -> usize
Byte offset one past the last covered byte (exclusive); always
>= start.
Sourcepub fn range(&self) -> Range<usize>
pub fn range(&self) -> Range<usize>
The covered byte range, ready to slice the source text it points into.
§Examples
use std::path::PathBuf;
use mos_core::SourceSpan;
let src = "let x = 1;";
let span = SourceSpan::new(PathBuf::from("main.mos"), 4, 5);
assert_eq!(&src[span.range()], "x");Sourcepub fn set_start(&mut self, start: usize)
pub fn set_start(&mut self, start: usize)
Move the start of the span to start, preserving start <= end.
§Panics
Panics if start would exceed the current end. Enforced in all
builds so an inverted span can never escape into release.
Sourcepub fn set_end(&mut self, end: usize)
pub fn set_end(&mut self, end: usize)
Move the end of the span to end, preserving start <= end.
§Panics
Panics if end would fall below the current start. Enforced in all
builds so an inverted span can never escape into release.
Sourcepub fn placeholder(file: PathBuf) -> Self
pub fn placeholder(file: PathBuf) -> Self
A zero-length placeholder span anchored at the start of file.
§Examples
use std::path::PathBuf;
use mos_core::SourceSpan;
let span = SourceSpan::placeholder(PathBuf::from("main.mos"));
assert_eq!((span.start(), span.end()), (0, 0));Trait Implementations§
Source§impl Clone for SourceSpan
impl Clone for SourceSpan
Source§fn clone(&self) -> SourceSpan
fn clone(&self) -> SourceSpan
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more