Skip to content

Commit 1f3bd9a

Browse files
author
David Judd
committed
Add comment
1 parent 215a4d2 commit 1f3bd9a

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

src/decompose.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,16 @@ impl<I: Iterator<Item=char>> Iterator for Decompositions<I> {
128128
}
129129
}
130130

131+
// We can assume here that, if `self.ready.end` is greater than zero,
132+
// it's also greater than `self.ready.start`. That's because we only
133+
// increment `self.ready.start` inside `increment_next_ready`, and
134+
// whenever it reaches equality with `self.ready.end`, we reset both
135+
// to zero, maintaining the invariant that:
136+
// self.ready.start < self.ready.end || self.ready.end == self.ready.start == 0
137+
//
138+
// This less-than-obviously-safe implementation is chosen for performance,
139+
// minimizing the number & complexity of branches in `next` in the common
140+
// case of buffering then unbuffering a single character with each call.
131141
let (_, ch) = self.buffer[self.ready.start];
132142
self.increment_next_ready();
133143
Some(ch)

0 commit comments

Comments
 (0)