pub trait UserPosn:
Sized + std::fmt::Debug + Copy + std::default::Default + PartialEq + Eq + std::hash::Hash
{
#[must_use]
fn advance_cols(self, _num_bytes: usize, _num_chars: usize) -> Self {
self
}
#[must_use]
fn advance_line(self, _num_bytes: usize) -> Self {
self
}
#[must_use]
fn line(&self) -> usize {
0
}
#[must_use]
fn column(&self) -> usize {
0
}
fn error_fmt(&self, fmt: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> {
std::fmt::Debug::fmt(self, fmt)
}
}
impl UserPosn for () {}
impl UserPosn for usize {
fn advance_cols(self, byte_ofs: usize, _num_chars: usize) -> Self {
self + byte_ofs
}
fn advance_line(self, byte_ofs: usize) -> Self {
self + byte_ofs
}
}