summaryrefslogtreecommitdiff
path: root/library/src
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2023-03-18 16:28:39 +0100
committerLaurenz <laurmaedje@gmail.com>2023-03-18 16:28:39 +0100
commitf2b0c5e08d7433d5a1780fee827da0f29c5bc136 (patch)
tree53535d1a2b6b602b5d810d04ff0ae043e6d4c62c /library/src
parent8b3dff37c8b84c5ebf85d7d9c35144ed473f3d1b (diff)
Fix page counter
Diffstat (limited to 'library/src')
-rw-r--r--library/src/meta/counter.rs12
1 files changed, 6 insertions, 6 deletions
diff --git a/library/src/meta/counter.rs b/library/src/meta/counter.rs
index b61e8913..27fd548f 100644
--- a/library/src/meta/counter.rs
+++ b/library/src/meta/counter.rs
@@ -277,8 +277,8 @@ impl Counter {
if is_page {
let page = introspector.page(id);
let delta = page.get() - prev_page.get();
- if let Some(delta) = NonZeroUsize::new(delta) {
- state.step(delta);
+ if delta > 0 {
+ state.step(NonZeroUsize::ONE, delta);
}
prev_page = page;
}
@@ -354,7 +354,7 @@ impl CounterState {
pub fn update(&mut self, vt: &mut Vt, update: CounterUpdate) -> SourceResult<()> {
match update {
CounterUpdate::Set(state) => *self = state,
- CounterUpdate::Step(level) => self.step(level),
+ CounterUpdate::Step(level) => self.step(level, 1),
CounterUpdate::Func(func) => {
*self = func
.call_vt(vt, self.0.iter().copied().map(Into::into))?
@@ -365,12 +365,12 @@ impl CounterState {
Ok(())
}
- /// Advance the top level number by the specified amount.
- pub fn step(&mut self, level: NonZeroUsize) {
+ /// Advance the number of the given level by the specified amount.
+ pub fn step(&mut self, level: NonZeroUsize, by: usize) {
let level = level.get();
if self.0.len() >= level {
- self.0[level - 1] = self.0[level - 1].saturating_add(1);
+ self.0[level - 1] = self.0[level - 1].saturating_add(by);
self.0.truncate(level);
}