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: FileNameThe 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: boolTrue 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: u32Indicates which crate this SourceFile was imported from.
src: Lrc<String>The complete source code
src_hash: u128The source code’s hash
start_pos: BytePosThe start position of this source in the SourceMap
end_pos: BytePosThe 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: u128A 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