pub struct SourceFile {
pub name: FileName,
pub name_was_remapped: bool,
pub unmapped_path: Option<FileName>,
pub crate_of_origin: u32,
pub src: Lrc<String>,
pub src_hash: u128,
pub start_pos: BytePos,
pub end_pos: BytePos,
pub lines: Vec<BytePos>,
pub multibyte_chars: Vec<MultiByteChar>,
pub non_narrow_chars: Vec<NonNarrowChar>,
pub name_hash: u128,
}
Expand description
A single source in the SourceMap.
Fields§
§name: FileName
The name of the file that the source came from. Source that doesn’t
originate from files has names between angle brackets by convention,
e.g. <anon>
name_was_remapped: bool
True if the name
field above has been modified by
--remap-path-prefix
unmapped_path: Option<FileName>
The unmapped path of the file that the source came from.
Set to None
if the SourceFile
was imported from an external crate.
crate_of_origin: u32
Indicates which crate this SourceFile
was imported from.
src: Lrc<String>
The complete source code
src_hash: u128
The source code’s hash
start_pos: BytePos
The start position of this source in the SourceMap
end_pos: BytePos
The end position of this source in the SourceMap
lines: Vec<BytePos>
Locations of lines beginnings in the source code
multibyte_chars: Vec<MultiByteChar>
Locations of multi-byte characters in the source code
non_narrow_chars: Vec<NonNarrowChar>
Width of characters that are not narrow in the source code
name_hash: u128
A hash of the filename, used for speeding up the incr. comp. hashing.
Implementations§
source§impl SourceFile
impl SourceFile
pub fn new( name: FileName, name_was_remapped: bool, unmapped_path: FileName, src: String, start_pos: BytePos, ) -> SourceFile
sourcepub fn new_from(
name: FileName,
name_was_remapped: bool,
unmapped_path: FileName,
src: Lrc<String>,
start_pos: BytePos,
) -> SourceFile
pub fn new_from( name: FileName, name_was_remapped: bool, unmapped_path: FileName, src: Lrc<String>, start_pos: BytePos, ) -> SourceFile
src
should not have UTF8 BOM
sourcepub fn line_begin_pos(&self, pos: BytePos) -> BytePos
pub fn line_begin_pos(&self, pos: BytePos) -> BytePos
Return the BytePos of the beginning of the current line.
sourcepub fn get_line(&self, line_number: usize) -> Option<Cow<'_, str>>
pub fn get_line(&self, line_number: usize) -> Option<Cow<'_, str>>
Get a line from the list of pre-computed line-beginnings. The line number here is 0-based.
pub fn is_real_file(&self) -> bool
pub fn byte_length(&self) -> u32
pub fn count_lines(&self) -> usize
sourcepub fn lookup_line(&self, pos: BytePos) -> Option<usize>
pub fn lookup_line(&self, pos: BytePos) -> Option<usize>
Find the line containing the given position. The return value is the
index into the lines
array of this SourceFile, not the 1-based line
number. If the source_file
is empty or the position is located before
the first line, None
is returned.
pub fn line_bounds(&self, line_index: usize) -> (BytePos, BytePos)
pub fn contains(&self, byte_pos: BytePos) -> bool
Trait Implementations§
source§impl Clone for SourceFile
impl Clone for SourceFile
source§fn clone(&self) -> SourceFile
fn clone(&self) -> SourceFile
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for SourceFile
impl Debug for SourceFile
source§impl<'a> From<&'a SourceFile> for StringInput<'a>
impl<'a> From<&'a SourceFile> for StringInput<'a>
Creates an Input from SourceFile. This is an alias for
StringInput::new(&fm.src, fm.start_pos, fm.end_pos)
source§fn from(fm: &'a SourceFile) -> Self
fn from(fm: &'a SourceFile) -> Self
Auto Trait Implementations§
impl Freeze for SourceFile
impl RefUnwindSafe for SourceFile
impl Send for SourceFile
impl Sync for SourceFile
impl Unpin for SourceFile
impl UnwindSafe for SourceFile
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more