use alloc::borrow::Cow;
use super::sink::SpillRef;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct TruncationOutcome<'a> {
pub text: Cow<'a, str>,
pub original_len: usize,
pub omitted: Option<core::ops::Range<usize>>,
pub spill_ref: Option<SpillRef>,
}
impl<'a> TruncationOutcome<'a> {
#[must_use]
pub const fn is_truncated(&self) -> bool {
self.omitted.is_some()
}
#[must_use]
pub const fn omitted_bytes(&self) -> usize {
match &self.omitted {
Some(range) => range.end.saturating_sub(range.start),
None => 0,
}
}
#[must_use]
pub fn into_text(self) -> Cow<'a, str> {
self.text
}
}