|  | use super::prelude::*; | 
|  |  | 
|  | pub(crate) struct LoopMatchParser; | 
|  | impl<S: Stage> NoArgsAttributeParser<S> for LoopMatchParser { | 
|  | const PATH: &[Symbol] = &[sym::loop_match]; | 
|  | const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Warn; | 
|  | const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(&[Allow(Target::Expression)]); | 
|  | const CREATE: fn(Span) -> AttributeKind = AttributeKind::LoopMatch; | 
|  | } | 
|  |  | 
|  | pub(crate) struct ConstContinueParser; | 
|  | impl<S: Stage> NoArgsAttributeParser<S> for ConstContinueParser { | 
|  | const PATH: &[Symbol] = &[sym::const_continue]; | 
|  | const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Warn; | 
|  | const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(&[Allow(Target::Expression)]); | 
|  | const CREATE: fn(Span) -> AttributeKind = AttributeKind::ConstContinue; | 
|  | } |