#[cfg(feature = "chumsky")]
use chumsky::Parser;
#[derive(Debug, Clone, Hash, PartialEq, Eq, strum::FromRepr, strum::EnumIs)]
#[repr(i8)]
#[expect(
clippy::module_name_repetitions,
reason = "the type is used outside this module"
)]
pub enum PathfindingType {
Other = -1,
LegacyLinkset = 0,
Avatar = 1,
Character = 2,
Walkable = 3,
StaticObstacle = 4,
MaterialVolume = 5,
ExclusionVolume = 6,
}
#[cfg(feature = "chumsky")]
#[must_use]
pub fn int_as_pathfinding_type_parser<'src>()
-> impl Parser<'src, &'src str, PathfindingType, chumsky::extra::Err<chumsky::error::Rich<'src, char>>>
{
crate::utils::i8_parser().try_map(|repr, span| {
crate::pathfinding::PathfindingType::from_repr(repr).ok_or_else(|| {
chumsky::error::Rich::custom(
span,
"Could not convert parsed pathfinding type i8 into PathfindingType enum",
)
})
})
}