sark_http/payload/response/exact/overflow.rs
1use std::num::NonZero;
2
3/// Encoded-length arithmetic exceeded the representable domain.
4#[derive(Clone, Copy, Debug, PartialEq, Eq)]
5pub struct Overflow {
6 pub current: usize,
7 pub added: NonZero<usize>,
8}
9
10impl Overflow {
11 pub fn try_add(current: usize, added: usize) -> Result<usize, Self> {
12 current.checked_add(added).ok_or_else(|| Self {
13 current,
14 added: NonZero::<usize>::MIN.saturating_add(added - 1),
15 })
16 }
17}