kparse 3.0.5

Tracking and better error handling for nom parsers
Documentation
#![allow(dead_code)]

use kparse::parser_error::Hints;
use kparse::provider::{StdTracker, TrackData, TrackedData};
use kparse::{Code, ParseSpan, ParserError, ParserResult, Track};
use nom_locate::LocatedSpan;
use std::fmt::{Debug, Display, Formatter};
use std::mem::size_of;

enum ZCode {
    ZOne,
    ZTwo,
}

impl Copy for ZCode {}

impl Clone for ZCode {
    fn clone(&self) -> Self {
        unimplemented!()
    }
}

impl Display for ZCode {
    fn fmt(&self, _: &mut Formatter<'_>) -> std::fmt::Result {
        unimplemented!()
    }
}

impl Debug for ZCode {
    fn fmt(&self, _: &mut Formatter<'_>) -> std::fmt::Result {
        unimplemented!()
    }
}

impl Eq for ZCode {}

impl PartialEq<Self> for ZCode {
    fn eq(&self, _: &Self) -> bool {
        unimplemented!()
    }
}

impl Code for ZCode {
    const NOM_ERROR: Self = Self::ZOne;
}

#[derive(Debug, Clone, Copy)]
struct Nummer<'s> {
    nummer: u32,
    span: ParseSpan<'s, ZCode, &'s str>,
}

#[test]
fn test_size2() {
    dbg!(size_of::<usize>());
    dbg!(size_of::<u32>());
    dbg!(size_of::<&str>());

    dbg!(size_of::<ZCode>());
    dbg!(size_of::<ParseSpan<'_, ZCode, &str>>());

    dbg!(size_of::<nom::error::Error<&str>>());
    dbg!(size_of::<ParserError<ZCode, &str>>());
    dbg!(size_of::<Vec<Hints<ZCode, &str>>>());

    dbg!(size_of::<Track>());
    dbg!(size_of::<ParserResult<ZCode, &str, &str>>());
    dbg!(size_of::<ParserResult<ZCode, &str, ()>>());
    dbg!(size_of::<ParserResult<ZCode, &str, Nummer<'_>>>());
    dbg!(size_of::<TrackedData<ZCode, &str>>());
    dbg!(size_of::<LocatedSpan<&str>>());

    dbg!(size_of::<StdTracker<ZCode, &str>>());
    dbg!(size_of::<TrackData<ZCode, &str>>());
}