pub fn parse_type(input: &str) -> IResult<&str, TypeKind>Expand description
Parse a type specification (byte, short, long, quad, string, etc.)
Supports various type formats found in magic files:
byte/ubyte- single byte (signed / unsigned)short/ushort- 16-bit integer (native endian, signed / unsigned)leshort/uleshort- 16-bit little-endian integerbeshort/ubeshort- 16-bit big-endian integerlong/ulong- 32-bit integer (native endian, signed / unsigned)lelong/ulelong- 32-bit little-endian integerbelong/ubelong- 32-bit big-endian integerquad/uquad- 64-bit integer (native endian, signed / unsigned)lequad/ulequad- 64-bit little-endian integerbequad/ubequad- 64-bit big-endian integerstring- null-terminated string
§Examples
use libmagic_rs::parser::grammar::parse_type;
use libmagic_rs::parser::ast::{TypeKind, Endianness};
assert_eq!(parse_type("byte"), Ok(("", TypeKind::Byte { signed: true })));
assert_eq!(parse_type("leshort"), Ok(("", TypeKind::Short { endian: Endianness::Little, signed: true })));
assert_eq!(parse_type("bequad"), Ok(("", TypeKind::Quad { endian: Endianness::Big, signed: true })));
assert_eq!(parse_type("string"), Ok(("", TypeKind::String { max_length: None })));§Errors
Returns a nom parsing error if the input doesn’t match any known type