Struct source_span::Position [−][src]
Expand description
Position in a source file (line and column).
This holds the line and column position of a character in a source file.
Some operations are available to move position in a file. In partular, the
next
method computes the next cursor position after
reading a given char
.
Display
The struct implements two different format traits:
fmt::Display
will format the position asline {line} column {column}
fmt::Debug
will format the position as{line}:{column}
.
Both of them will display lines and columns starting at 1
even though the
internal representation starts at 0
.
Fields
line: usize
Line number, starting at 0
.
column: usize
Column number, starting at 0
.
Implementations
Create a new position given a line and column.
Indexes starts at 0
.
Return the maximum position.
Example
use source_span::Position;
assert_eq!(
Position::end(),
Position::new(usize::max_value(), usize::max_value())
);
Move to the next column.
Move to the begining of the line.
Move to the position following the given char
using the given Metrics
.
Control characters
This crate is intended to help with incremental lexing/parsing. Therefore, any control character moving the cursor backward will be ignored: it will be treated as a 0-width character with no semantics.
New lines
The \n
character is interpreted with the Unix semantics, as the new
line (NL) character. It will reset the column position to 0
and
move to the next line.
Tabulations
The \t
will move the cursor to the next horizontal tab-top.
The length of a tab-stop (in columns) is given by the metrics
parameter.
Full-width characters
Note that, as for now, double-width characters of full-width characters are not
supported by the DefaultMetrics
.
They will move the cursor by only one column as any other
regular-width character. You are welcome to contribute to handle
them.
Creates the span ending at this position (excluded) from
first
included to last
included.
It is assumed that this position follows last
.
This is equivalent to Span::new(first, last, *self)
.
Creates the span ending at this position (included) from
first
included to end
excluded.
It is assumed that end
follows this position.
This is equivalent to Span::new(first, *self, end)
.
Trait Implementations
This method returns an ordering between self
and other
values if one exists. Read more
This method tests less than (for self
and other
) and is used by the <
operator. Read more
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
Auto Trait Implementations
impl RefUnwindSafe for Position
impl UnwindSafe for Position
Blanket Implementations
Mutably borrows from an owned value. Read more