#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub(crate) enum RouteReadPolicy {
ExplicitStaticProvider,
DynamicBaseAccess,
Unavailable,
}
impl RouteReadPolicy {
pub(crate) const fn is_available(self) -> bool {
!matches!(self, Self::Unavailable)
}
pub(crate) const fn trace_label(self) -> &'static str {
match self {
Self::ExplicitStaticProvider | Self::DynamicBaseAccess => "available",
Self::Unavailable => "unavailable",
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub(crate) enum RouteReplacePolicy {
ExplicitStaticProvider,
DynamicBaseAccess,
Unavailable,
}
impl RouteReplacePolicy {
pub(crate) const fn is_available(self) -> bool {
!matches!(self, Self::Unavailable)
}
pub(crate) const fn trace_label(self) -> &'static str {
match self {
Self::ExplicitStaticProvider | Self::DynamicBaseAccess => "available",
Self::Unavailable => "unavailable",
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub(crate) enum RouteFeasibilityPolicy {
ExplicitStaticProvider,
DeclaredAlwaysFeasible,
ExplicitDynamicProvider,
Unavailable,
}
impl RouteFeasibilityPolicy {
pub(crate) const fn is_available(self) -> bool {
!matches!(self, Self::Unavailable)
}
pub(crate) const fn is_dynamic_explicit(self) -> bool {
matches!(self, Self::ExplicitDynamicProvider)
}
pub(crate) const fn trace_label(self) -> &'static str {
match self {
Self::ExplicitStaticProvider | Self::ExplicitDynamicProvider => "explicit",
Self::DeclaredAlwaysFeasible => "declared_always_feasible",
Self::Unavailable => "unavailable",
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub(crate) enum SavingsMetricClassPolicy {
ExplicitStaticProvider,
DeclaredEntityIdentity,
ExplicitDynamicProvider,
Unavailable,
}
impl SavingsMetricClassPolicy {
pub(crate) const fn is_available(self) -> bool {
!matches!(self, Self::Unavailable)
}
pub(crate) const fn is_dynamic_explicit(self) -> bool {
matches!(self, Self::ExplicitDynamicProvider)
}
pub(crate) const fn trace_label(self) -> &'static str {
match self {
Self::ExplicitStaticProvider | Self::ExplicitDynamicProvider => "explicit",
Self::DeclaredEntityIdentity => "declared_entity_identity",
Self::Unavailable => "unavailable",
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub(crate) enum OwnershipPolicy {
ExplicitStaticProvider,
DeclaredUnrestricted,
ExplicitDynamicProvider,
}
impl OwnershipPolicy {
pub(crate) const fn is_explicit(self) -> bool {
matches!(
self,
Self::ExplicitStaticProvider | Self::ExplicitDynamicProvider
)
}
pub(crate) const fn trace_label(self) -> &'static str {
match self {
Self::ExplicitStaticProvider | Self::ExplicitDynamicProvider => "explicit",
Self::DeclaredUnrestricted => "declared_unrestricted",
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub(crate) enum ConstructionOrderPolicy {
ExplicitStaticProvider,
DeclaredNaturalElementOrder,
ExplicitDynamicProvider,
}
impl ConstructionOrderPolicy {
pub(crate) const fn is_explicit(self) -> bool {
matches!(
self,
Self::ExplicitStaticProvider | Self::ExplicitDynamicProvider
)
}
pub(crate) const fn trace_label(self) -> &'static str {
match self {
Self::ExplicitStaticProvider | Self::ExplicitDynamicProvider => "explicit",
Self::DeclaredNaturalElementOrder => "declared_natural_element_order",
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub(crate) enum PrecedencePolicy {
Absent,
SuccessorsOnly,
Explicit,
}
impl PrecedencePolicy {
pub(crate) const fn has_successors(self) -> bool {
matches!(self, Self::SuccessorsOnly | Self::Explicit)
}
pub(crate) const fn is_explicit(self) -> bool {
matches!(self, Self::Explicit)
}
pub(crate) const fn trace_label(self) -> &'static str {
match self {
Self::Absent => "absent",
Self::SuccessorsOnly => "successors_only",
Self::Explicit => "explicit",
}
}
}