Lines Matching defs:Pat
16 pub enum Pat {
79 // Pat::Box(pat) => {...}
80 // Pat::Ident(pat) => {...}
82 // Pat::Wild(pat) => {...}
105 pub subpat: Option<(Token![@], Box<Pat>)>,
115 pub cases: Punctuated<Pat, Token![|]>,
125 pub pat: Box<Pat>,
136 pub pat: Box<Pat>,
155 pub elems: Punctuated<Pat, Token![,]>,
178 pub elems: Punctuated<Pat, Token![,]>,
190 pub elems: Punctuated<Pat, Token![,]>,
199 pub pat: Box<Pat>,
224 pub pat: Box<Pat>,
236 impl Pat {
279 input.call(pat_wild).map(Pat::Wild)
290 input.call(pat_ident).map(Pat::Ident)
292 input.call(pat_reference).map(Pat::Reference)
296 input.call(pat_slice).map(Pat::Slice)
300 input.call(pat_const).map(Pat::Verbatim)
351 /// Use [`Pat::parse_multi`] instead if you are not intending to support
364 pat: Box::new(Pat::parse_single(input)?),
371 fn multi_pat_impl(input: ParseStream, leading_vert: Option<Token![|]>) -> Result<Pat> {
372 let mut pat = Pat::parse_single(input)?;
381 let pat = Pat::parse_single(input)?;
384 pat = Pat::Or(PatOr {
393 fn pat_path_or_macro_or_struct_or_range(input: ParseStream) -> Result<Pat> {
403 return Ok(Pat::Macro(ExprMacro {
415 pat_struct(input, qself, path).map(Pat::Struct)
417 pat_tuple_struct(input, qself, path).map(Pat::TupleStruct)
421 Ok(Pat::Path(ExprPath {
436 fn pat_box(begin: ParseBuffer, input: ParseStream) -> Result<Pat> {
438 Pat::parse_single(input)?;
439 Ok(Pat::Verbatim(verbatim::between(&begin, input)))
451 let subpat = Pat::parse_single(input)?;
470 let value = Pat::parse_multi_with_leading_vert(&content)?;
542 pat: Box::new(Pat::parse_multi_with_leading_vert(input)?),
552 Pat::Verbatim(verbatim::between(&begin, input))
554 Pat::Ident(PatIdent {
571 fn pat_range(input: ParseStream, qself: Option<QSelf>, path: Path) -> Result<Pat> {
577 Ok(Pat::Range(ExprRange {
589 fn pat_range_half_open(input: ParseStream) -> Result<Pat> {
593 Ok(Pat::Range(ExprRange {
601 RangeLimits::HalfOpen(dot2_token) => Ok(Pat::Rest(PatRest {
610 fn pat_paren_or_tuple(input: ParseStream) -> Result<Pat> {
616 let value = Pat::parse_multi_with_leading_vert(&content)?;
618 if elems.is_empty() && !matches!(value, Pat::Rest(_)) {
619 return Ok(Pat::Paren(PatParen {
633 Ok(Pat::Tuple(PatTuple {
645 pat: Box::new(Pat::parse_single(input)?),
649 fn pat_lit_or_range(input: ParseStream) -> Result<Pat> {
657 Ok(Pat::Range(ExprRange {
684 fn into_pat(self) -> Pat {
686 PatRangeBound::Const(pat) => Pat::Const(pat),
687 PatRangeBound::Lit(pat) => Pat::Lit(pat),
688 PatRangeBound::Path(pat) => Pat::Path(pat),
732 let value = Pat::parse_multi_with_leading_vert(&content)?;
734 Pat::Range(pat) if pat.start.is_none() || pat.end.is_none() => {
869 && !matches!(self.elems[0], Pat::Rest { .. })