diff options
| author | mat <github@matdoes.dev> | 2022-04-18 18:14:25 +0000 |
|---|---|---|
| committer | mat <github@matdoes.dev> | 2022-04-18 18:14:25 +0000 |
| commit | 8d71fbf813391783531a9f7c70e75e105fabaf03 (patch) | |
| tree | dd1d70370d3068c4aecd8aaf25174278dfbc1b29 /azalea-brigadier/src/context/string_range.rs | |
| parent | b3864af9c4af83552e37fd71a46262967572f9e6 (diff) | |
| download | azalea-drasl-8d71fbf813391783531a9f7c70e75e105fabaf03.tar.xz | |
change a BTreeMap to a HashMap
Diffstat (limited to 'azalea-brigadier/src/context/string_range.rs')
| -rw-r--r-- | azalea-brigadier/src/context/string_range.rs | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/azalea-brigadier/src/context/string_range.rs b/azalea-brigadier/src/context/string_range.rs new file mode 100644 index 00000000..8ca88624 --- /dev/null +++ b/azalea-brigadier/src/context/string_range.rs @@ -0,0 +1,45 @@ +use std::cmp; + +#[derive(Debug, Clone, PartialEq, Eq, Hash, Default)] +pub struct StringRange { + start: usize, + end: usize, +} + +impl StringRange { + pub fn new(start: usize, end: usize) -> Self { + Self { start, end } + } + + pub fn at(pos: usize) -> Self { + Self::new(pos, pos) + } + + pub fn between(start: usize, end: usize) -> Self { + Self::new(start, end) + } + + pub fn encompassing(a: &Self, b: &Self) -> Self { + Self::new(cmp::min(a.start, b.start), cmp::max(a.end, b.end)) + } + + pub fn start(&self) -> usize { + self.start + } + + pub fn end(&self) -> usize { + self.end + } + + pub fn get<'a>(&self, reader: &'a str) -> &'a str { + &reader[self.start..self.end] + } + + pub fn is_empty(&self) -> bool { + self.start == self.end + } + + pub fn length(&self) -> usize { + self.end - self.start + } +} |
