Struct source_span::Position[][src]

pub struct Position {
    pub line: usize,
    pub column: usize,
}
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 as line {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 next line, and reset the column position.

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).

Creates the span starting from this position to last included and end excluded.

It is assumed that end follows last. This is equivalent to Span::new(*self, last, end).

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Returns the “default value” for a type. Read more

Formats the value using the given formatter. Read more

Performs the conversion.

Feeds this value into the given Hasher. Read more

Feeds a slice of this type into the given Hasher. Read more

This method returns an Ordering between self and other. Read more

Compares and returns the maximum of two values. Read more

Compares and returns the minimum of two values. Read more

Restrict a value to a certain interval. Read more

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

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

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

Converts the given value to a String. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.