From 2083eae2c5b480ccad672fb2fbb1b2bb5774a606 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Tue, 14 Dec 2021 03:49:13 -0500 Subject: replace all uses of unwrap(), expect(), and indexing with unreachable!() and also document why they are unreachable --- src/cell.rs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'src/cell.rs') diff --git a/src/cell.rs b/src/cell.rs index 1b44461..5f09ffb 100644 --- a/src/cell.rs +++ b/src/cell.rs @@ -19,7 +19,9 @@ impl PartialEq for Cell { return false; } let len = self.len(); - self.contents[..len] == other.contents[..len] + // self.len() always returns a valid value + self.contents.get(..len).unwrap_or_else(|| unreachable!()) + == other.contents.get(..len).unwrap_or_else(|| unreachable!()) } } @@ -40,15 +42,19 @@ impl Cell { } pub(crate) fn append(&mut self, c: char) { - if self.len() >= CODEPOINTS_IN_CELL { + let len = self.len(); + if len >= CODEPOINTS_IN_CELL { return; } - if self.len() == 0 { - self.contents[self.len()] = ' '; + if len == 0 { + // 0 is always less than 6 + *self.contents.get_mut(0).unwrap_or_else(|| unreachable!()) = ' '; self.len += 1; } - self.contents[self.len()] = c; + let len = self.len(); + // we already checked that len < CODEPOINTS_IN_CELL + *self.contents.get_mut(len).unwrap_or_else(|| unreachable!()) = c; self.len += 1; } -- cgit v1.2.3-54-g00ecf