@@ -533,63 +533,73 @@ declare_features! (
533533) ;
534534
535535declare_features ! (
536- ( accepted, associated_types, "1.0.0" , None , None ) ,
537- // Allows overloading augmented assignment operations like `a += b`.
538- ( accepted, augmented_assignments, "1.8.0" , Some ( 28235 ) , None ) ,
539- // Allows empty structs and enum variants with braces.
540- ( accepted, braced_empty_structs, "1.8.0" , Some ( 29720 ) , None ) ,
541- // Allows indexing into constant arrays.
542- ( accepted, const_indexing, "1.26.0" , Some ( 29947 ) , None ) ,
543- ( accepted, default_type_params, "1.0.0" , None , None ) ,
544- ( accepted, globs, "1.0.0" , None , None ) ,
545- ( accepted, if_let, "1.0.0" , None , None ) ,
546536 // A temporary feature gate used to enable parser extensions needed
547537 // to bootstrap fix for #5723.
548538 ( accepted, issue_5723_bootstrap, "1.0.0" , None , None ) ,
539+ // These are used to test this portion of the compiler,
540+ // they don't actually mean anything.
541+ ( accepted, test_accepted_feature, "1.0.0" , None , None ) ,
542+
543+ // Allows using associated `type`s in `trait`s.
544+ ( accepted, associated_types, "1.0.0" , None , None ) ,
545+ // Allows using assigning a default type to type parameters in algebraic data type definitions.
546+ ( accepted, default_type_params, "1.0.0" , None , None ) ,
547+ // FIXME: explain `globs`.
548+ ( accepted, globs, "1.0.0" , None , None ) ,
549+ // Allows `macro_rules!` items.
549550 ( accepted, macro_rules, "1.0.0" , None , None ) ,
550- // Allows using `#![no_std]`.
551- ( accepted, no_std, "1.6.0" , None , None ) ,
551+ // Allows use of `&foo[a..b]` as a slicing syntax.
552552 ( accepted, slicing_syntax, "1.0.0" , None , None ) ,
553+ // Allows struct variants `Foo { baz: u8, .. }` in enums (RFC 418).
553554 ( accepted, struct_variant, "1.0.0" , None , None ) ,
554- // These are used to test this portion of the compiler, they don't actually
555- // mean anything.
556- ( accepted, test_accepted_feature, "1.0.0" , None , None ) ,
555+ // Allows indexing tuples.
557556 ( accepted, tuple_indexing, "1.0.0" , None , None ) ,
558- // Allows macros to appear in the type position.
559- ( accepted, type_macros, "1.13.0" , Some ( 27245 ) , None ) ,
557+ // Allows the use of `if let` expressions.
558+ ( accepted, if_let, "1.0.0" , None , None ) ,
559+ // Allows the use of `while let` expressions.
560560 ( accepted, while_let, "1.0.0" , None , None ) ,
561+ // Allows using `#![no_std]`.
562+ ( accepted, no_std, "1.6.0" , None , None ) ,
563+ // Allows overloading augmented assignment operations like `a += b`.
564+ ( accepted, augmented_assignments, "1.8.0" , Some ( 28235 ) , None ) ,
565+ // Allows empty structs and enum variants with braces.
566+ ( accepted, braced_empty_structs, "1.8.0" , Some ( 29720 ) , None ) ,
561567 // Allows `#[deprecated]` attribute.
562568 ( accepted, deprecated, "1.9.0" , Some ( 29935 ) , None ) ,
563- // `expr?`
569+ // Allows macros to appear in the type position.
570+ ( accepted, type_macros, "1.13.0" , Some ( 27245 ) , None ) ,
571+ // Allows use of the postfix `?` operator in expressions.
564572 ( accepted, question_mark, "1.13.0" , Some ( 31436 ) , None ) ,
565573 // Allows `..` in tuple (struct) patterns.
566574 ( accepted, dotdot_in_tuple_patterns, "1.14.0" , Some ( 33627 ) , None ) ,
575+ // Allows some increased flexibility in the name resolution rules,
576+ // especially around globs and shadowing (RFC 1560).
567577 ( accepted, item_like_imports, "1.15.0" , Some ( 35120 ) , None ) ,
568578 // Allows using `Self` and associated types in struct expressions and patterns.
569579 ( accepted, more_struct_aliases, "1.16.0" , Some ( 37544 ) , None ) ,
570- // elide `'static` lifetimes in `static`s and `const`s.
580+ // Allows elision of `'static` lifetimes in `static`s and `const`s.
571581 ( accepted, static_in_const, "1.17.0" , Some ( 35897 ) , None ) ,
572582 // Allows field shorthands (`x` meaning `x: x`) in struct literal expressions.
573583 ( accepted, field_init_shorthand, "1.17.0" , Some ( 37340 ) , None ) ,
574584 // Allows the definition recursive static items.
575585 ( accepted, static_recursion, "1.17.0" , Some ( 29719 ) , None ) ,
576- // `pub(restricted)` visibilities (RFC 1422)
586+ // Allows `pub(restricted)` visibilities (RFC 1422).
577587 ( accepted, pub_restricted, "1.18.0" , Some ( 32409 ) , None ) ,
578- // `#![windows_subsystem]`
588+ // Allows `#![windows_subsystem]`.
579589 ( accepted, windows_subsystem, "1.18.0" , Some ( 37499 ) , None ) ,
580590 // Allows `break {expr}` with a value inside `loop`s.
581591 ( accepted, loop_break_value, "1.19.0" , Some ( 37339 ) , None ) ,
582- // Permits numeric fields in struct expressions and patterns.
592+ // Allows numeric fields in struct expressions and patterns.
583593 ( accepted, relaxed_adts, "1.19.0" , Some ( 35626 ) , None ) ,
584- // Coerces non capturing closures to function pointers.
594+ // Allows coercing non capturing closures to function pointers.
585595 ( accepted, closure_to_fn_coercion, "1.19.0" , Some ( 39817 ) , None ) ,
586596 // Allows attributes on struct literal fields.
587597 ( accepted, struct_field_attributes, "1.20.0" , Some ( 38814 ) , None ) ,
588598 // Allows the definition of associated constants in `trait` or `impl` blocks.
589599 ( accepted, associated_consts, "1.20.0" , Some ( 29646 ) , None ) ,
590- // Usage of the `compile_error!` macro.
600+ // Allows usage of the `compile_error!` macro.
591601 ( accepted, compile_error, "1.20.0" , Some ( 40872 ) , None ) ,
592- // See rust-lang/rfcs#1414. Allows code like `let x: &'static u32 = &42` to work.
602+ // Allows code like `let x: &'static u32 = &42` to work (RFC 1414) .
593603 ( accepted, rvalue_static_promotion, "1.21.0" , Some ( 38865 ) , None ) ,
594604 // Allows `Drop` types in constants (RFC 1440).
595605 ( accepted, drop_types_in_const, "1.22.0" , Some ( 33156 ) , None ) ,
@@ -600,24 +610,27 @@ declare_features! (
600610 ( accepted, repr_align, "1.25.0" , Some ( 33626 ) , None ) ,
601611 // Allows '|' at beginning of match arms (RFC 1925).
602612 ( accepted, match_beginning_vert, "1.25.0" , Some ( 44101 ) , None ) ,
603- // Nested groups in `use` (RFC 2128)
613+ // Allows nested groups in `use` items (RFC 2128).
604614 ( accepted, use_nested_groups, "1.25.0" , Some ( 44494 ) , None ) ,
605- // `a..=b` and `..=b`
615+ // Allows indexing into constant arrays.
616+ ( accepted, const_indexing, "1.26.0" , Some ( 29947 ) , None ) ,
617+ // Allows using `a..=b` and `..=b` as inclusive range syntaxes.
606618 ( accepted, inclusive_range_syntax, "1.26.0" , Some ( 28237 ) , None ) ,
607619 // Allows `..=` in patterns (RFC 1192).
608620 ( accepted, dotdoteq_in_patterns, "1.26.0" , Some ( 28237 ) , None ) ,
609- // Termination trait in main (RFC 1937)
621+ // Allows `fn main()` with return types which implements `Termination` (RFC 1937).
610622 ( accepted, termination_trait, "1.26.0" , Some ( 43301 ) , None ) ,
611- // `Copy`/` Clone` closures (RFC 2132).
623+ // Allows implementing ` Clone` for closures where possible (RFC 2132).
612624 ( accepted, clone_closures, "1.26.0" , Some ( 44490 ) , None ) ,
625+ // Allows implementing `Copy` for closures where possible (RFC 2132).
613626 ( accepted, copy_closures, "1.26.0" , Some ( 44490 ) , None ) ,
614627 // Allows `impl Trait` in function arguments.
615628 ( accepted, universal_impl_trait, "1.26.0" , Some ( 34511 ) , None ) ,
616629 // Allows `impl Trait` in function return types.
617630 ( accepted, conservative_impl_trait, "1.26.0" , Some ( 34511 ) , None ) ,
618- // The ` i128` type
631+ // Allows using the `u128` and ` i128` types.
619632 ( accepted, i128_type, "1.26.0" , Some ( 35118 ) , None ) ,
620- // Default match binding modes (RFC 2005)
633+ // Allows default match binding modes (RFC 2005).
621634 ( accepted, match_default_bindings, "1.26.0" , Some ( 42640 ) , None ) ,
622635 // Allows `'_` placeholder lifetimes.
623636 ( accepted, underscore_lifetimes, "1.26.0" , Some ( 44524 ) , None ) ,
@@ -627,21 +640,21 @@ declare_features! (
627640 ( accepted, cfg_target_feature, "1.27.0" , Some ( 29717 ) , None ) ,
628641 // Allows `#[target_feature(...)]`.
629642 ( accepted, target_feature, "1.27.0" , None , None ) ,
630- // Trait object syntax with `dyn` prefix
643+ // Allows using `dyn Trait` as a syntax for trait objects.
631644 ( accepted, dyn_trait, "1.27.0" , Some ( 44662 ) , None ) ,
632645 // Allows `#[must_use]` on functions, and introduces must-use operators (RFC 1940).
633646 ( accepted, fn_must_use, "1.27.0" , Some ( 43302 ) , None ) ,
634647 // Allows use of the `:lifetime` macro fragment specifier.
635648 ( accepted, macro_lifetime_matcher, "1.27.0" , Some ( 34303 ) , None ) ,
636- // Termination trait in tests (RFC 1937)
649+ // Allows `#[test]` functions where the return type implements `Termination` (RFC 1937).
637650 ( accepted, termination_trait_test, "1.27.0" , Some ( 48854 ) , None ) ,
638- // The `#[global_allocator]` attribute
651+ // Allows the `#[global_allocator]` attribute.
639652 ( accepted, global_allocator, "1.28.0" , Some ( 27389 ) , None ) ,
640653 // Allows `#[repr(transparent)]` attribute on newtype structs.
641654 ( accepted, repr_transparent, "1.28.0" , Some ( 43036 ) , None ) ,
642- // Procedural macros in `proc-macro` crates
655+ // Allows procedural macros in `proc-macro` crates.
643656 ( accepted, proc_macro, "1.29.0" , Some ( 38356 ) , None ) ,
644- // `foo.rs` as an alternative to `foo/mod.rs`
657+ // Allows `foo.rs` as an alternative to `foo/mod.rs`.
645658 ( accepted, non_modrs_mods, "1.30.0" , Some ( 44660 ) , None ) ,
646659 // Allows use of the `:vis` macro fragment specifier
647660 ( accepted, macro_vis_matcher, "1.30.0" , Some ( 41022 ) , None ) ,
@@ -650,47 +663,50 @@ declare_features! (
650663 ( accepted, use_extern_macros, "1.30.0" , Some ( 35896 ) , None ) ,
651664 // Allows keywords to be escaped for use as identifiers.
652665 ( accepted, raw_identifiers, "1.30.0" , Some ( 48589 ) , None ) ,
653- // Attributes scoped to tools.
666+ // Allows attributes scoped to tools.
654667 ( accepted, tool_attributes, "1.30.0" , Some ( 44690 ) , None ) ,
655668 // Allows multi-segment paths in attributes and derives.
656669 ( accepted, proc_macro_path_invoc, "1.30.0" , Some ( 38356 ) , None ) ,
657670 // Allows all literals in attribute lists and values of key-value pairs.
658671 ( accepted, attr_literals, "1.30.0" , Some ( 34981 ) , None ) ,
659- // Infer outlives requirements (RFC 2093).
672+ // Allows inferring outlives requirements (RFC 2093).
660673 ( accepted, infer_outlives_requirements, "1.30.0" , Some ( 44493 ) , None ) ,
674+ // Allows annotating functions conforming to `fn(&PanicInfo) -> !` with `#[panic_handler]`.
675+ // This defines the behavior of panics.
661676 ( accepted, panic_handler, "1.30.0" , Some ( 44489 ) , None ) ,
662- // Used to preserve symbols (see llvm.used).
677+ // Allows `#[used]` to preserve symbols (see llvm.used).
663678 ( accepted, used, "1.30.0" , Some ( 40289 ) , None ) ,
664- // `crate` in paths
679+ // Allows `crate` in paths.
665680 ( accepted, crate_in_paths, "1.30.0" , Some ( 45477 ) , None ) ,
666- // Resolve absolute paths as paths from other crates.
681+ // Allows resolving absolute paths as paths from other crates.
667682 ( accepted, extern_absolute_paths, "1.30.0" , Some ( 44660 ) , None ) ,
668- // Access to crate names passed via `--extern` through prelude.
683+ // Allows access to crate names passed via `--extern` through prelude.
669684 ( accepted, extern_prelude, "1.30.0" , Some ( 44660 ) , None ) ,
670- // Parentheses in patterns
685+ // Allows parentheses in patterns.
671686 ( accepted, pattern_parentheses, "1.31.0" , Some ( 51087 ) , None ) ,
672687 // Allows the definition of `const fn` functions.
673688 ( accepted, min_const_fn, "1.31.0" , Some ( 53555 ) , None ) ,
674- // Scoped lints
689+ // Allows scoped lints.
675690 ( accepted, tool_lints, "1.31.0" , Some ( 44690 ) , None ) ,
676- // `impl<I:Iterator> Iterator for &mut Iterator`
677- // `impl Debug for Foo<'_>`
691+ // Allows lifetime elision in `impl` headers. For example:
692+ // + `impl<I:Iterator> Iterator for &mut Iterator`
693+ // + `impl Debug for Foo<'_>`
678694 ( accepted, impl_header_lifetime_elision, "1.31.0" , Some ( 15872 ) , None ) ,
679- // `extern crate foo as bar;` puts `bar` into extern prelude.
695+ // Allows `extern crate foo as bar;`. This puts `bar` into extern prelude.
680696 ( accepted, extern_crate_item_prelude, "1.31.0" , Some ( 55599 ) , None ) ,
681697 // Allows use of the `:literal` macro fragment specifier (RFC 1576).
682698 ( accepted, macro_literal_matcher, "1.32.0" , Some ( 35625 ) , None ) ,
683- // Use `?` as the Kleene "at most one" operator.
699+ // Allows use of `?` as the Kleene "at most one" operator in macros .
684700 ( accepted, macro_at_most_once_rep, "1.32.0" , Some ( 48075 ) , None ) ,
685- // `Self` struct constructor (RFC 2302)
701+ // Allows `Self` struct constructor (RFC 2302).
686702 ( accepted, self_struct_ctor, "1.32.0" , Some ( 51994 ) , None ) ,
687- // `Self` in type definitions (RFC 2300)
703+ // Allows `Self` in type definitions (RFC 2300).
688704 ( accepted, self_in_typedefs, "1.32.0" , Some ( 49303 ) , None ) ,
689705 // Allows `use x::y;` to search `x` in the current scope.
690706 ( accepted, uniform_paths, "1.32.0" , Some ( 53130 ) , None ) ,
691- // Integer match exhaustiveness checking (RFC 2591)
707+ // Allows integer match exhaustiveness checking (RFC 2591).
692708 ( accepted, exhaustive_integer_patterns, "1.33.0" , Some ( 50907 ) , None ) ,
693- // `use path as _;` and `extern crate c as _;`
709+ // Allows `use path as _;` and `extern crate c as _;`.
694710 ( accepted, underscore_imports, "1.33.0" , Some ( 48216 ) , None ) ,
695711 // Allows `#[repr(packed(N))]` attribute on structs.
696712 ( accepted, repr_packed, "1.33.0" , Some ( 33158 ) , None ) ,
@@ -702,15 +718,16 @@ declare_features! (
702718 // As long as control flow is not implemented in const eval, `&&` and `||` may not be used
703719 // at the same time as let bindings.
704720 ( accepted, const_let, "1.33.0" , Some ( 48821 ) , None ) ,
705- // `#[cfg_attr(predicate, multiple, attributes, here)]`
721+ // Allows `#[cfg_attr(predicate, multiple, attributes, here)]`.
706722 ( accepted, cfg_attr_multi, "1.33.0" , Some ( 54881 ) , None ) ,
707- // Top level or-patterns (`p | q`) in `if let` and `while let`.
723+ // Allows top level or-patterns (`p | q`) in `if let` and `while let`.
708724 ( accepted, if_while_or_patterns, "1.33.0" , Some ( 48215 ) , None ) ,
709725 // Allows `cfg(target_vendor = "...")`.
710726 ( accepted, cfg_target_vendor, "1.33.0" , Some ( 29718 ) , None ) ,
711- // `extern crate self as foo;` puts local crate root into extern prelude under name `foo`.
727+ // Allows `extern crate self as foo;`.
728+ // This puts local crate root into extern prelude under name `foo`.
712729 ( accepted, extern_crate_self, "1.34.0" , Some ( 56409 ) , None ) ,
713- // support for arbitrary delimited token streams in non-macro attributes
730+ // Allows arbitrary delimited token streams in non-macro attributes.
714731 ( accepted, unrestricted_attribute_tokens, "1.34.0" , Some ( 55208 ) , None ) ,
715732) ;
716733
0 commit comments