| # line-index | |
| This crate is developed as part of `rust-analyzer`. | |
| line-index is a library to convert between text offsets and corresponding line/column coordinates. | |
| ## Installation | |
| To add this crate to a project simply run `cargo add line-index`. | |
| ## Usage | |
| The main structure is `LineIndex`. | |
| It is constructed with an UTF-8 string, but also supports UTF-16 and UTF-32 offsets. | |
| ### Example | |
| ```rust | |
| use line_index::LineIndex; | |
| let line_index = LineIndex::new("This is a\nmulti-line\ntext."); | |
| line_index.line_col(3.into()); // LineCol { line: 0, col: 3 } | |
| line_index.line_col(13.into()); // LineCol { line: 1, col: 3 } | |
| line_index.offset(LineCol { line: 2, col: 3 }); // Some (24) | |
| ``` | |
| ## SemVer | |
| This crate uses [semver](https://semver.org/) versioning. |