Skip to main content

ide_db/generated/
lints.rs

1//! Generated by `cargo xtask codegen lint-definitions`, do not edit by hand.
2
3use span::Edition;
4
5use crate::Severity;
6
7#[derive(Clone)]
8pub struct Lint {
9    pub label: &'static str,
10    pub description: &'static str,
11    pub default_severity: Severity,
12    pub warn_since: Option<Edition>,
13    pub deny_since: Option<Edition>,
14}
15
16pub struct LintGroup {
17    pub lint: Lint,
18    pub children: &'static [&'static str],
19}
20
21pub const DEFAULT_LINTS: &[Lint] = &[
22    Lint {
23        label: "aarch64_softfloat_neon",
24        description: r##"detects code that could be affected by ABI issues on aarch64 softfloat targets"##,
25        default_severity: Severity::Error,
26        warn_since: None,
27        deny_since: None,
28    },
29    Lint {
30        label: "absolute_paths_not_starting_with_crate",
31        description: r##"fully qualified paths that start with a module name instead of `crate`, `self`, or an extern crate name"##,
32        default_severity: Severity::Allow,
33        warn_since: None,
34        deny_since: None,
35    },
36    Lint {
37        label: "aligned_fields_in_packed",
38        description: r##"`repr(C, align)` types nested inside `repr(C, packed)` types do not always have a C-compatible layout"##,
39        default_severity: Severity::Error,
40        warn_since: None,
41        deny_since: None,
42    },
43    Lint {
44        label: "ambiguous_associated_items",
45        description: r##"ambiguous associated items"##,
46        default_severity: Severity::Error,
47        warn_since: None,
48        deny_since: None,
49    },
50    Lint {
51        label: "ambiguous_derive_helpers",
52        description: r##"detects derive helper attributes that are ambiguous with built-in attributes"##,
53        default_severity: Severity::Warning,
54        warn_since: None,
55        deny_since: None,
56    },
57    Lint {
58        label: "ambiguous_glob_imported_traits",
59        description: r##"detects uses of ambiguously glob imported traits"##,
60        default_severity: Severity::Warning,
61        warn_since: None,
62        deny_since: None,
63    },
64    Lint {
65        label: "ambiguous_glob_imports",
66        description: r##"detects certain glob imports that require reporting an ambiguity error"##,
67        default_severity: Severity::Error,
68        warn_since: None,
69        deny_since: None,
70    },
71    Lint {
72        label: "ambiguous_glob_reexports",
73        description: r##"ambiguous glob re-exports"##,
74        default_severity: Severity::Warning,
75        warn_since: None,
76        deny_since: None,
77    },
78    Lint {
79        label: "ambiguous_import_visibilities",
80        description: r##"detects certain glob imports that require reporting an ambiguity error"##,
81        default_severity: Severity::Warning,
82        warn_since: None,
83        deny_since: None,
84    },
85    Lint {
86        label: "ambiguous_negative_literals",
87        description: r##"ambiguous negative literals operations"##,
88        default_severity: Severity::Allow,
89        warn_since: None,
90        deny_since: None,
91    },
92    Lint {
93        label: "ambiguous_panic_imports",
94        description: r##"detects ambiguous core and std panic imports"##,
95        default_severity: Severity::Warning,
96        warn_since: None,
97        deny_since: None,
98    },
99    Lint {
100        label: "ambiguous_wide_pointer_comparisons",
101        description: r##"detects ambiguous wide pointer comparisons"##,
102        default_severity: Severity::Warning,
103        warn_since: None,
104        deny_since: None,
105    },
106    Lint {
107        label: "anonymous_parameters",
108        description: r##"detects anonymous parameters"##,
109        default_severity: Severity::Warning,
110        warn_since: None,
111        deny_since: None,
112    },
113    Lint {
114        label: "arithmetic_overflow",
115        description: r##"arithmetic operation overflows"##,
116        default_severity: Severity::Error,
117        warn_since: None,
118        deny_since: None,
119    },
120    Lint {
121        label: "array_into_iter",
122        description: r##"detects calling `into_iter` on arrays in Rust 2015 and 2018"##,
123        default_severity: Severity::Warning,
124        warn_since: None,
125        deny_since: None,
126    },
127    Lint {
128        label: "asm_sub_register",
129        description: r##"using only a subset of a register for inline asm inputs"##,
130        default_severity: Severity::Warning,
131        warn_since: None,
132        deny_since: None,
133    },
134    Lint {
135        label: "async_fn_in_trait",
136        description: r##"use of `async fn` in definition of a publicly-reachable trait"##,
137        default_severity: Severity::Warning,
138        warn_since: None,
139        deny_since: None,
140    },
141    Lint {
142        label: "bad_asm_style",
143        description: r##"incorrect use of inline assembly"##,
144        default_severity: Severity::Warning,
145        warn_since: None,
146        deny_since: None,
147    },
148    Lint {
149        label: "bare_trait_objects",
150        description: r##"suggest using `dyn Trait` for trait objects"##,
151        default_severity: Severity::Warning,
152        warn_since: None,
153        deny_since: None,
154    },
155    Lint {
156        label: "binary_asm_labels",
157        description: r##"labels in inline assembly containing only 0 or 1 digits"##,
158        default_severity: Severity::Error,
159        warn_since: None,
160        deny_since: None,
161    },
162    Lint {
163        label: "bindings_with_variant_name",
164        description: r##"detects pattern bindings with the same name as one of the matched variants"##,
165        default_severity: Severity::Error,
166        warn_since: None,
167        deny_since: None,
168    },
169    Lint {
170        label: "boxed_slice_into_iter",
171        description: r##"detects calling `into_iter` on boxed slices in Rust 2015, 2018, and 2021"##,
172        default_severity: Severity::Warning,
173        warn_since: None,
174        deny_since: None,
175    },
176    Lint {
177        label: "break_with_label_and_loop",
178        description: r##"`break` expression with label and unlabeled loop as value expression"##,
179        default_severity: Severity::Warning,
180        warn_since: None,
181        deny_since: None,
182    },
183    Lint {
184        label: "c_void_returns",
185        description: r##"detects use of `c_void` as a return type"##,
186        default_severity: Severity::Warning,
187        warn_since: None,
188        deny_since: None,
189    },
190    Lint {
191        label: "clashing_extern_declarations",
192        description: r##"detects when an extern fn has been declared with the same name but different types"##,
193        default_severity: Severity::Warning,
194        warn_since: None,
195        deny_since: None,
196    },
197    Lint {
198        label: "closure_returning_async_block",
199        description: r##"closure that returns `async {}` could be rewritten as an async closure"##,
200        default_severity: Severity::Allow,
201        warn_since: None,
202        deny_since: None,
203    },
204    Lint {
205        label: "coherence_leak_check",
206        description: r##"distinct impls distinguished only by the leak-check code"##,
207        default_severity: Severity::Warning,
208        warn_since: None,
209        deny_since: None,
210    },
211    Lint {
212        label: "conflicting_repr_hints",
213        description: r##"conflicts between `#[repr(..)]` hints that were previously accepted and used in practice"##,
214        default_severity: Severity::Error,
215        warn_since: None,
216        deny_since: None,
217    },
218    Lint {
219        label: "confusable_idents",
220        description: r##"detects visually confusable pairs between identifiers"##,
221        default_severity: Severity::Warning,
222        warn_since: None,
223        deny_since: None,
224    },
225    Lint {
226        label: "const_evaluatable_unchecked",
227        description: r##"detects a generic constant is used in a type without a emitting a warning"##,
228        default_severity: Severity::Warning,
229        warn_since: None,
230        deny_since: None,
231    },
232    Lint {
233        label: "const_item_interior_mutations",
234        description: r##"checks for calls which mutates a interior mutable const-item"##,
235        default_severity: Severity::Warning,
236        warn_since: None,
237        deny_since: None,
238    },
239    Lint {
240        label: "const_item_mutation",
241        description: r##"detects attempts to mutate a `const` item"##,
242        default_severity: Severity::Warning,
243        warn_since: None,
244        deny_since: None,
245    },
246    Lint {
247        label: "dangerous_implicit_autorefs",
248        description: r##"implicit reference to a dereference of a raw pointer"##,
249        default_severity: Severity::Error,
250        warn_since: None,
251        deny_since: None,
252    },
253    Lint {
254        label: "dangling_pointers_from_locals",
255        description: r##"detects returning a pointer from a local variable"##,
256        default_severity: Severity::Warning,
257        warn_since: None,
258        deny_since: None,
259    },
260    Lint {
261        label: "dangling_pointers_from_temporaries",
262        description: r##"detects getting a pointer from a temporary"##,
263        default_severity: Severity::Warning,
264        warn_since: None,
265        deny_since: None,
266    },
267    Lint {
268        label: "dead_code",
269        description: r##"detect unused, unexported items"##,
270        default_severity: Severity::Warning,
271        warn_since: None,
272        deny_since: None,
273    },
274    Lint {
275        label: "dead_code_pub_in_binary",
276        description: r##"detect public items in executable crates that are never used"##,
277        default_severity: Severity::Allow,
278        warn_since: None,
279        deny_since: None,
280    },
281    Lint {
282        label: "default_overrides_default_fields",
283        description: r##"detect `Default` impl that should use the type's default field values"##,
284        default_severity: Severity::Error,
285        warn_since: None,
286        deny_since: None,
287    },
288    Lint {
289        label: "deprecated",
290        description: r##"detects use of deprecated items"##,
291        default_severity: Severity::Warning,
292        warn_since: None,
293        deny_since: None,
294    },
295    Lint {
296        label: "deprecated_in_future",
297        description: r##"detects use of items that will be deprecated in a future version"##,
298        default_severity: Severity::Allow,
299        warn_since: None,
300        deny_since: None,
301    },
302    Lint {
303        label: "deprecated_llvm_intrinsic",
304        description: r##"detects uses of deprecated LLVM intrinsics"##,
305        default_severity: Severity::Allow,
306        warn_since: None,
307        deny_since: None,
308    },
309    Lint {
310        label: "deprecated_safe_2024",
311        description: r##"detects unsafe functions being used as safe functions"##,
312        default_severity: Severity::Allow,
313        warn_since: None,
314        deny_since: None,
315    },
316    Lint {
317        label: "deprecated_where_clause_location",
318        description: r##"deprecated where clause location"##,
319        default_severity: Severity::Warning,
320        warn_since: None,
321        deny_since: None,
322    },
323    Lint {
324        label: "deref_into_dyn_supertrait",
325        description: r##"`Deref` implementation with a supertrait trait object for output is shadowed by trait upcasting"##,
326        default_severity: Severity::Allow,
327        warn_since: None,
328        deny_since: None,
329    },
330    Lint {
331        label: "deref_nullptr",
332        description: r##"detects when an null pointer is dereferenced"##,
333        default_severity: Severity::Error,
334        warn_since: None,
335        deny_since: None,
336    },
337    Lint {
338        label: "double_negations",
339        description: r##"detects expressions of the form `--x`"##,
340        default_severity: Severity::Warning,
341        warn_since: None,
342        deny_since: None,
343    },
344    Lint {
345        label: "drop_bounds",
346        description: r##"bounds of the form `T: Drop` are most likely incorrect"##,
347        default_severity: Severity::Warning,
348        warn_since: None,
349        deny_since: None,
350    },
351    Lint {
352        label: "dropping_copy_types",
353        description: r##"calls to `drop` and `drop_in_place` where the dropped value implements Copy"##,
354        default_severity: Severity::Warning,
355        warn_since: None,
356        deny_since: None,
357    },
358    Lint {
359        label: "dropping_references",
360        description: r##"calls to `drop` and `drop_in_place` where the dropped type is a reference instead of an owned value"##,
361        default_severity: Severity::Warning,
362        warn_since: None,
363        deny_since: None,
364    },
365    Lint {
366        label: "duplicate_features",
367        description: r##"duplicate features found in crate-level `#[feature]` directives"##,
368        default_severity: Severity::Error,
369        warn_since: None,
370        deny_since: None,
371    },
372    Lint {
373        label: "duplicate_macro_attributes",
374        description: r##"duplicated attribute"##,
375        default_severity: Severity::Warning,
376        warn_since: None,
377        deny_since: None,
378    },
379    Lint {
380        label: "duplicate_tools",
381        description: r##"duplicate tools found in crate-level `#[register_tools]` directives"##,
382        default_severity: Severity::Error,
383        warn_since: None,
384        deny_since: None,
385    },
386    Lint {
387        label: "dyn_drop",
388        description: r##"trait objects of the form `dyn Drop` are useless"##,
389        default_severity: Severity::Warning,
390        warn_since: None,
391        deny_since: None,
392    },
393    Lint {
394        label: "edition_2024_expr_fragment_specifier",
395        description: r##"The `expr` fragment specifier will accept more expressions in the 2024 edition. To keep the existing behavior, use the `expr_2021` fragment specifier."##,
396        default_severity: Severity::Allow,
397        warn_since: None,
398        deny_since: None,
399    },
400    Lint {
401        label: "elided_lifetimes_in_paths",
402        description: r##"hidden lifetime parameters in types are deprecated"##,
403        default_severity: Severity::Allow,
404        warn_since: None,
405        deny_since: None,
406    },
407    Lint {
408        label: "ellipsis_inclusive_range_patterns",
409        description: r##"`...` range patterns are deprecated"##,
410        default_severity: Severity::Warning,
411        warn_since: None,
412        deny_since: None,
413    },
414    Lint {
415        label: "enum_intrinsics_non_enums",
416        description: r##"detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types"##,
417        default_severity: Severity::Error,
418        warn_since: None,
419        deny_since: None,
420    },
421    Lint {
422        label: "explicit_builtin_cfgs_in_flags",
423        description: r##"detects builtin cfgs set via the `--cfg`"##,
424        default_severity: Severity::Error,
425        warn_since: None,
426        deny_since: None,
427    },
428    Lint {
429        label: "explicit_outlives_requirements",
430        description: r##"outlives requirements can be inferred"##,
431        default_severity: Severity::Allow,
432        warn_since: None,
433        deny_since: None,
434    },
435    Lint {
436        label: "exported_private_dependencies",
437        description: r##"public interface leaks type from a private dependency"##,
438        default_severity: Severity::Warning,
439        warn_since: None,
440        deny_since: None,
441    },
442    Lint {
443        label: "ffi_unwind_calls",
444        description: r##"call to foreign functions or function pointers with FFI-unwind ABI"##,
445        default_severity: Severity::Allow,
446        warn_since: None,
447        deny_since: None,
448    },
449    Lint {
450        label: "float_literal_f32_fallback",
451        description: r##"detects unsuffixed floating point literals whose type fallback to `f32`"##,
452        default_severity: Severity::Warning,
453        warn_since: None,
454        deny_since: None,
455    },
456    Lint {
457        label: "for_loops_over_fallibles",
458        description: r##"for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let`"##,
459        default_severity: Severity::Warning,
460        warn_since: None,
461        deny_since: None,
462    },
463    Lint {
464        label: "forbidden_lint_groups",
465        description: r##"applying forbid to lint-groups"##,
466        default_severity: Severity::Warning,
467        warn_since: None,
468        deny_since: None,
469    },
470    Lint {
471        label: "forgetting_copy_types",
472        description: r##"calls to `std::mem::forget` with a value that implements Copy"##,
473        default_severity: Severity::Warning,
474        warn_since: None,
475        deny_since: None,
476    },
477    Lint {
478        label: "forgetting_references",
479        description: r##"calls to `std::mem::forget` with a reference instead of an owned value"##,
480        default_severity: Severity::Warning,
481        warn_since: None,
482        deny_since: None,
483    },
484    Lint {
485        label: "function_casts_as_integer",
486        description: r##"casting a function into an integer"##,
487        default_severity: Severity::Warning,
488        warn_since: None,
489        deny_since: None,
490    },
491    Lint {
492        label: "function_item_references",
493        description: r##"suggest casting to a function pointer when attempting to take references to function items"##,
494        default_severity: Severity::Warning,
495        warn_since: None,
496        deny_since: None,
497    },
498    Lint {
499        label: "hidden_glob_reexports",
500        description: r##"name introduced by a private item shadows a name introduced by a public glob re-export"##,
501        default_severity: Severity::Warning,
502        warn_since: None,
503        deny_since: None,
504    },
505    Lint {
506        label: "if_let_rescope",
507        description: r##"`if let` assigns a shorter lifetime to temporary values being pattern-matched against in Edition 2024 and rewriting in `match` is an option to preserve the semantics up to Edition 2021"##,
508        default_severity: Severity::Allow,
509        warn_since: None,
510        deny_since: None,
511    },
512    Lint {
513        label: "ill_formed_attribute_input",
514        description: r##"ill-formed attribute inputs that were previously accepted and used in practice"##,
515        default_severity: Severity::Error,
516        warn_since: None,
517        deny_since: None,
518    },
519    Lint {
520        label: "impl_trait_overcaptures",
521        description: r##"`impl Trait` will capture more lifetimes than possibly intended in edition 2024"##,
522        default_severity: Severity::Allow,
523        warn_since: None,
524        deny_since: None,
525    },
526    Lint {
527        label: "impl_trait_redundant_captures",
528        description: r##"redundant precise-capturing `use<...>` syntax on an `impl Trait`"##,
529        default_severity: Severity::Allow,
530        warn_since: None,
531        deny_since: None,
532    },
533    Lint {
534        label: "implicit_provenance_casts",
535        description: r##"an `as` cast relying on exposed provenance is used"##,
536        default_severity: Severity::Allow,
537        warn_since: None,
538        deny_since: None,
539    },
540    Lint {
541        label: "improper_ctypes",
542        description: r##"proper use of libc types in foreign modules"##,
543        default_severity: Severity::Warning,
544        warn_since: None,
545        deny_since: None,
546    },
547    Lint {
548        label: "improper_ctypes_definitions",
549        description: r##"proper use of libc types in foreign item definitions"##,
550        default_severity: Severity::Warning,
551        warn_since: None,
552        deny_since: None,
553    },
554    Lint {
555        label: "improper_gpu_kernel_arg",
556        description: r##"GPU kernel entry points have a limited ABI"##,
557        default_severity: Severity::Warning,
558        warn_since: None,
559        deny_since: None,
560    },
561    Lint {
562        label: "incomplete_features",
563        description: r##"incomplete features that may function improperly in some or all cases"##,
564        default_severity: Severity::Warning,
565        warn_since: None,
566        deny_since: None,
567    },
568    Lint {
569        label: "incomplete_include",
570        description: r##"trailing content in included file"##,
571        default_severity: Severity::Error,
572        warn_since: None,
573        deny_since: None,
574    },
575    Lint {
576        label: "ineffective_unstable_reexports",
577        description: r##"detects ineffective `#[unstable]` attributes on re-exports"##,
578        default_severity: Severity::Error,
579        warn_since: None,
580        deny_since: None,
581    },
582    Lint {
583        label: "ineffective_unstable_trait_impl",
584        description: r##"detects `#[unstable]` on stable trait implementations for stable types"##,
585        default_severity: Severity::Error,
586        warn_since: None,
587        deny_since: None,
588    },
589    Lint {
590        label: "inline_no_sanitize",
591        description: r##"detects incompatible use of `#[inline(always)]` and `#[sanitize(... = "off")]`"##,
592        default_severity: Severity::Warning,
593        warn_since: None,
594        deny_since: None,
595    },
596    Lint {
597        label: "integer_to_ptr_transmutes",
598        description: r##"detects integer to pointer transmutes"##,
599        default_severity: Severity::Warning,
600        warn_since: None,
601        deny_since: None,
602    },
603    Lint {
604        label: "internal_eq_trait_method_impls",
605        description: r##"manual implementation of the internal `Eq::assert_receiver_is_total_eq` method"##,
606        default_severity: Severity::Warning,
607        warn_since: None,
608        deny_since: None,
609    },
610    Lint {
611        label: "internal_features",
612        description: r##"internal features are not supposed to be used"##,
613        default_severity: Severity::Warning,
614        warn_since: None,
615        deny_since: None,
616    },
617    Lint {
618        label: "invalid_atomic_ordering",
619        description: r##"usage of invalid atomic ordering in atomic operations and memory fences"##,
620        default_severity: Severity::Error,
621        warn_since: None,
622        deny_since: None,
623    },
624    Lint {
625        label: "invalid_doc_attributes",
626        description: r##"detects invalid `#[doc(...)]` attributes"##,
627        default_severity: Severity::Warning,
628        warn_since: None,
629        deny_since: None,
630    },
631    Lint {
632        label: "invalid_from_utf8",
633        description: r##"using a non UTF-8 literal in `std::str::from_utf8`"##,
634        default_severity: Severity::Warning,
635        warn_since: None,
636        deny_since: None,
637    },
638    Lint {
639        label: "invalid_from_utf8_unchecked",
640        description: r##"using a non UTF-8 literal in `std::str::from_utf8_unchecked`"##,
641        default_severity: Severity::Error,
642        warn_since: None,
643        deny_since: None,
644    },
645    Lint {
646        label: "invalid_macro_export_arguments",
647        description: r##""invalid_parameter" isn't a valid argument for `#[macro_export]`"##,
648        default_severity: Severity::Error,
649        warn_since: None,
650        deny_since: None,
651    },
652    Lint {
653        label: "invalid_nan_comparisons",
654        description: r##"detects invalid floating point NaN comparisons"##,
655        default_severity: Severity::Warning,
656        warn_since: None,
657        deny_since: None,
658    },
659    Lint {
660        label: "invalid_null_arguments",
661        description: r##"invalid null pointer in arguments"##,
662        default_severity: Severity::Error,
663        warn_since: None,
664        deny_since: None,
665    },
666    Lint {
667        label: "invalid_reference_casting",
668        description: r##"casts of `&T` to `&mut T` without interior mutability"##,
669        default_severity: Severity::Error,
670        warn_since: None,
671        deny_since: None,
672    },
673    Lint {
674        label: "invalid_runtime_symbol_definitions",
675        description: r##"invalid definition of a symbol used by the standard library"##,
676        default_severity: Severity::Error,
677        warn_since: None,
678        deny_since: None,
679    },
680    Lint {
681        label: "invalid_type_param_default",
682        description: r##"type parameter default erroneously allowed in invalid location"##,
683        default_severity: Severity::Error,
684        warn_since: None,
685        deny_since: None,
686    },
687    Lint {
688        label: "invalid_value",
689        description: r##"an invalid value is being created (such as a null reference)"##,
690        default_severity: Severity::Warning,
691        warn_since: None,
692        deny_since: None,
693    },
694    Lint {
695        label: "irrefutable_let_patterns",
696        description: r##"detects irrefutable patterns in `if let` and `while let` statements"##,
697        default_severity: Severity::Warning,
698        warn_since: None,
699        deny_since: None,
700    },
701    Lint {
702        label: "keyword_idents_2018",
703        description: r##"detects edition keywords being used as an identifier"##,
704        default_severity: Severity::Allow,
705        warn_since: None,
706        deny_since: None,
707    },
708    Lint {
709        label: "keyword_idents_2024",
710        description: r##"detects edition keywords being used as an identifier"##,
711        default_severity: Severity::Allow,
712        warn_since: None,
713        deny_since: None,
714    },
715    Lint {
716        label: "large_assignments",
717        description: r##"detects large moves or copies"##,
718        default_severity: Severity::Warning,
719        warn_since: None,
720        deny_since: None,
721    },
722    Lint {
723        label: "late_bound_lifetime_arguments",
724        description: r##"detects generic lifetime arguments in path segments with late bound lifetime parameters"##,
725        default_severity: Severity::Warning,
726        warn_since: None,
727        deny_since: None,
728    },
729    Lint {
730        label: "legacy_derive_helpers",
731        description: r##"detects derive helper attributes that are used before they are introduced"##,
732        default_severity: Severity::Error,
733        warn_since: None,
734        deny_since: None,
735    },
736    Lint {
737        label: "let_underscore_drop",
738        description: r##"non-binding let on a type that has a destructor"##,
739        default_severity: Severity::Allow,
740        warn_since: None,
741        deny_since: None,
742    },
743    Lint {
744        label: "let_underscore_lock",
745        description: r##"non-binding let on a synchronization lock"##,
746        default_severity: Severity::Error,
747        warn_since: None,
748        deny_since: None,
749    },
750    Lint {
751        label: "linker_info",
752        description: r##"linker warnings known to be informational-only and not indicative of a problem"##,
753        default_severity: Severity::Allow,
754        warn_since: None,
755        deny_since: None,
756    },
757    Lint {
758        label: "linker_messages",
759        description: r##"warnings emitted at runtime by the target-specific linker program"##,
760        default_severity: Severity::Warning,
761        warn_since: None,
762        deny_since: None,
763    },
764    Lint {
765        label: "long_running_const_eval",
766        description: r##"detects long const eval operations"##,
767        default_severity: Severity::Error,
768        warn_since: None,
769        deny_since: None,
770    },
771    Lint {
772        label: "macro_expanded_macro_exports_accessed_by_absolute_paths",
773        description: r##"macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths"##,
774        default_severity: Severity::Error,
775        warn_since: None,
776        deny_since: None,
777    },
778    Lint {
779        label: "macro_use_extern_crate",
780        description: r##"the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system"##,
781        default_severity: Severity::Allow,
782        warn_since: None,
783        deny_since: None,
784    },
785    Lint {
786        label: "malformed_diagnostic_attributes",
787        description: r##"detects malformed diagnostic attributes"##,
788        default_severity: Severity::Warning,
789        warn_since: None,
790        deny_since: None,
791    },
792    Lint {
793        label: "malformed_diagnostic_filters",
794        description: r##"detects malformed filters in diagnostic attributes"##,
795        default_severity: Severity::Warning,
796        warn_since: None,
797        deny_since: None,
798    },
799    Lint {
800        label: "malformed_diagnostic_format_literals",
801        description: r##"detects diagnostic attribute with malformed diagnostic format literals"##,
802        default_severity: Severity::Warning,
803        warn_since: None,
804        deny_since: None,
805    },
806    Lint {
807        label: "map_unit_fn",
808        description: r##"`Iterator::map` call that discard the iterator's values"##,
809        default_severity: Severity::Warning,
810        warn_since: None,
811        deny_since: None,
812    },
813    Lint {
814        label: "meta_variable_misuse",
815        description: r##"possible meta-variable misuse at macro definition"##,
816        default_severity: Severity::Allow,
817        warn_since: None,
818        deny_since: None,
819    },
820    Lint {
821        label: "method_call_on_diverging_infer_var",
822        description: r##"detects method calls on a result of never-to-any coercion"##,
823        default_severity: Severity::Warning,
824        warn_since: None,
825        deny_since: None,
826    },
827    Lint {
828        label: "mismatched_lifetime_syntaxes",
829        description: r##"detects when a lifetime uses different syntax between arguments and return values"##,
830        default_severity: Severity::Warning,
831        warn_since: None,
832        deny_since: None,
833    },
834    Lint {
835        label: "misplaced_diagnostic_attributes",
836        description: r##"detects diagnostic attributes that are placed on the wrong item"##,
837        default_severity: Severity::Warning,
838        warn_since: None,
839        deny_since: None,
840    },
841    Lint {
842        label: "missing_abi",
843        description: r##"No declared ABI for extern declaration"##,
844        default_severity: Severity::Warning,
845        warn_since: None,
846        deny_since: None,
847    },
848    Lint {
849        label: "missing_copy_implementations",
850        description: r##"detects potentially-forgotten implementations of `Copy`"##,
851        default_severity: Severity::Allow,
852        warn_since: None,
853        deny_since: None,
854    },
855    Lint {
856        label: "missing_debug_implementations",
857        description: r##"detects missing implementations of Debug"##,
858        default_severity: Severity::Allow,
859        warn_since: None,
860        deny_since: None,
861    },
862    Lint {
863        label: "missing_docs",
864        description: r##"detects missing documentation for public members"##,
865        default_severity: Severity::Allow,
866        warn_since: None,
867        deny_since: None,
868    },
869    Lint {
870        label: "missing_gpu_kernel_export_name",
871        description: r##"mangled gpu-kernel function"##,
872        default_severity: Severity::Warning,
873        warn_since: None,
874        deny_since: None,
875    },
876    Lint {
877        label: "missing_unsafe_on_extern",
878        description: r##"detects missing unsafe keyword on extern declarations"##,
879        default_severity: Severity::Allow,
880        warn_since: None,
881        deny_since: None,
882    },
883    Lint {
884        label: "mixed_script_confusables",
885        description: r##"detects Unicode scripts whose mixed script confusables codepoints are solely used"##,
886        default_severity: Severity::Warning,
887        warn_since: None,
888        deny_since: None,
889    },
890    Lint {
891        label: "multiple_supertrait_upcastable",
892        description: r##"detect when a dyn-compatible trait has multiple supertraits"##,
893        default_severity: Severity::Allow,
894        warn_since: None,
895        deny_since: None,
896    },
897    Lint {
898        label: "must_not_suspend",
899        description: r##"use of a `#[must_not_suspend]` value across a yield point"##,
900        default_severity: Severity::Allow,
901        warn_since: None,
902        deny_since: None,
903    },
904    Lint {
905        label: "mutable_transmutes",
906        description: r##"transmuting &T to &mut T is undefined behavior, even if the reference is unused"##,
907        default_severity: Severity::Error,
908        warn_since: None,
909        deny_since: None,
910    },
911    Lint {
912        label: "named_arguments_used_positionally",
913        description: r##"named arguments in format used positionally"##,
914        default_severity: Severity::Warning,
915        warn_since: None,
916        deny_since: None,
917    },
918    Lint {
919        label: "named_asm_labels",
920        description: r##"named labels in inline assembly"##,
921        default_severity: Severity::Error,
922        warn_since: None,
923        deny_since: None,
924    },
925    Lint {
926        label: "never_type_fallback_flowing_into_unsafe",
927        description: r##"never type fallback affecting unsafe function calls"##,
928        default_severity: Severity::Error,
929        warn_since: None,
930        deny_since: None,
931    },
932    Lint {
933        label: "no_mangle_const_items",
934        description: r##"const items will not have their symbols exported"##,
935        default_severity: Severity::Error,
936        warn_since: None,
937        deny_since: None,
938    },
939    Lint {
940        label: "non_ascii_idents",
941        description: r##"detects non-ASCII identifiers"##,
942        default_severity: Severity::Allow,
943        warn_since: None,
944        deny_since: None,
945    },
946    Lint {
947        label: "non_camel_case_types",
948        description: r##"types, variants, traits and type parameters should have camel case names"##,
949        default_severity: Severity::Warning,
950        warn_since: None,
951        deny_since: None,
952    },
953    Lint {
954        label: "non_contiguous_range_endpoints",
955        description: r##"detects off-by-one errors with exclusive range patterns"##,
956        default_severity: Severity::Warning,
957        warn_since: None,
958        deny_since: None,
959    },
960    Lint {
961        label: "non_exhaustive_omitted_patterns",
962        description: r##"detect when patterns of types marked `non_exhaustive` are missed"##,
963        default_severity: Severity::Allow,
964        warn_since: None,
965        deny_since: None,
966    },
967    Lint {
968        label: "non_fmt_panics",
969        description: r##"detect single-argument panic!() invocations in which the argument is not a format string"##,
970        default_severity: Severity::Warning,
971        warn_since: None,
972        deny_since: None,
973    },
974    Lint {
975        label: "non_local_definitions",
976        description: r##"checks for non-local definitions"##,
977        default_severity: Severity::Warning,
978        warn_since: None,
979        deny_since: None,
980    },
981    Lint {
982        label: "non_shorthand_field_patterns",
983        description: r##"using `Struct { x: x }` instead of `Struct { x }` in a pattern"##,
984        default_severity: Severity::Warning,
985        warn_since: None,
986        deny_since: None,
987    },
988    Lint {
989        label: "non_snake_case",
990        description: r##"variables, methods, functions, lifetime parameters and modules should have snake case names"##,
991        default_severity: Severity::Warning,
992        warn_since: None,
993        deny_since: None,
994    },
995    Lint {
996        label: "non_upper_case_globals",
997        description: r##"static constants should have uppercase identifiers"##,
998        default_severity: Severity::Warning,
999        warn_since: None,
1000        deny_since: None,
1001    },
1002    Lint {
1003        label: "noop_method_call",
1004        description: r##"detects the use of well-known noop methods"##,
1005        default_severity: Severity::Warning,
1006        warn_since: None,
1007        deny_since: None,
1008    },
1009    Lint {
1010        label: "opaque_hidden_inferred_bound",
1011        description: r##"detects the use of nested `impl Trait` types in associated type bounds that are not general enough"##,
1012        default_severity: Severity::Warning,
1013        warn_since: None,
1014        deny_since: None,
1015    },
1016    Lint {
1017        label: "out_of_scope_macro_calls",
1018        description: r##"detects out of scope calls to `macro_rules` in key-value attributes"##,
1019        default_severity: Severity::Error,
1020        warn_since: None,
1021        deny_since: None,
1022    },
1023    Lint {
1024        label: "overflowing_literals",
1025        description: r##"literal out of range for its type"##,
1026        default_severity: Severity::Error,
1027        warn_since: None,
1028        deny_since: None,
1029    },
1030    Lint {
1031        label: "overlapping_range_endpoints",
1032        description: r##"detects range patterns with overlapping endpoints"##,
1033        default_severity: Severity::Warning,
1034        warn_since: None,
1035        deny_since: None,
1036    },
1037    Lint {
1038        label: "partial_stack_protector",
1039        description: r##"partial use of stack-protector that was previously accepted and used in practice"##,
1040        default_severity: Severity::Warning,
1041        warn_since: None,
1042        deny_since: None,
1043    },
1044    Lint {
1045        label: "path_statements",
1046        description: r##"path statements with no effect"##,
1047        default_severity: Severity::Warning,
1048        warn_since: None,
1049        deny_since: None,
1050    },
1051    Lint {
1052        label: "patterns_in_fns_without_body",
1053        description: r##"patterns in functions without body were erroneously allowed"##,
1054        default_severity: Severity::Error,
1055        warn_since: None,
1056        deny_since: None,
1057    },
1058    Lint {
1059        label: "private_bounds",
1060        description: r##"private type in secondary interface of an item"##,
1061        default_severity: Severity::Warning,
1062        warn_since: None,
1063        deny_since: None,
1064    },
1065    Lint {
1066        label: "private_interfaces",
1067        description: r##"private type in primary interface of an item"##,
1068        default_severity: Severity::Warning,
1069        warn_since: None,
1070        deny_since: None,
1071    },
1072    Lint {
1073        label: "proc_macro_derive_resolution_fallback",
1074        description: r##"detects proc macro derives using inaccessible names from parent modules"##,
1075        default_severity: Severity::Error,
1076        warn_since: None,
1077        deny_since: None,
1078    },
1079    Lint {
1080        label: "ptr_to_integer_transmute_in_consts",
1081        description: r##"detects pointer to integer transmutes in const functions and associated constants"##,
1082        default_severity: Severity::Warning,
1083        warn_since: None,
1084        deny_since: None,
1085    },
1086    Lint {
1087        label: "pub_use_of_private_extern_crate",
1088        description: r##"detect public re-exports of private extern crates"##,
1089        default_severity: Severity::Error,
1090        warn_since: None,
1091        deny_since: None,
1092    },
1093    Lint {
1094        label: "raw_borrows_via_references",
1095        description: r##"creating raw borrows via references is discouraged"##,
1096        default_severity: Severity::Allow,
1097        warn_since: None,
1098        deny_since: None,
1099    },
1100    Lint {
1101        label: "recursion_depth_exceeding_limit",
1102        description: r##"detects trait solving overflow that only happens with the next solver"##,
1103        default_severity: Severity::Warning,
1104        warn_since: None,
1105        deny_since: None,
1106    },
1107    Lint {
1108        label: "redundant_imports",
1109        description: r##"imports that are redundant due to being imported already"##,
1110        default_severity: Severity::Allow,
1111        warn_since: None,
1112        deny_since: None,
1113    },
1114    Lint {
1115        label: "redundant_lifetimes",
1116        description: r##"detects lifetime parameters that are redundant because they are equal to some other named lifetime"##,
1117        default_severity: Severity::Allow,
1118        warn_since: None,
1119        deny_since: None,
1120    },
1121    Lint {
1122        label: "redundant_semicolons",
1123        description: r##"detects unnecessary trailing semicolons"##,
1124        default_severity: Severity::Warning,
1125        warn_since: None,
1126        deny_since: None,
1127    },
1128    Lint {
1129        label: "refining_impl_trait_internal",
1130        description: r##"impl trait in impl method signature does not match trait method signature"##,
1131        default_severity: Severity::Warning,
1132        warn_since: None,
1133        deny_since: None,
1134    },
1135    Lint {
1136        label: "refining_impl_trait_reachable",
1137        description: r##"impl trait in impl method signature does not match trait method signature"##,
1138        default_severity: Severity::Warning,
1139        warn_since: None,
1140        deny_since: None,
1141    },
1142    Lint {
1143        label: "renamed_and_removed_lints",
1144        description: r##"lints that have been renamed or removed"##,
1145        default_severity: Severity::Warning,
1146        warn_since: None,
1147        deny_since: None,
1148    },
1149    Lint {
1150        label: "repeated_reprs",
1151        description: r##"detects repeated representations in `#[repr(..)]` attributes"##,
1152        default_severity: Severity::Warning,
1153        warn_since: None,
1154        deny_since: None,
1155    },
1156    Lint {
1157        label: "repr_c_enums_larger_than_int",
1158        description: r##"repr(C) enums with discriminant values that do not fit into a C int"##,
1159        default_severity: Severity::Warning,
1160        warn_since: None,
1161        deny_since: None,
1162    },
1163    Lint {
1164        label: "resolving_to_items_shadowing_supertrait_items",
1165        description: r##"detects when a supertrait item is shadowed by a subtrait item"##,
1166        default_severity: Severity::Allow,
1167        warn_since: None,
1168        deny_since: None,
1169    },
1170    Lint {
1171        label: "rtsan_nonblocking_async",
1172        description: r##"detects incompatible uses of `#[sanitize(realtime = "nonblocking")]` on async functions"##,
1173        default_severity: Severity::Warning,
1174        warn_since: None,
1175        deny_since: None,
1176    },
1177    Lint {
1178        label: "rust_2021_incompatible_closure_captures",
1179        description: r##"detects closures affected by Rust 2021 changes"##,
1180        default_severity: Severity::Allow,
1181        warn_since: None,
1182        deny_since: None,
1183    },
1184    Lint {
1185        label: "rust_2021_incompatible_or_patterns",
1186        description: r##"detects usage of old versions of or-patterns"##,
1187        default_severity: Severity::Allow,
1188        warn_since: None,
1189        deny_since: None,
1190    },
1191    Lint {
1192        label: "rust_2021_prefixes_incompatible_syntax",
1193        description: r##"identifiers that will be parsed as a prefix in Rust 2021"##,
1194        default_severity: Severity::Allow,
1195        warn_since: None,
1196        deny_since: None,
1197    },
1198    Lint {
1199        label: "rust_2021_prelude_collisions",
1200        description: r##"detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions"##,
1201        default_severity: Severity::Allow,
1202        warn_since: None,
1203        deny_since: None,
1204    },
1205    Lint {
1206        label: "rust_2024_guarded_string_incompatible_syntax",
1207        description: r##"will be parsed as a guarded string in Rust 2024"##,
1208        default_severity: Severity::Allow,
1209        warn_since: None,
1210        deny_since: None,
1211    },
1212    Lint {
1213        label: "rust_2024_incompatible_pat",
1214        description: r##"detects patterns whose meaning will change in Rust 2024"##,
1215        default_severity: Severity::Allow,
1216        warn_since: None,
1217        deny_since: None,
1218    },
1219    Lint {
1220        label: "rust_2024_prelude_collisions",
1221        description: r##"detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions"##,
1222        default_severity: Severity::Allow,
1223        warn_since: None,
1224        deny_since: None,
1225    },
1226    Lint {
1227        label: "self_constructor_from_outer_item",
1228        description: r##"detect unsupported use of `Self` from outer item"##,
1229        default_severity: Severity::Warning,
1230        warn_since: None,
1231        deny_since: None,
1232    },
1233    Lint {
1234        label: "semicolon_in_expressions_from_macros",
1235        description: r##"trailing semicolon in macro body used as expression"##,
1236        default_severity: Severity::Error,
1237        warn_since: None,
1238        deny_since: None,
1239    },
1240    Lint {
1241        label: "semicolon_in_expressions_from_non_local_macros",
1242        description: r##"trailing semicolon in macro body used as expression"##,
1243        default_severity: Severity::Warning,
1244        warn_since: None,
1245        deny_since: None,
1246    },
1247    Lint {
1248        label: "shadowing_supertrait_items",
1249        description: r##"detects when a supertrait item is shadowed by a subtrait item"##,
1250        default_severity: Severity::Allow,
1251        warn_since: None,
1252        deny_since: None,
1253    },
1254    Lint {
1255        label: "single_use_lifetimes",
1256        description: r##"detects lifetime parameters that are only used once"##,
1257        default_severity: Severity::Allow,
1258        warn_since: None,
1259        deny_since: None,
1260    },
1261    Lint {
1262        label: "special_module_name",
1263        description: r##"module declarations for files with a special meaning"##,
1264        default_severity: Severity::Warning,
1265        warn_since: None,
1266        deny_since: None,
1267    },
1268    Lint {
1269        label: "stable_features",
1270        description: r##"stable features found in `#[feature]` directive"##,
1271        default_severity: Severity::Warning,
1272        warn_since: None,
1273        deny_since: None,
1274    },
1275    Lint {
1276        label: "static_mut_refs",
1277        description: r##"creating a shared reference to mutable static"##,
1278        default_severity: Severity::Warning,
1279        warn_since: None,
1280        deny_since: Some(Edition::Edition2024),
1281    },
1282    Lint {
1283        label: "suspicious_double_ref_op",
1284        description: r##"suspicious call of trait method on `&&T`"##,
1285        default_severity: Severity::Warning,
1286        warn_since: None,
1287        deny_since: None,
1288    },
1289    Lint {
1290        label: "suspicious_runtime_symbol_definitions",
1291        description: r##"suspicious definition of a symbol used by the standard library"##,
1292        default_severity: Severity::Warning,
1293        warn_since: None,
1294        deny_since: None,
1295    },
1296    Lint {
1297        label: "tail_call_track_caller",
1298        description: r##"detects tail calls of functions marked with `#[track_caller]`"##,
1299        default_severity: Severity::Warning,
1300        warn_since: None,
1301        deny_since: None,
1302    },
1303    Lint {
1304        label: "tail_expr_drop_order",
1305        description: r##"Detect and warn on significant change in drop order in tail expression location"##,
1306        default_severity: Severity::Allow,
1307        warn_since: None,
1308        deny_since: None,
1309    },
1310    Lint {
1311        label: "test_unstable_lint",
1312        description: r##"this unstable lint is only for testing"##,
1313        default_severity: Severity::Error,
1314        warn_since: None,
1315        deny_since: None,
1316    },
1317    Lint {
1318        label: "text_direction_codepoint_in_comment",
1319        description: r##"invisible directionality-changing codepoints in comment"##,
1320        default_severity: Severity::Error,
1321        warn_since: None,
1322        deny_since: None,
1323    },
1324    Lint {
1325        label: "text_direction_codepoint_in_literal",
1326        description: r##"detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows"##,
1327        default_severity: Severity::Error,
1328        warn_since: None,
1329        deny_since: None,
1330    },
1331    Lint {
1332        label: "trivial_bounds",
1333        description: r##"these bounds don't depend on an type parameters"##,
1334        default_severity: Severity::Warning,
1335        warn_since: None,
1336        deny_since: None,
1337    },
1338    Lint {
1339        label: "trivial_casts",
1340        description: r##"detects trivial casts which could be removed"##,
1341        default_severity: Severity::Allow,
1342        warn_since: None,
1343        deny_since: None,
1344    },
1345    Lint {
1346        label: "trivial_numeric_casts",
1347        description: r##"detects trivial casts of numeric types which could be removed"##,
1348        default_severity: Severity::Allow,
1349        warn_since: None,
1350        deny_since: None,
1351    },
1352    Lint {
1353        label: "type_alias_bounds",
1354        description: r##"bounds in type aliases are not enforced"##,
1355        default_severity: Severity::Warning,
1356        warn_since: None,
1357        deny_since: None,
1358    },
1359    Lint {
1360        label: "tyvar_behind_raw_pointer",
1361        description: r##"raw pointer to an inference variable"##,
1362        default_severity: Severity::Warning,
1363        warn_since: None,
1364        deny_since: None,
1365    },
1366    Lint {
1367        label: "uncommon_codepoints",
1368        description: r##"detects uncommon Unicode codepoints in identifiers"##,
1369        default_severity: Severity::Warning,
1370        warn_since: None,
1371        deny_since: None,
1372    },
1373    Lint {
1374        label: "unconditional_panic",
1375        description: r##"operation will cause a panic at runtime"##,
1376        default_severity: Severity::Error,
1377        warn_since: None,
1378        deny_since: None,
1379    },
1380    Lint {
1381        label: "unconditional_recursion",
1382        description: r##"functions that cannot return without calling themselves"##,
1383        default_severity: Severity::Warning,
1384        warn_since: None,
1385        deny_since: None,
1386    },
1387    Lint {
1388        label: "uncovered_param_in_projection",
1389        description: r##"impl contains type parameters that are not covered"##,
1390        default_severity: Severity::Warning,
1391        warn_since: None,
1392        deny_since: None,
1393    },
1394    Lint {
1395        label: "undropped_manually_drops",
1396        description: r##"calls to `drop` and `drop_in_place` where the dropped value is `std::mem::ManuallyDrop`"##,
1397        default_severity: Severity::Error,
1398        warn_since: None,
1399        deny_since: None,
1400    },
1401    Lint {
1402        label: "unevaluated_default_field_value",
1403        description: r##"detects default field values on types that have const parameters"##,
1404        default_severity: Severity::Warning,
1405        warn_since: None,
1406        deny_since: None,
1407    },
1408    Lint {
1409        label: "unexpected_cfgs",
1410        description: r##"detects unexpected names and values in `#[cfg]` conditions"##,
1411        default_severity: Severity::Warning,
1412        warn_since: None,
1413        deny_since: None,
1414    },
1415    Lint {
1416        label: "unfulfilled_lint_expectations",
1417        description: r##"unfulfilled lint expectation"##,
1418        default_severity: Severity::Warning,
1419        warn_since: None,
1420        deny_since: None,
1421    },
1422    Lint {
1423        label: "ungated_async_fn_track_caller",
1424        description: r##"enabling track_caller on an async fn is a no-op unless the async_fn_track_caller feature is enabled"##,
1425        default_severity: Severity::Warning,
1426        warn_since: None,
1427        deny_since: None,
1428    },
1429    Lint {
1430        label: "uninhabited_static",
1431        description: r##"uninhabited static"##,
1432        default_severity: Severity::Error,
1433        warn_since: None,
1434        deny_since: None,
1435    },
1436    Lint {
1437        label: "unit_bindings",
1438        description: r##"binding is useless because it has the unit `()` type"##,
1439        default_severity: Severity::Allow,
1440        warn_since: None,
1441        deny_since: None,
1442    },
1443    Lint {
1444        label: "unknown_crate_types",
1445        description: r##"unknown crate type found in `#[crate_type]` directive"##,
1446        default_severity: Severity::Error,
1447        warn_since: None,
1448        deny_since: None,
1449    },
1450    Lint {
1451        label: "unknown_diagnostic_attributes",
1452        description: r##"detects unknown diagnostic attributes"##,
1453        default_severity: Severity::Warning,
1454        warn_since: None,
1455        deny_since: None,
1456    },
1457    Lint {
1458        label: "unknown_lints",
1459        description: r##"unrecognized lint attribute"##,
1460        default_severity: Severity::Warning,
1461        warn_since: None,
1462        deny_since: None,
1463    },
1464    Lint {
1465        label: "unnameable_test_items",
1466        description: r##"detects an item that cannot be named being marked as `#[test_case]`"##,
1467        default_severity: Severity::Warning,
1468        warn_since: None,
1469        deny_since: None,
1470    },
1471    Lint {
1472        label: "unnameable_types",
1473        description: r##"effective visibility of a type is larger than the area in which it can be named"##,
1474        default_severity: Severity::Allow,
1475        warn_since: None,
1476        deny_since: None,
1477    },
1478    Lint {
1479        label: "unnecessary_transmutes",
1480        description: r##"detects transmutes that can also be achieved by other operations"##,
1481        default_severity: Severity::Warning,
1482        warn_since: None,
1483        deny_since: None,
1484    },
1485    Lint {
1486        label: "unpredictable_function_pointer_comparisons",
1487        description: r##"detects unpredictable function pointer comparisons"##,
1488        default_severity: Severity::Warning,
1489        warn_since: None,
1490        deny_since: None,
1491    },
1492    Lint {
1493        label: "unqualified_local_imports",
1494        description: r##"`use` of a local item without leading `self::`, `super::`, or `crate::`"##,
1495        default_severity: Severity::Allow,
1496        warn_since: None,
1497        deny_since: None,
1498    },
1499    Lint {
1500        label: "unreachable_cfg_select_predicates",
1501        description: r##"detects unreachable configuration predicates in the cfg_select macro"##,
1502        default_severity: Severity::Warning,
1503        warn_since: None,
1504        deny_since: None,
1505    },
1506    Lint {
1507        label: "unreachable_code",
1508        description: r##"detects unreachable code paths"##,
1509        default_severity: Severity::Warning,
1510        warn_since: None,
1511        deny_since: None,
1512    },
1513    Lint {
1514        label: "unreachable_patterns",
1515        description: r##"detects unreachable patterns"##,
1516        default_severity: Severity::Warning,
1517        warn_since: None,
1518        deny_since: None,
1519    },
1520    Lint {
1521        label: "unreachable_pub",
1522        description: r##"`pub` items not reachable from crate root"##,
1523        default_severity: Severity::Allow,
1524        warn_since: None,
1525        deny_since: None,
1526    },
1527    Lint {
1528        label: "unsafe_attr_outside_unsafe",
1529        description: r##"detects unsafe attributes outside of unsafe"##,
1530        default_severity: Severity::Allow,
1531        warn_since: None,
1532        deny_since: None,
1533    },
1534    Lint {
1535        label: "unsafe_code",
1536        description: r##"usage of `unsafe` code and other potentially unsound constructs"##,
1537        default_severity: Severity::Allow,
1538        warn_since: None,
1539        deny_since: None,
1540    },
1541    Lint {
1542        label: "unsafe_op_in_unsafe_fn",
1543        description: r##"unsafe operations in unsafe functions without an explicit unsafe block are deprecated"##,
1544        default_severity: Severity::Allow,
1545        warn_since: Some(Edition::Edition2024),
1546        deny_since: None,
1547    },
1548    Lint {
1549        label: "unstable_features",
1550        description: r##"enabling unstable features"##,
1551        default_severity: Severity::Allow,
1552        warn_since: None,
1553        deny_since: None,
1554    },
1555    Lint {
1556        label: "unstable_imports",
1557        description: r##"lints on accidentally allowed unstable imports"##,
1558        default_severity: Severity::Error,
1559        warn_since: None,
1560        deny_since: None,
1561    },
1562    Lint {
1563        label: "unstable_name_collisions",
1564        description: r##"detects name collision with an existing but unstable method"##,
1565        default_severity: Severity::Warning,
1566        warn_since: None,
1567        deny_since: None,
1568    },
1569    Lint {
1570        label: "unstable_syntax_pre_expansion",
1571        description: r##"unstable syntax can change at any point in the future, causing a hard error!"##,
1572        default_severity: Severity::Warning,
1573        warn_since: None,
1574        deny_since: None,
1575    },
1576    Lint {
1577        label: "unsupported_calling_conventions",
1578        description: r##"use of unsupported calling convention"##,
1579        default_severity: Severity::Warning,
1580        warn_since: None,
1581        deny_since: None,
1582    },
1583    Lint {
1584        label: "unused_allocation",
1585        description: r##"detects unnecessary allocations that can be eliminated"##,
1586        default_severity: Severity::Warning,
1587        warn_since: None,
1588        deny_since: None,
1589    },
1590    Lint {
1591        label: "unused_assignments",
1592        description: r##"detect assignments that will never be read"##,
1593        default_severity: Severity::Warning,
1594        warn_since: None,
1595        deny_since: None,
1596    },
1597    Lint {
1598        label: "unused_associated_type_bounds",
1599        description: r##"detects unused `Foo = Bar` bounds in `dyn Trait<Foo = Bar>`"##,
1600        default_severity: Severity::Warning,
1601        warn_since: None,
1602        deny_since: None,
1603    },
1604    Lint {
1605        label: "unused_attributes",
1606        description: r##"detects attributes that were not used by the compiler"##,
1607        default_severity: Severity::Warning,
1608        warn_since: None,
1609        deny_since: None,
1610    },
1611    Lint {
1612        label: "unused_braces",
1613        description: r##"unnecessary braces around an expression"##,
1614        default_severity: Severity::Warning,
1615        warn_since: None,
1616        deny_since: None,
1617    },
1618    Lint {
1619        label: "unused_comparisons",
1620        description: r##"comparisons made useless by limits of the types involved"##,
1621        default_severity: Severity::Warning,
1622        warn_since: None,
1623        deny_since: None,
1624    },
1625    Lint {
1626        label: "unused_crate_dependencies",
1627        description: r##"crate dependencies that are never used"##,
1628        default_severity: Severity::Allow,
1629        warn_since: None,
1630        deny_since: None,
1631    },
1632    Lint {
1633        label: "unused_doc_comments",
1634        description: r##"detects doc comments that aren't used by rustdoc"##,
1635        default_severity: Severity::Warning,
1636        warn_since: None,
1637        deny_since: None,
1638    },
1639    Lint {
1640        label: "unused_extern_crates",
1641        description: r##"extern crates that are never used"##,
1642        default_severity: Severity::Allow,
1643        warn_since: None,
1644        deny_since: None,
1645    },
1646    Lint {
1647        label: "unused_features",
1648        description: r##"unused features found in crate-level `#[feature]` directives"##,
1649        default_severity: Severity::Warning,
1650        warn_since: None,
1651        deny_since: None,
1652    },
1653    Lint {
1654        label: "unused_import_braces",
1655        description: r##"unnecessary braces around an imported item"##,
1656        default_severity: Severity::Allow,
1657        warn_since: None,
1658        deny_since: None,
1659    },
1660    Lint {
1661        label: "unused_imports",
1662        description: r##"imports that are never used"##,
1663        default_severity: Severity::Warning,
1664        warn_since: None,
1665        deny_since: None,
1666    },
1667    Lint {
1668        label: "unused_labels",
1669        description: r##"detects labels that are never used"##,
1670        default_severity: Severity::Warning,
1671        warn_since: None,
1672        deny_since: None,
1673    },
1674    Lint {
1675        label: "unused_lifetimes",
1676        description: r##"detects lifetime parameters that are never used"##,
1677        default_severity: Severity::Allow,
1678        warn_since: None,
1679        deny_since: None,
1680    },
1681    Lint {
1682        label: "unused_macro_rules",
1683        description: r##"detects macro rules that were not used"##,
1684        default_severity: Severity::Allow,
1685        warn_since: None,
1686        deny_since: None,
1687    },
1688    Lint {
1689        label: "unused_macros",
1690        description: r##"detects macros that were not used"##,
1691        default_severity: Severity::Warning,
1692        warn_since: None,
1693        deny_since: None,
1694    },
1695    Lint {
1696        label: "unused_must_use",
1697        description: r##"unused result of a type flagged as `#[must_use]`"##,
1698        default_severity: Severity::Warning,
1699        warn_since: None,
1700        deny_since: None,
1701    },
1702    Lint {
1703        label: "unused_mut",
1704        description: r##"detect mut variables which don't need to be mutable"##,
1705        default_severity: Severity::Warning,
1706        warn_since: None,
1707        deny_since: None,
1708    },
1709    Lint {
1710        label: "unused_parens",
1711        description: r##"`if`, `match`, `while` and `return` do not need parentheses"##,
1712        default_severity: Severity::Warning,
1713        warn_since: None,
1714        deny_since: None,
1715    },
1716    Lint {
1717        label: "unused_qualifications",
1718        description: r##"detects unnecessarily qualified names"##,
1719        default_severity: Severity::Allow,
1720        warn_since: None,
1721        deny_since: None,
1722    },
1723    Lint {
1724        label: "unused_results",
1725        description: r##"unused result of an expression in a statement"##,
1726        default_severity: Severity::Allow,
1727        warn_since: None,
1728        deny_since: None,
1729    },
1730    Lint {
1731        label: "unused_unsafe",
1732        description: r##"unnecessary use of an `unsafe` block"##,
1733        default_severity: Severity::Warning,
1734        warn_since: None,
1735        deny_since: None,
1736    },
1737    Lint {
1738        label: "unused_variables",
1739        description: r##"detect variables which are not used in any way"##,
1740        default_severity: Severity::Warning,
1741        warn_since: None,
1742        deny_since: None,
1743    },
1744    Lint {
1745        label: "unused_visibilities",
1746        description: r##"detect visibility qualifiers on `const _` items"##,
1747        default_severity: Severity::Warning,
1748        warn_since: None,
1749        deny_since: None,
1750    },
1751    Lint {
1752        label: "useless_deprecated",
1753        description: r##"detects deprecation attributes with no effect"##,
1754        default_severity: Severity::Error,
1755        warn_since: None,
1756        deny_since: None,
1757    },
1758    Lint {
1759        label: "useless_ptr_null_checks",
1760        description: r##"useless checking of non-null-typed pointer"##,
1761        default_severity: Severity::Warning,
1762        warn_since: None,
1763        deny_since: None,
1764    },
1765    Lint {
1766        label: "uses_power_alignment",
1767        description: r##"Structs do not follow the power alignment rule under repr(C)"##,
1768        default_severity: Severity::Warning,
1769        warn_since: None,
1770        deny_since: None,
1771    },
1772    Lint {
1773        label: "varargs_without_pattern",
1774        description: r##"detects usage of `...` arguments without a pattern in non-foreign items"##,
1775        default_severity: Severity::Error,
1776        warn_since: None,
1777        deny_since: None,
1778    },
1779    Lint {
1780        label: "variant_size_differences",
1781        description: r##"detects enums with widely varying variant sizes"##,
1782        default_severity: Severity::Allow,
1783        warn_since: None,
1784        deny_since: None,
1785    },
1786    Lint {
1787        label: "warnings",
1788        description: r##"mass-change the level for lints which produce warnings"##,
1789        default_severity: Severity::Warning,
1790        warn_since: None,
1791        deny_since: None,
1792    },
1793    Lint {
1794        label: "while_true",
1795        description: r##"suggest using `loop { }` instead of `while true { }`"##,
1796        default_severity: Severity::Warning,
1797        warn_since: None,
1798        deny_since: None,
1799    },
1800    Lint {
1801        label: "x86_softfloat_sse",
1802        description: r##"detects code that could be affected by LLVM backend issues on x86 softfloat targets"##,
1803        default_severity: Severity::Error,
1804        warn_since: None,
1805        deny_since: None,
1806    },
1807    Lint {
1808        label: "deprecated_safe",
1809        description: r##"lint group for: deprecated-safe-2024"##,
1810        default_severity: Severity::Allow,
1811        warn_since: None,
1812        deny_since: None,
1813    },
1814    Lint {
1815        label: "future_incompatible",
1816        description: r##"lint group for: internal-eq-trait-method-impls, aarch64-softfloat-neon, ambiguous-associated-items, ambiguous-derive-helpers, ambiguous-glob-imported-traits, ambiguous-glob-imports, ambiguous-import-visibilities, ambiguous-panic-imports, coherence-leak-check, conflicting-repr-hints, const-evaluatable-unchecked, float-literal-f32-fallback, forbidden-lint-groups, ill-formed-attribute-input, invalid-macro-export-arguments, invalid-type-param-default, late-bound-lifetime-arguments, legacy-derive-helpers, macro-expanded-macro-exports-accessed-by-absolute-paths, method-call-on-diverging-infer-var, out-of-scope-macro-calls, partial-stack-protector, patterns-in-fns-without-body, proc-macro-derive-resolution-fallback, pub-use-of-private-extern-crate, recursion-depth-exceeding-limit, repr-c-enums-larger-than-int, self-constructor-from-outer-item, semicolon-in-expressions-from-macros, semicolon-in-expressions-from-non-local-macros, uncovered-param-in-projection, uninhabited-static, unstable-imports, unstable-name-collisions, unstable-syntax-pre-expansion, unsupported-calling-conventions, varargs-without-pattern, x86-softfloat-sse"##,
1817        default_severity: Severity::Allow,
1818        warn_since: None,
1819        deny_since: None,
1820    },
1821    Lint {
1822        label: "keyword_idents",
1823        description: r##"lint group for: keyword-idents-2018, keyword-idents-2024"##,
1824        default_severity: Severity::Allow,
1825        warn_since: None,
1826        deny_since: None,
1827    },
1828    Lint {
1829        label: "let_underscore",
1830        description: r##"lint group for: let-underscore-drop, let-underscore-lock"##,
1831        default_severity: Severity::Allow,
1832        warn_since: None,
1833        deny_since: None,
1834    },
1835    Lint {
1836        label: "nonstandard_style",
1837        description: r##"lint group for: non-camel-case-types, non-snake-case, non-upper-case-globals"##,
1838        default_severity: Severity::Allow,
1839        warn_since: None,
1840        deny_since: None,
1841    },
1842    Lint {
1843        label: "refining_impl_trait",
1844        description: r##"lint group for: refining-impl-trait-reachable, refining-impl-trait-internal"##,
1845        default_severity: Severity::Allow,
1846        warn_since: None,
1847        deny_since: None,
1848    },
1849    Lint {
1850        label: "rust_2018_compatibility",
1851        description: r##"lint group for: keyword-idents-2018, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer"##,
1852        default_severity: Severity::Allow,
1853        warn_since: None,
1854        deny_since: None,
1855    },
1856    Lint {
1857        label: "rust_2018_idioms",
1858        description: r##"lint group for: bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements"##,
1859        default_severity: Severity::Allow,
1860        warn_since: None,
1861        deny_since: None,
1862    },
1863    Lint {
1864        label: "rust_2021_compatibility",
1865        description: r##"lint group for: ellipsis-inclusive-range-patterns, non-fmt-panics, array-into-iter, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prefixes-incompatible-syntax, rust-2021-prelude-collisions"##,
1866        default_severity: Severity::Allow,
1867        warn_since: None,
1868        deny_since: None,
1869    },
1870    Lint {
1871        label: "rust_2024_compatibility",
1872        description: r##"lint group for: keyword-idents-2024, edition-2024-expr-fragment-specifier, if-let-rescope, impl-trait-overcaptures, boxed-slice-into-iter, static-mut-refs, deprecated-safe-2024, missing-unsafe-on-extern, rust-2024-guarded-string-incompatible-syntax, rust-2024-incompatible-pat, rust-2024-prelude-collisions, tail-expr-drop-order, unsafe-attr-outside-unsafe, unsafe-op-in-unsafe-fn"##,
1873        default_severity: Severity::Allow,
1874        warn_since: None,
1875        deny_since: None,
1876    },
1877    Lint {
1878        label: "unknown_or_malformed_diagnostic_attributes",
1879        description: r##"lint group for: malformed-diagnostic-attributes, malformed-diagnostic-format-literals, misplaced-diagnostic-attributes, unknown-diagnostic-attributes"##,
1880        default_severity: Severity::Allow,
1881        warn_since: None,
1882        deny_since: None,
1883    },
1884    Lint {
1885        label: "unused",
1886        description: r##"lint group for: unused-imports, unused-variables, unused-visibilities, unused-assignments, dead-code, unused-mut, unreachable-cfg-select-predicates, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons, map-unit-fn, repeated-reprs"##,
1887        default_severity: Severity::Allow,
1888        warn_since: None,
1889        deny_since: None,
1890    },
1891];
1892
1893pub const DEFAULT_LINT_GROUPS: &[LintGroup] = &[
1894    LintGroup {
1895        lint: Lint {
1896            label: "deprecated_safe",
1897            description: r##"lint group for: deprecated-safe-2024"##,
1898            default_severity: Severity::Allow,
1899            warn_since: None,
1900            deny_since: None,
1901        },
1902        children: &["deprecated_safe_2024"],
1903    },
1904    LintGroup {
1905        lint: Lint {
1906            label: "future_incompatible",
1907            description: r##"lint group for: internal-eq-trait-method-impls, aarch64-softfloat-neon, ambiguous-associated-items, ambiguous-derive-helpers, ambiguous-glob-imported-traits, ambiguous-glob-imports, ambiguous-import-visibilities, ambiguous-panic-imports, coherence-leak-check, conflicting-repr-hints, const-evaluatable-unchecked, float-literal-f32-fallback, forbidden-lint-groups, ill-formed-attribute-input, invalid-macro-export-arguments, invalid-type-param-default, late-bound-lifetime-arguments, legacy-derive-helpers, macro-expanded-macro-exports-accessed-by-absolute-paths, method-call-on-diverging-infer-var, out-of-scope-macro-calls, partial-stack-protector, patterns-in-fns-without-body, proc-macro-derive-resolution-fallback, pub-use-of-private-extern-crate, recursion-depth-exceeding-limit, repr-c-enums-larger-than-int, self-constructor-from-outer-item, semicolon-in-expressions-from-macros, semicolon-in-expressions-from-non-local-macros, uncovered-param-in-projection, uninhabited-static, unstable-imports, unstable-name-collisions, unstable-syntax-pre-expansion, unsupported-calling-conventions, varargs-without-pattern, x86-softfloat-sse"##,
1908            default_severity: Severity::Allow,
1909            warn_since: None,
1910            deny_since: None,
1911        },
1912        children: &[
1913            "internal_eq_trait_method_impls",
1914            "aarch64_softfloat_neon",
1915            "ambiguous_associated_items",
1916            "ambiguous_derive_helpers",
1917            "ambiguous_glob_imported_traits",
1918            "ambiguous_glob_imports",
1919            "ambiguous_import_visibilities",
1920            "ambiguous_panic_imports",
1921            "coherence_leak_check",
1922            "conflicting_repr_hints",
1923            "const_evaluatable_unchecked",
1924            "float_literal_f32_fallback",
1925            "forbidden_lint_groups",
1926            "ill_formed_attribute_input",
1927            "invalid_macro_export_arguments",
1928            "invalid_type_param_default",
1929            "late_bound_lifetime_arguments",
1930            "legacy_derive_helpers",
1931            "macro_expanded_macro_exports_accessed_by_absolute_paths",
1932            "method_call_on_diverging_infer_var",
1933            "out_of_scope_macro_calls",
1934            "partial_stack_protector",
1935            "patterns_in_fns_without_body",
1936            "proc_macro_derive_resolution_fallback",
1937            "pub_use_of_private_extern_crate",
1938            "recursion_depth_exceeding_limit",
1939            "repr_c_enums_larger_than_int",
1940            "self_constructor_from_outer_item",
1941            "semicolon_in_expressions_from_macros",
1942            "semicolon_in_expressions_from_non_local_macros",
1943            "uncovered_param_in_projection",
1944            "uninhabited_static",
1945            "unstable_imports",
1946            "unstable_name_collisions",
1947            "unstable_syntax_pre_expansion",
1948            "unsupported_calling_conventions",
1949            "varargs_without_pattern",
1950            "x86_softfloat_sse",
1951        ],
1952    },
1953    LintGroup {
1954        lint: Lint {
1955            label: "keyword_idents",
1956            description: r##"lint group for: keyword-idents-2018, keyword-idents-2024"##,
1957            default_severity: Severity::Allow,
1958            warn_since: None,
1959            deny_since: None,
1960        },
1961        children: &["keyword_idents_2018", "keyword_idents_2024"],
1962    },
1963    LintGroup {
1964        lint: Lint {
1965            label: "let_underscore",
1966            description: r##"lint group for: let-underscore-drop, let-underscore-lock"##,
1967            default_severity: Severity::Allow,
1968            warn_since: None,
1969            deny_since: None,
1970        },
1971        children: &["let_underscore_drop", "let_underscore_lock"],
1972    },
1973    LintGroup {
1974        lint: Lint {
1975            label: "nonstandard_style",
1976            description: r##"lint group for: non-camel-case-types, non-snake-case, non-upper-case-globals"##,
1977            default_severity: Severity::Allow,
1978            warn_since: None,
1979            deny_since: None,
1980        },
1981        children: &["non_camel_case_types", "non_snake_case", "non_upper_case_globals"],
1982    },
1983    LintGroup {
1984        lint: Lint {
1985            label: "refining_impl_trait",
1986            description: r##"lint group for: refining-impl-trait-reachable, refining-impl-trait-internal"##,
1987            default_severity: Severity::Allow,
1988            warn_since: None,
1989            deny_since: None,
1990        },
1991        children: &["refining_impl_trait_reachable", "refining_impl_trait_internal"],
1992    },
1993    LintGroup {
1994        lint: Lint {
1995            label: "rust_2018_compatibility",
1996            description: r##"lint group for: keyword-idents-2018, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer"##,
1997            default_severity: Severity::Allow,
1998            warn_since: None,
1999            deny_since: None,
2000        },
2001        children: &[
2002            "keyword_idents_2018",
2003            "anonymous_parameters",
2004            "absolute_paths_not_starting_with_crate",
2005            "tyvar_behind_raw_pointer",
2006        ],
2007    },
2008    LintGroup {
2009        lint: Lint {
2010            label: "rust_2018_idioms",
2011            description: r##"lint group for: bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements"##,
2012            default_severity: Severity::Allow,
2013            warn_since: None,
2014            deny_since: None,
2015        },
2016        children: &[
2017            "bare_trait_objects",
2018            "unused_extern_crates",
2019            "ellipsis_inclusive_range_patterns",
2020            "elided_lifetimes_in_paths",
2021            "explicit_outlives_requirements",
2022        ],
2023    },
2024    LintGroup {
2025        lint: Lint {
2026            label: "rust_2021_compatibility",
2027            description: r##"lint group for: ellipsis-inclusive-range-patterns, non-fmt-panics, array-into-iter, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prefixes-incompatible-syntax, rust-2021-prelude-collisions"##,
2028            default_severity: Severity::Allow,
2029            warn_since: None,
2030            deny_since: None,
2031        },
2032        children: &[
2033            "ellipsis_inclusive_range_patterns",
2034            "non_fmt_panics",
2035            "array_into_iter",
2036            "bare_trait_objects",
2037            "rust_2021_incompatible_closure_captures",
2038            "rust_2021_incompatible_or_patterns",
2039            "rust_2021_prefixes_incompatible_syntax",
2040            "rust_2021_prelude_collisions",
2041        ],
2042    },
2043    LintGroup {
2044        lint: Lint {
2045            label: "rust_2024_compatibility",
2046            description: r##"lint group for: keyword-idents-2024, edition-2024-expr-fragment-specifier, if-let-rescope, impl-trait-overcaptures, boxed-slice-into-iter, static-mut-refs, deprecated-safe-2024, missing-unsafe-on-extern, rust-2024-guarded-string-incompatible-syntax, rust-2024-incompatible-pat, rust-2024-prelude-collisions, tail-expr-drop-order, unsafe-attr-outside-unsafe, unsafe-op-in-unsafe-fn"##,
2047            default_severity: Severity::Allow,
2048            warn_since: None,
2049            deny_since: None,
2050        },
2051        children: &[
2052            "keyword_idents_2024",
2053            "edition_2024_expr_fragment_specifier",
2054            "if_let_rescope",
2055            "impl_trait_overcaptures",
2056            "boxed_slice_into_iter",
2057            "static_mut_refs",
2058            "deprecated_safe_2024",
2059            "missing_unsafe_on_extern",
2060            "rust_2024_guarded_string_incompatible_syntax",
2061            "rust_2024_incompatible_pat",
2062            "rust_2024_prelude_collisions",
2063            "tail_expr_drop_order",
2064            "unsafe_attr_outside_unsafe",
2065            "unsafe_op_in_unsafe_fn",
2066        ],
2067    },
2068    LintGroup {
2069        lint: Lint {
2070            label: "unknown_or_malformed_diagnostic_attributes",
2071            description: r##"lint group for: malformed-diagnostic-attributes, malformed-diagnostic-format-literals, misplaced-diagnostic-attributes, unknown-diagnostic-attributes"##,
2072            default_severity: Severity::Allow,
2073            warn_since: None,
2074            deny_since: None,
2075        },
2076        children: &[
2077            "malformed_diagnostic_attributes",
2078            "malformed_diagnostic_format_literals",
2079            "misplaced_diagnostic_attributes",
2080            "unknown_diagnostic_attributes",
2081        ],
2082    },
2083    LintGroup {
2084        lint: Lint {
2085            label: "unused",
2086            description: r##"lint group for: unused-imports, unused-variables, unused-visibilities, unused-assignments, dead-code, unused-mut, unreachable-cfg-select-predicates, unreachable-code, unreachable-patterns, unused-must-use, unused-unsafe, path-statements, unused-attributes, unused-macros, unused-macro-rules, unused-allocation, unused-doc-comments, unused-extern-crates, unused-features, unused-labels, unused-parens, unused-braces, redundant-semicolons, map-unit-fn, repeated-reprs"##,
2087            default_severity: Severity::Allow,
2088            warn_since: None,
2089            deny_since: None,
2090        },
2091        children: &[
2092            "unused_imports",
2093            "unused_variables",
2094            "unused_visibilities",
2095            "unused_assignments",
2096            "dead_code",
2097            "unused_mut",
2098            "unreachable_cfg_select_predicates",
2099            "unreachable_code",
2100            "unreachable_patterns",
2101            "unused_must_use",
2102            "unused_unsafe",
2103            "path_statements",
2104            "unused_attributes",
2105            "unused_macros",
2106            "unused_macro_rules",
2107            "unused_allocation",
2108            "unused_doc_comments",
2109            "unused_extern_crates",
2110            "unused_features",
2111            "unused_labels",
2112            "unused_parens",
2113            "unused_braces",
2114            "redundant_semicolons",
2115            "map_unit_fn",
2116            "repeated_reprs",
2117        ],
2118    },
2119];
2120
2121pub const RUSTDOC_LINTS: &[Lint] = &[
2122    Lint {
2123        label: "rustdoc::bare_urls",
2124        description: r##"detects URLs that are not hyperlinks"##,
2125        default_severity: Severity::Warning,
2126        warn_since: None,
2127        deny_since: None,
2128    },
2129    Lint {
2130        label: "rustdoc::broken_footnote",
2131        description: r##"detects footnote references with no associated definition"##,
2132        default_severity: Severity::Warning,
2133        warn_since: None,
2134        deny_since: None,
2135    },
2136    Lint {
2137        label: "rustdoc::broken_intra_doc_links",
2138        description: r##"failures in resolving intra-doc link targets"##,
2139        default_severity: Severity::Warning,
2140        warn_since: None,
2141        deny_since: None,
2142    },
2143    Lint {
2144        label: "rustdoc::invalid_codeblock_attributes",
2145        description: r##"codeblock attribute looks a lot like a known one"##,
2146        default_severity: Severity::Warning,
2147        warn_since: None,
2148        deny_since: None,
2149    },
2150    Lint {
2151        label: "rustdoc::invalid_html_tags",
2152        description: r##"detects invalid HTML tags in doc comments"##,
2153        default_severity: Severity::Warning,
2154        warn_since: None,
2155        deny_since: None,
2156    },
2157    Lint {
2158        label: "rustdoc::invalid_markdown_table",
2159        description: r##"detects unescaped pipe in table rows in doc comments"##,
2160        default_severity: Severity::Warning,
2161        warn_since: None,
2162        deny_since: None,
2163    },
2164    Lint {
2165        label: "rustdoc::invalid_rust_codeblocks",
2166        description: r##"codeblock could not be parsed as valid Rust or is empty"##,
2167        default_severity: Severity::Warning,
2168        warn_since: None,
2169        deny_since: None,
2170    },
2171    Lint {
2172        label: "rustdoc::missing_crate_level_docs",
2173        description: r##"detects crates with no crate-level documentation"##,
2174        default_severity: Severity::Allow,
2175        warn_since: None,
2176        deny_since: None,
2177    },
2178    Lint {
2179        label: "rustdoc::missing_doc_code_examples",
2180        description: r##"detects publicly-exported items without code samples in their documentation"##,
2181        default_severity: Severity::Allow,
2182        warn_since: None,
2183        deny_since: None,
2184    },
2185    Lint {
2186        label: "rustdoc::private_doc_tests",
2187        description: r##"detects code samples in docs of private items not documented by rustdoc"##,
2188        default_severity: Severity::Allow,
2189        warn_since: None,
2190        deny_since: None,
2191    },
2192    Lint {
2193        label: "rustdoc::private_intra_doc_links",
2194        description: r##"linking from a public item to a private one"##,
2195        default_severity: Severity::Warning,
2196        warn_since: None,
2197        deny_since: None,
2198    },
2199    Lint {
2200        label: "rustdoc::redundant_explicit_links",
2201        description: r##"detects redundant explicit links in doc comments"##,
2202        default_severity: Severity::Warning,
2203        warn_since: None,
2204        deny_since: None,
2205    },
2206    Lint {
2207        label: "rustdoc::unescaped_backticks",
2208        description: r##"detects unescaped backticks in doc comments"##,
2209        default_severity: Severity::Allow,
2210        warn_since: None,
2211        deny_since: None,
2212    },
2213    Lint {
2214        label: "rustdoc::unused_footnote_definition",
2215        description: r##"detects unused footnote definitions"##,
2216        default_severity: Severity::Warning,
2217        warn_since: None,
2218        deny_since: None,
2219    },
2220    Lint {
2221        label: "rustdoc::all",
2222        description: r##"lint group for: rustdoc::broken-intra-doc-links, rustdoc::private-intra-doc-links, rustdoc::private-doc-tests, rustdoc::invalid-codeblock-attributes, rustdoc::invalid-rust-codeblocks, rustdoc::invalid-html-tags, rustdoc::bare-urls, rustdoc::missing-crate-level-docs, rustdoc::unescaped-backticks, rustdoc::redundant-explicit-links, rustdoc::broken-footnote, rustdoc::unused-footnote-definition, rustdoc::invalid-markdown-table"##,
2223        default_severity: Severity::Allow,
2224        warn_since: None,
2225        deny_since: None,
2226    },
2227];
2228
2229pub const RUSTDOC_LINT_GROUPS: &[LintGroup] = &[LintGroup {
2230    lint: Lint {
2231        label: "rustdoc::all",
2232        description: r##"lint group for: rustdoc::broken-intra-doc-links, rustdoc::private-intra-doc-links, rustdoc::private-doc-tests, rustdoc::invalid-codeblock-attributes, rustdoc::invalid-rust-codeblocks, rustdoc::invalid-html-tags, rustdoc::bare-urls, rustdoc::missing-crate-level-docs, rustdoc::unescaped-backticks, rustdoc::redundant-explicit-links, rustdoc::broken-footnote, rustdoc::unused-footnote-definition, rustdoc::invalid-markdown-table"##,
2233        default_severity: Severity::Allow,
2234        warn_since: None,
2235        deny_since: None,
2236    },
2237    children: &[
2238        "rustdoc::broken_intra_doc_links",
2239        "rustdoc::private_intra_doc_links",
2240        "rustdoc::private_doc_tests",
2241        "rustdoc::invalid_codeblock_attributes",
2242        "rustdoc::invalid_rust_codeblocks",
2243        "rustdoc::invalid_html_tags",
2244        "rustdoc::bare_urls",
2245        "rustdoc::missing_crate_level_docs",
2246        "rustdoc::unescaped_backticks",
2247        "rustdoc::redundant_explicit_links",
2248        "rustdoc::broken_footnote",
2249        "rustdoc::unused_footnote_definition",
2250        "rustdoc::invalid_markdown_table",
2251    ],
2252}];
2253
2254pub const FEATURES: &[Lint] = &[
2255    Lint {
2256        label: "aarch64_unstable_target_feature",
2257        description: r##"# `aarch64_unstable_target_feature`
2258
2259The remaining unstable target features on aarch64.
2260
2261The tracking issue for this feature is: [#150244]
2262
2263[#150244]: https://github.com/rust-lang/rust/issues/150244
2264
2265------------------------
2266"##,
2267        default_severity: Severity::Allow,
2268        warn_since: None,
2269        deny_since: None,
2270    },
2271    Lint {
2272        label: "aarch64_ver_target_feature",
2273        description: r##"# `aarch64_ver_target_feature`
2274
2275Instruction set "version" target features on aarch64.
2276
2277The tracking issue for this feature is: [#150245]
2278
2279[#150245]: https://github.com/rust-lang/rust/issues/150245
2280
2281------------------------
2282"##,
2283        default_severity: Severity::Allow,
2284        warn_since: None,
2285        deny_since: None,
2286    },
2287    Lint {
2288        label: "abi_avr_interrupt",
2289        description: r##"# `abi_avr_interrupt`
2290
2291Allows `extern "avr-interrupt" fn()` and `extern "avr-non-blocking-interrupt" fn()`.
2292
2293The tracking issue for this feature is: [#69664]
2294
2295[#69664]: https://github.com/rust-lang/rust/issues/69664
2296
2297------------------------
2298"##,
2299        default_severity: Severity::Allow,
2300        warn_since: None,
2301        deny_since: None,
2302    },
2303    Lint {
2304        label: "abi_cmse_nonsecure_call",
2305        description: r##"# `abi_cmse_nonsecure_call`
2306
2307The tracking issue for this feature is: [#81391]
2308
2309[#81391]: https://github.com/rust-lang/rust/issues/81391
2310
2311------------------------
2312
2313The [TrustZone-M
2314feature](https://developer.arm.com/documentation/100690/latest/) is available
2315for targets with the Armv8-M architecture profile (`thumbv8m` in their target
2316name).
2317LLVM, the Rust compiler and the linker are providing
2318[support](https://developer.arm.com/documentation/ecm0359818/latest/) for the
2319TrustZone-M feature.
2320
2321One of the things provided with this unstable feature is the "cmse-nonsecure-call" function ABI.
2322This ABI is used on function pointers to non-secure code to mark a non-secure function call
2323(see [section 5.5](https://developer.arm.com/documentation/ecm0359818/latest/) for details).
2324
2325With this ABI, the compiler will do the following to perform the call:
2326* save registers needed after the call to Secure memory
2327* clear all registers that might contain confidential information
2328* clear the Least Significant Bit of the function address
2329* branches using the BLXNS instruction
2330
2331To avoid using the non-secure stack, the compiler will constrain the number and
2332type of parameters/return value.
2333
2334<!-- NOTE(ignore) this example is specific to thumbv8m targets -->
2335
2336``` rust,ignore
2337#![no_std]
2338#![feature(abi_cmse_nonsecure_call)]
2339
2340#[no_mangle]
2341pub fn call_nonsecure_function(addr: usize) -> u32 {
2342    let non_secure_function =
2343        unsafe { core::mem::transmute::<usize, extern "cmse-nonsecure-call" fn() -> u32>(addr) };
2344    non_secure_function()
2345}
2346```
2347
2348``` text
2349$ rustc --emit asm --crate-type lib --target thumbv8m.main-none-eabi function.rs
2350
2351call_nonsecure_function:
2352        .fnstart
2353        .save   {r7, lr}
2354        push    {r7, lr}
2355        .setfp  r7, sp
2356        mov     r7, sp
2357        .pad    #16
2358        sub     sp, #16
2359        str     r0, [sp, #12]
2360        ldr     r0, [sp, #12]
2361        str     r0, [sp, #8]
2362        b       .LBB0_1
2363.LBB0_1:
2364        ldr     r0, [sp, #8]
2365        push.w  {r4, r5, r6, r7, r8, r9, r10, r11}
2366        bic     r0, r0, #1
2367        mov     r1, r0
2368        mov     r2, r0
2369        mov     r3, r0
2370        mov     r4, r0
2371        mov     r5, r0
2372        mov     r6, r0
2373        mov     r7, r0
2374        mov     r8, r0
2375        mov     r9, r0
2376        mov     r10, r0
2377        mov     r11, r0
2378        mov     r12, r0
2379        msr     apsr_nzcvq, r0
2380        blxns   r0
2381        pop.w   {r4, r5, r6, r7, r8, r9, r10, r11}
2382        str     r0, [sp, #4]
2383        b       .LBB0_2
2384.LBB0_2:
2385        ldr     r0, [sp, #4]
2386        add     sp, #16
2387        pop     {r7, pc}
2388```
2389"##,
2390        default_severity: Severity::Allow,
2391        warn_since: None,
2392        deny_since: None,
2393    },
2394    Lint {
2395        label: "abi_gpu_kernel",
2396        description: r##"# `abi_gpu_kernel`
2397
2398Allows `extern "gpu-kernel" fn()`.
2399
2400The tracking issue for this feature is: [#135467]
2401
2402[#135467]: https://github.com/rust-lang/rust/issues/135467
2403
2404------------------------
2405"##,
2406        default_severity: Severity::Allow,
2407        warn_since: None,
2408        deny_since: None,
2409    },
2410    Lint {
2411        label: "abi_msp430_interrupt",
2412        description: r##"# `abi_msp430_interrupt`
2413
2414The tracking issue for this feature is: [#38487]
2415
2416[#38487]: https://github.com/rust-lang/rust/issues/38487
2417
2418------------------------
2419
2420In the MSP430 architecture, interrupt handlers have a special calling
2421convention. You can use the `"msp430-interrupt"` ABI to make the compiler apply
2422the right calling convention to the interrupt handlers you define.
2423
2424<!-- NOTE(ignore) this example is specific to the msp430 target -->
2425
2426``` rust,ignore
2427#![feature(abi_msp430_interrupt)]
2428#![no_std]
2429
2430// Place the interrupt handler at the appropriate memory address
2431// (Alternatively, you can use `#[used]` and remove `pub` and `#[no_mangle]`)
2432#[link_section = "__interrupt_vector_10"]
2433#[no_mangle]
2434pub static TIM0_VECTOR: extern "msp430-interrupt" fn() = tim0;
2435
2436// The interrupt handler
2437extern "msp430-interrupt" fn tim0() {
2438    // ..
2439}
2440```
2441
2442``` text
2443$ msp430-elf-objdump -CD ./target/msp430/release/app
2444Disassembly of section __interrupt_vector_10:
2445
24460000fff2 <TIM0_VECTOR>:
2447    fff2:       00 c0           interrupt service routine at 0xc000
2448
2449Disassembly of section .text:
2450
24510000c000 <int::tim0>:
2452    c000:       00 13           reti
2453```
2454"##,
2455        default_severity: Severity::Allow,
2456        warn_since: None,
2457        deny_since: None,
2458    },
2459    Lint {
2460        label: "abi_ptx",
2461        description: r##"# `abi_ptx`
2462
2463The tracking issue for this feature is: [#38788]
2464
2465[#38788]: https://github.com/rust-lang/rust/issues/38788
2466
2467------------------------
2468
2469When emitting PTX code, all vanilla Rust functions (`fn`) get translated to
2470"device" functions. These functions are *not* callable from the host via the
2471CUDA API so a crate with only device functions is not too useful!
2472
2473OTOH, "global" functions *can* be called by the host; you can think of them
2474as the real public API of your crate. To produce a global function use the
2475`"ptx-kernel"` ABI.
2476
2477<!-- NOTE(ignore) this example is specific to the nvptx targets -->
2478
2479``` rust,ignore
2480#![feature(abi_ptx)]
2481#![no_std]
2482
2483pub unsafe extern "ptx-kernel" fn global_function() {
2484    device_function();
2485}
2486
2487pub fn device_function() {
2488    // ..
2489}
2490```
2491
2492``` text
2493$ xargo rustc --target nvptx64-nvidia-cuda --release -- --emit=asm
2494
2495$ cat $(find -name '*.s')
2496//
2497// Generated by LLVM NVPTX Back-End
2498//
2499
2500.version 3.2
2501.target sm_20
2502.address_size 64
2503
2504        // .globl       _ZN6kernel15global_function17h46111ebe6516b382E
2505
2506.visible .entry _ZN6kernel15global_function17h46111ebe6516b382E()
2507{
2508
2509
2510        ret;
2511}
2512
2513        // .globl       _ZN6kernel15device_function17hd6a0e4993bbf3f78E
2514.visible .func _ZN6kernel15device_function17hd6a0e4993bbf3f78E()
2515{
2516
2517
2518        ret;
2519}
2520```
2521"##,
2522        default_severity: Severity::Allow,
2523        warn_since: None,
2524        deny_since: None,
2525    },
2526    Lint {
2527        label: "abi_riscv_interrupt",
2528        description: r##"# `abi_riscv_interrupt`
2529
2530Allows `extern "riscv-interrupt-m" fn()` and `extern "riscv-interrupt-s" fn()`.
2531
2532The tracking issue for this feature is: [#111889]
2533
2534[#111889]: https://github.com/rust-lang/rust/issues/111889
2535
2536------------------------
2537"##,
2538        default_severity: Severity::Allow,
2539        warn_since: None,
2540        deny_since: None,
2541    },
2542    Lint {
2543        label: "abi_swift",
2544        description: r##"# `abi_swift`
2545
2546Allows `extern "Swift" fn()`.
2547
2548The tracking issue for this feature is: [#156481]
2549
2550[#156481]: https://github.com/rust-lang/rust/issues/156481
2551
2552------------------------
2553"##,
2554        default_severity: Severity::Allow,
2555        warn_since: None,
2556        deny_since: None,
2557    },
2558    Lint {
2559        label: "abi_vectorcall",
2560        description: r##"# `abi_vectorcall`
2561
2562The tracking issue for this feature is: [#124485]
2563
2564[#124485]: https://github.com/rust-lang/rust/issues/124485
2565
2566------------------------
2567
2568Adds support for the Windows `"vectorcall"` ABI, the equivalent of `__vectorcall` in MSVC.
2569
2570```rust,ignore (only-windows-or-x86-or-x86-64)
2571extern "vectorcall" {
2572    fn add_f64s(x: f64, y: f64) -> f64;
2573}
2574
2575fn main() {
2576    println!("{}", add_f64s(2.0, 4.0));
2577}
2578```
2579"##,
2580        default_severity: Severity::Allow,
2581        warn_since: None,
2582        deny_since: None,
2583    },
2584    Lint {
2585        label: "abi_x86_interrupt",
2586        description: r##"# `abi_x86_interrupt`
2587
2588Allows `extern "x86-interrupt" fn()`.
2589
2590The tracking issue for this feature is: [#40180]
2591
2592[#40180]: https://github.com/rust-lang/rust/issues/40180
2593
2594------------------------
2595"##,
2596        default_severity: Severity::Allow,
2597        warn_since: None,
2598        deny_since: None,
2599    },
2600    Lint {
2601        label: "abort_immediate",
2602        description: r##"# `abort_immediate`
2603
2604
2605
2606The tracking issue for this feature is: [#154601]
2607
2608[#154601]: https://github.com/rust-lang/rust/issues/154601
2609
2610------------------------
2611"##,
2612        default_severity: Severity::Allow,
2613        warn_since: None,
2614        deny_since: None,
2615    },
2616    Lint {
2617        label: "abort_unwind",
2618        description: r##"# `abort_unwind`
2619
2620
2621
2622The tracking issue for this feature is: [#130338]
2623
2624[#130338]: https://github.com/rust-lang/rust/issues/130338
2625
2626------------------------
2627"##,
2628        default_severity: Severity::Allow,
2629        warn_since: None,
2630        deny_since: None,
2631    },
2632    Lint {
2633        label: "acceptfilter",
2634        description: r##"# `acceptfilter`
2635
2636
2637
2638The tracking issue for this feature is: [#121891]
2639
2640[#121891]: https://github.com/rust-lang/rust/issues/121891
2641
2642------------------------
2643"##,
2644        default_severity: Severity::Allow,
2645        warn_since: None,
2646        deny_since: None,
2647    },
2648    Lint {
2649        label: "addr_parse_ascii",
2650        description: r##"# `addr_parse_ascii`
2651
2652
2653
2654The tracking issue for this feature is: [#101035]
2655
2656[#101035]: https://github.com/rust-lang/rust/issues/101035
2657
2658------------------------
2659"##,
2660        default_severity: Severity::Allow,
2661        warn_since: None,
2662        deny_since: None,
2663    },
2664    Lint {
2665        label: "addr_unspecified_from",
2666        description: r##"# `addr_unspecified_from`
2667
2668
2669
2670The tracking issue for this feature is: [#158975]
2671
2672[#158975]: https://github.com/rust-lang/rust/issues/158975
2673
2674------------------------
2675"##,
2676        default_severity: Severity::Allow,
2677        warn_since: None,
2678        deny_since: None,
2679    },
2680    Lint {
2681        label: "adt_const_params",
2682        description: r##"# `adt_const_params`
2683
2684The tracking issue for this feature is: [#95174]
2685
2686[#95174]: https://github.com/rust-lang/rust/issues/95174
2687
2688------------------------
2689
2690Allows for using more complex types for const parameters, such as structs or enums.
2691
2692```rust
2693#![feature(adt_const_params)]
2694#![allow(incomplete_features)]
2695
2696use std::marker::ConstParamTy;
2697
2698#[derive(ConstParamTy, PartialEq, Eq)]
2699enum Foo {
2700    A,
2701    B,
2702    C,
2703}
2704
2705#[derive(ConstParamTy, PartialEq, Eq)]
2706struct Bar {
2707    flag: bool,
2708}
2709
2710fn is_foo_a_and_bar_true<const F: Foo, const B: Bar>() -> bool {
2711    match (F, B.flag) {
2712        (Foo::A, true) => true,
2713        _ => false,
2714    }
2715}
2716```
2717"##,
2718        default_severity: Severity::Allow,
2719        warn_since: None,
2720        deny_since: None,
2721    },
2722    Lint {
2723        label: "align_to_uninit_mut",
2724        description: r##"# `align_to_uninit_mut`
2725
2726
2727
2728The tracking issue for this feature is: [#139062]
2729
2730[#139062]: https://github.com/rust-lang/rust/issues/139062
2731
2732------------------------
2733"##,
2734        default_severity: Severity::Allow,
2735        warn_since: None,
2736        deny_since: None,
2737    },
2738    Lint {
2739        label: "alloc_error_handler",
2740        description: r##"# `alloc_error_handler`
2741
2742Allows defining an `#[alloc_error_handler]`.
2743
2744The tracking issue for this feature is: [#51540]
2745
2746[#51540]: https://github.com/rust-lang/rust/issues/51540
2747
2748------------------------
2749"##,
2750        default_severity: Severity::Allow,
2751        warn_since: None,
2752        deny_since: None,
2753    },
2754    Lint {
2755        label: "alloc_error_hook",
2756        description: r##"# `alloc_error_hook`
2757
2758
2759
2760The tracking issue for this feature is: [#51245]
2761
2762[#51245]: https://github.com/rust-lang/rust/issues/51245
2763
2764------------------------
2765"##,
2766        default_severity: Severity::Allow,
2767        warn_since: None,
2768        deny_since: None,
2769    },
2770    Lint {
2771        label: "alloc_internals",
2772        description: r##"# `alloc_internals`
2773
2774
2775
2776This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
2777
2778------------------------
2779"##,
2780        default_severity: Severity::Allow,
2781        warn_since: None,
2782        deny_since: None,
2783    },
2784    Lint {
2785        label: "alloc_io",
2786        description: r##"# `alloc_io`
2787
2788
2789
2790The tracking issue for this feature is: [#154046]
2791
2792[#154046]: https://github.com/rust-lang/rust/issues/154046
2793
2794------------------------
2795"##,
2796        default_severity: Severity::Allow,
2797        warn_since: None,
2798        deny_since: None,
2799    },
2800    Lint {
2801        label: "alloc_slice_into_array",
2802        description: r##"# `alloc_slice_into_array`
2803
2804
2805
2806The tracking issue for this feature is: [#148082]
2807
2808[#148082]: https://github.com/rust-lang/rust/issues/148082
2809
2810------------------------
2811"##,
2812        default_severity: Severity::Allow,
2813        warn_since: None,
2814        deny_since: None,
2815    },
2816    Lint {
2817        label: "allocator_ext",
2818        description: r##"# `allocator_ext`
2819
2820The tracking issue for this feature is: [#163177]
2821
2822[#163177]: https://github.com/rust-lang/rust/issues/163177
2823
2824------------------------
2825
2826Sometimes you want the memory for one collection to use a different
2827allocator than the memory for another collection. In this case,
2828replacing the global allocator is not a workable option. Instead,
2829you need to pass in an instance of an `AllocRef` to each collection
2830for which you want a custom allocator.
2831
2832TBD
2833"##,
2834        default_severity: Severity::Allow,
2835        warn_since: None,
2836        deny_since: None,
2837    },
2838    Lint {
2839        label: "allocator_internals",
2840        description: r##"# `allocator_internals`
2841
2842This feature does not have a tracking issue, it is an unstable implementation
2843detail of the `global_allocator` feature not intended for use outside the
2844compiler.
2845
2846------------------------
2847"##,
2848        default_severity: Severity::Allow,
2849        warn_since: None,
2850        deny_since: None,
2851    },
2852    Lint {
2853        label: "alloctests",
2854        description: r##"# `alloctests`
2855
2856
2857
2858This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
2859
2860------------------------
2861"##,
2862        default_severity: Severity::Allow,
2863        warn_since: None,
2864        deny_since: None,
2865    },
2866    Lint {
2867        label: "allow_internal_unsafe",
2868        description: r##"# `allow_internal_unsafe`
2869
2870Allows using `#[allow_internal_unsafe]`. This is an attribute on `macro_rules!` and can't use the attribute handling below (it has to be checked before expansion possibly makes macros disappear).
2871
2872This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
2873
2874------------------------
2875"##,
2876        default_severity: Severity::Allow,
2877        warn_since: None,
2878        deny_since: None,
2879    },
2880    Lint {
2881        label: "allow_internal_unstable",
2882        description: r##"# `allow_internal_unstable`
2883
2884Allows using `#[allow_internal_unstable]`. This is an attribute on `macro_rules!` and can't use the attribute handling below (it has to be checked before expansion possibly makes macros disappear).
2885
2886This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
2887
2888------------------------
2889"##,
2890        default_severity: Severity::Allow,
2891        warn_since: None,
2892        deny_since: None,
2893    },
2894    Lint {
2895        label: "anonymous_lifetime_in_impl_trait",
2896        description: r##"# `anonymous_lifetime_in_impl_trait`
2897
2898Allows using anonymous lifetimes in argument-position impl-trait.
2899
2900This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
2901
2902------------------------
2903"##,
2904        default_severity: Severity::Allow,
2905        warn_since: None,
2906        deny_since: None,
2907    },
2908    Lint {
2909        label: "apx_target_feature",
2910        description: r##"# `apx_target_feature`
2911
2912The `apxf` target feature on x86
2913
2914The tracking issue for this feature is: [#139284]
2915
2916[#139284]: https://github.com/rust-lang/rust/issues/139284
2917
2918------------------------
2919"##,
2920        default_severity: Severity::Allow,
2921        warn_since: None,
2922        deny_since: None,
2923    },
2924    Lint {
2925        label: "arbitrary_self_types",
2926        description: r##"# `arbitrary_self_types`
2927
2928The tracking issue for this feature is: [#44874]
2929
2930[#44874]: https://github.com/rust-lang/rust/issues/44874
2931
2932------------------------
2933
2934Allows any type implementing `core::ops::Receiver<Target=T>` to be used as the type
2935of `self` in a method belonging to `T`.
2936
2937For example,
2938
2939```rust
2940#![feature(arbitrary_self_types)]
2941
2942struct A;
2943
2944impl A {
2945    fn f(self: SmartPtr<Self>) -> i32 { 1 }  // note self type
2946}
2947
2948struct SmartPtr<T>(T);
2949
2950impl<T> core::ops::Receiver for SmartPtr<T> {
2951    type Target = T;
2952}
2953
2954fn main() {
2955    let smart_ptr = SmartPtr(A);
2956    assert_eq!(smart_ptr.f(), 1);
2957}
2958```
2959
2960The `Receiver` trait has a blanket implementation for all `T: Deref`, so in fact
2961things like this work too:
2962
2963```rust
2964#![feature(arbitrary_self_types)]
2965
2966use std::rc::Rc;
2967
2968struct A;
2969
2970impl A {
2971    fn f(self: Rc<Self>) -> i32 { 1 } // Rc implements Deref
2972}
2973
2974fn main() {
2975    let smart_ptr = Rc::new(A);
2976    assert_eq!(smart_ptr.f(), 1);
2977}
2978```
2979
2980Interestingly, that works even without the `arbitrary_self_types` feature
2981- but that's because certain types are _effectively_ hard coded, including
2982`Rc`. ("Hard coding" isn't quite true; they use a lang-item called
2983`LegacyReceiver` to denote their special-ness in this way). With the
2984`arbitrary_self_types` feature, their special-ness goes away, and custom
2985smart pointers can achieve the same.
2986
2987## Changes to method lookup
2988
2989Method lookup previously used to work by stepping through the `Deref`
2990chain then using the resulting list of steps in two different ways:
2991
2992* To identify types that might contribute methods via their `impl`
2993  blocks (inherent methods) or via traits
2994* To identify the types that the method receiver (`a` in the above
2995  examples) can be converted to.
2996
2997With this feature, these lists are created by instead stepping through
2998the `Receiver` chain. However, a note is kept about whether the type
2999can be reached also via the `Deref` chain.
3000
3001The full chain (via `Receiver` hops) is used for the first purpose
3002(identifying relevant `impl` blocks and traits); whereas the shorter
3003list (reachable via `Deref`) is used for the second purpose. That's
3004because, to convert the method target (`a` in `a.b()`) to the self
3005type, Rust may need to be able to use `Deref::deref`. Type conversions,
3006then, can only proceed as far as the end of the `Deref` chain whereas
3007the longer `Receiver` chain can be used to explore more places where
3008useful methods might reside.
3009
3010## Types suitable for use as smart pointers
3011
3012This feature allows the creation of customised smart pointers - for example
3013your own equivalent to `Rc` or `Box` with whatever capabilities you like.
3014Those smart pointers can either implement `Deref` (if it's safe to
3015create a reference to the referent) or `Receiver` (if it isn't).
3016
3017Either way, smart pointer types should mostly _avoid having methods_.
3018Calling methods on a smart pointer leads to ambiguity about whether you're
3019aiming for a method on the pointer, or on the referent.
3020
3021Best practice is therefore to put smart pointer functionality into
3022associated functions instead - that's what's done in all the smart pointer
3023types within Rust's standard library which implement `Receiver`.
3024
3025If you choose to add any methods to your smart pointer type, your users
3026may run into errors from deshadowing, as described in the next section.
3027
3028## Avoiding shadowing
3029
3030With or without this feature, Rust emits an error if it finds two method
3031candidates, like this:
3032
3033```rust,compile_fail
3034use std::pin::Pin;
3035use std::pin::pin;
3036
3037struct A;
3038
3039impl A {
3040    fn get_ref(self: Pin<&A>) {}
3041}
3042
3043fn main() {
3044    let pinned_a: Pin<&A> = pin!(A).as_ref();
3045    let pinned_a: Pin<&A> = pinned_a.as_ref();
3046    pinned_a.get_ref(); // error[E0034]: multiple applicable items in scope
3047}
3048```
3049
3050(this is why Rust's smart pointers are mostly carefully designed to avoid
3051having methods at all, and shouldn't add new methods in future.)
3052
3053With `arbitrary_self_types`, we take care to spot some other kinds of
3054conflict:
3055
3056```rust,compile_fail
3057#![feature(arbitrary_self_types)]
3058
3059use std::pin::Pin;
3060use std::pin::pin;
3061
3062struct A;
3063
3064impl A {
3065    fn get_ref(self: &Pin<&A>) {}  // note &Pin
3066}
3067
3068fn main() {
3069    let pinned_a: Pin<&mut A> = pin!(A);
3070    let pinned_a: Pin<&A> = pinned_a.as_ref();
3071    pinned_a.get_ref();
3072}
3073```
3074
3075This is to guard against the case where an inner (referent) type has a
3076method of a given name, taking the smart pointer by reference, and then
3077the smart pointer implementer adds a similar method taking self by value.
3078As noted in the previous section, the safe option is simply
3079not to add methods to smart pointers, and then these errors can't occur.
3080"##,
3081        default_severity: Severity::Allow,
3082        warn_since: None,
3083        deny_since: None,
3084    },
3085    Lint {
3086        label: "arbitrary_self_types_pointers",
3087        description: r##"# `arbitrary_self_types_pointers`
3088
3089The tracking issue for this feature is: [#44874]
3090
3091[#38788]: https://github.com/rust-lang/rust/issues/44874
3092
3093------------------------
3094
3095This extends the [arbitrary self types] feature to allow methods to
3096receive `self` by pointer. For example:
3097
3098```rust
3099#![feature(arbitrary_self_types_pointers)]
3100
3101struct A;
3102
3103impl A {
3104    fn m(self: *const Self) {}
3105}
3106
3107fn main() {
3108    let a = A;
3109    let a_ptr: *const A = &a as *const A;
3110    a_ptr.m();
3111}
3112```
3113
3114In general this is not advised: it's thought to be better practice to wrap
3115raw pointers in a newtype wrapper which implements the `core::ops::Receiver`
3116trait, then you need "only" the `arbitrary_self_types` feature. For example:
3117
3118```rust
3119#![feature(arbitrary_self_types)]
3120#![allow(dead_code)]
3121
3122struct A;
3123
3124impl A {
3125    fn m(self: Wrapper<Self>) {} // can extract the pointer and do
3126        // what it needs
3127}
3128
3129struct Wrapper<T>(*const T);
3130
3131impl<T> core::ops::Receiver for Wrapper<T> {
3132    type Target = T;
3133}
3134
3135fn main() {
3136    let a = A;
3137    let a_ptr: *const A = &a as *const A;
3138    let a_wrapper = Wrapper(a_ptr);
3139    a_wrapper.m();
3140}
3141```
3142
3143[arbitrary self types]: arbitrary-self-types.md
3144"##,
3145        default_severity: Severity::Allow,
3146        warn_since: None,
3147        deny_since: None,
3148    },
3149    Lint {
3150        label: "arc_is_unique",
3151        description: r##"# `arc_is_unique`
3152
3153
3154
3155The tracking issue for this feature is: [#138938]
3156
3157[#138938]: https://github.com/rust-lang/rust/issues/138938
3158
3159------------------------
3160"##,
3161        default_severity: Severity::Allow,
3162        warn_since: None,
3163        deny_since: None,
3164    },
3165    Lint {
3166        label: "arc_raw_get_strong",
3167        description: r##"# `arc_raw_get_strong`
3168
3169
3170
3171The tracking issue for this feature is: [#157021]
3172
3173[#157021]: https://github.com/rust-lang/rust/issues/157021
3174
3175------------------------
3176"##,
3177        default_severity: Severity::Allow,
3178        warn_since: None,
3179        deny_since: None,
3180    },
3181    Lint {
3182        label: "arm_target_feature",
3183        description: r##"# `arm_target_feature`
3184
3185Target features on arm.
3186
3187The tracking issue for this feature is: [#150246]
3188
3189[#150246]: https://github.com/rust-lang/rust/issues/150246
3190
3191------------------------
3192"##,
3193        default_severity: Severity::Allow,
3194        warn_since: None,
3195        deny_since: None,
3196    },
3197    Lint {
3198        label: "array_into_iter_constructors",
3199        description: r##"# `array_into_iter_constructors`
3200
3201
3202
3203The tracking issue for this feature is: [#91583]
3204
3205[#91583]: https://github.com/rust-lang/rust/issues/91583
3206
3207------------------------
3208"##,
3209        default_severity: Severity::Allow,
3210        warn_since: None,
3211        deny_since: None,
3212    },
3213    Lint {
3214        label: "array_ptr_get",
3215        description: r##"# `array_ptr_get`
3216
3217
3218
3219The tracking issue for this feature is: [#119834]
3220
3221[#119834]: https://github.com/rust-lang/rust/issues/119834
3222
3223------------------------
3224"##,
3225        default_severity: Severity::Allow,
3226        warn_since: None,
3227        deny_since: None,
3228    },
3229    Lint {
3230        label: "array_try_from_fn",
3231        description: r##"# `array_try_from_fn`
3232
3233
3234
3235The tracking issue for this feature is: [#89379]
3236
3237[#89379]: https://github.com/rust-lang/rust/issues/89379
3238
3239------------------------
3240"##,
3241        default_severity: Severity::Allow,
3242        warn_since: None,
3243        deny_since: None,
3244    },
3245    Lint {
3246        label: "array_try_map",
3247        description: r##"# `array_try_map`
3248
3249
3250
3251The tracking issue for this feature is: [#79711]
3252
3253[#79711]: https://github.com/rust-lang/rust/issues/79711
3254
3255------------------------
3256"##,
3257        default_severity: Severity::Allow,
3258        warn_since: None,
3259        deny_since: None,
3260    },
3261    Lint {
3262        label: "ascii_char",
3263        description: r##"# `ascii_char`
3264
3265
3266
3267The tracking issue for this feature is: [#110998]
3268
3269[#110998]: https://github.com/rust-lang/rust/issues/110998
3270
3271------------------------
3272"##,
3273        default_severity: Severity::Allow,
3274        warn_since: None,
3275        deny_since: None,
3276    },
3277    Lint {
3278        label: "ascii_char_variants",
3279        description: r##"# `ascii_char_variants`
3280
3281
3282
3283The tracking issue for this feature is: [#110998]
3284
3285[#110998]: https://github.com/rust-lang/rust/issues/110998
3286
3287------------------------
3288"##,
3289        default_severity: Severity::Allow,
3290        warn_since: None,
3291        deny_since: None,
3292    },
3293    Lint {
3294        label: "asm_const_ptr",
3295        description: r##"# `asm_const_ptr`
3296
3297Allows using `const` operands with pointer in inline assembly.
3298
3299The tracking issue for this feature is: [#128464]
3300
3301[#128464]: https://github.com/rust-lang/rust/issues/128464
3302
3303------------------------
3304"##,
3305        default_severity: Severity::Allow,
3306        warn_since: None,
3307        deny_since: None,
3308    },
3309    Lint {
3310        label: "asm_experimental_arch",
3311        description: r##"# `asm_experimental_arch`
3312
3313The tracking issue for this feature is: [#93335]
3314
3315[#93335]: https://github.com/rust-lang/rust/issues/93335
3316
3317------------------------
3318
3319This feature tracks `asm!` and `global_asm!` support for the following architectures:
3320- NVPTX
3321- Hexagon
3322- MIPS32r2 and MIPS64r2
3323- wasm32
3324- BPF
3325- SPIR-V
3326- AVR
3327- MSP430
3328- M68k
3329- CSKY
3330- SPARC
3331- Xtensa
3332
3333## Register classes
3334
3335| Architecture | Register class | Registers                          | LLVM constraint code |
3336| ------------ | -------------- | ---------------------------------- | -------------------- |
3337| MIPS         | `reg`          | `$[2-25]`                          | `r`                  |
3338| MIPS         | `freg`         | `$f[0-31]`                         | `f`                  |
3339| NVPTX        | `reg16`        | None\*                             | `h`                  |
3340| NVPTX        | `reg32`        | None\*                             | `r`                  |
3341| NVPTX        | `reg64`        | None\*                             | `l`                  |
3342| Hexagon      | `reg`          | `r[0-28]`                          | `r`                  |
3343| Hexagon      | `preg`         | `p[0-3]`                           | Only clobbers        |
3344| wasm32       | `local`        | None\*                             | `r`                  |
3345| BPF          | `reg`          | `r[0-10]`                          | `r`                  |
3346| BPF          | `wreg`         | `w[0-10]`                          | `w`                  |
3347| AVR          | `reg`          | `r[2-25]`, `XH`, `XL`, `ZH`, `ZL`  | `r`                  |
3348| AVR          | `reg_upper`    | `r[16-25]`, `XH`, `XL`, `ZH`, `ZL` | `d`                  |
3349| AVR          | `reg_pair`     | `r3r2` .. `r25r24`, `X`, `Z`       | `r`                  |
3350| AVR          | `reg_iw`       | `r25r24`, `X`, `Z`                 | `w`                  |
3351| AVR          | `reg_ptr`      | `X`, `Z`                           | `e`                  |
3352| MSP430       | `reg`          | `r[0-15]`                          | `r`                  |
3353| M68k         | `reg`          | `d[0-7]`, `a[0-7]`                 | `r`                  |
3354| M68k         | `reg_data`     | `d[0-7]`                           | `d`                  |
3355| M68k         | `reg_addr`     | `a[0-3]`                           | `a`                  |
3356| CSKY         | `reg`          | `r[0-31]`                          | `r`                  |
3357| CSKY         | `freg`         | `f[0-31]`                          | `f`                  |
3358| SPARC        | `reg`          | `r[2-29]`                          | `r`                  |
3359| SPARC        | `yreg`         | `y`                                | Only clobbers        |
3360| Xtensa       | `reg`          | `a[2-15]`                          | `r`                  |
3361| Xtensa       | `freg`         | `f[0-15]`                          | `f`                  |
3362| Xtensa       | `sreg`         | `sar`, `scompare1`, `lbeg`, `lend`, `lcount`, `acclo`, `acchi`, `m[0-3]` | Only clobbers |
3363| Xtensa       | `breg`         | `b[0-15]`                          | Only clobbers        |
3364
3365> **Notes**:
3366> - NVPTX doesn't have a fixed register set, so named registers are not supported.
3367>
3368> - WebAssembly doesn't have registers, so named registers are not supported.
3369
3370# Register class supported types
3371
3372| Architecture | Register class                  | Target feature | Allowed types                           |
3373| ------------ | ------------------------------- | -------------- | --------------------------------------- |
3374| MIPS32       | `reg`                           | None           | `i8`, `i16`, `i32`, `f32`               |
3375| MIPS32       | `freg`                          | None           | `f32`, `f64`                            |
3376| MIPS64       | `reg`                           | None           | `i8`, `i16`, `i32`, `i64`, `f32`, `f64` |
3377| MIPS64       | `freg`                          | None           | `f32`, `f64`                            |
3378| NVPTX        | `reg16`                         | None           | `i8`, `i16`                             |
3379| NVPTX        | `reg32`                         | None           | `i8`, `i16`, `i32`, `f32`               |
3380| NVPTX        | `reg64`                         | None           | `i8`, `i16`, `i32`, `f32`, `i64`, `f64` |
3381| Hexagon      | `reg`                           | None           | `i8`, `i16`, `i32`, `f32`               |
3382| Hexagon      | `preg`                          | N/A            | Only clobbers                           |
3383| wasm32       | `local`                         | None           | `i8` `i16` `i32` `i64` `f32` `f64`      |
3384| BPF          | `reg`                           | None           | `i8` `i16` `i32` `i64`                  |
3385| BPF          | `wreg`                          | `alu32`        | `i8` `i16` `i32`                        |
3386| AVR          | `reg`, `reg_upper`              | None           | `i8`                                    |
3387| AVR          | `reg_pair`, `reg_iw`, `reg_ptr` | None           | `i16`                                   |
3388| MSP430       | `reg`                           | None           | `i8`, `i16`                             |
3389| M68k         | `reg`, `reg_addr`               | None           | `i16`, `i32`                            |
3390| M68k         | `reg_data`                      | None           | `i8`, `i16`, `i32`                      |
3391| CSKY         | `reg`                           | None           | `i8`, `i16`, `i32`                      |
3392| CSKY         | `freg`                          | None           | `f32`,                                  |
3393| SPARC        | `reg`                           | None           | `i8`, `i16`, `i32`, `i64` (SPARC64 only) |
3394| SPARC        | `yreg`                          | N/A            | Only clobbers                           |
3395| Xtensa       | `reg`                           | None           | `i8`, `i16`, `i32`                      |
3396| Xtensa       | `freg`                          | `fp`           | `f32`                                   |
3397| Xtensa       | `sreg`                          | N/A            | Only clobbers                           |
3398| Xtensa       | `breg`                          | `bool`         | Only clobbers                           |
3399
3400## Register aliases
3401
3402| Architecture | Base register | Aliases   |
3403| ------------ | ------------- | --------- |
3404| Hexagon      | `r29`         | `sp`      |
3405| Hexagon      | `r30`         | `fr`      |
3406| Hexagon      | `r31`         | `lr`      |
3407| BPF          | `r[0-10]`     | `w[0-10]` |
3408| AVR          | `XH`          | `r27`     |
3409| AVR          | `XL`          | `r26`     |
3410| AVR          | `ZH`          | `r31`     |
3411| AVR          | `ZL`          | `r30`     |
3412| MSP430       | `r0`          | `pc`      |
3413| MSP430       | `r1`          | `sp`      |
3414| MSP430       | `r2`          | `sr`      |
3415| MSP430       | `r3`          | `cg`      |
3416| MSP430       | `r4`          | `fp`      |
3417| M68k         | `a5`          | `bp`      |
3418| M68k         | `a6`          | `fp`      |
3419| M68k         | `a7`          | `sp`, `usp`, `ssp`, `isp` |
3420| CSKY         | `r[0-3]`      | `a[0-3]`  |
3421| CSKY         | `r[4-11]`     | `l[0-7]`  |
3422| CSKY         | `r[12-13]`    | `t[0-1]`  |
3423| CSKY         | `r14`         | `sp`      |
3424| CSKY         | `r15`         | `lr`      |
3425| CSKY         | `r[16-17]`    | `l[8-9]`  |
3426| CSKY         | `r[18-25]`    | `t[2-9]`  |
3427| CSKY         | `r28`         | `rgb`     |
3428| CSKY         | `r29`         | `rtb`     |
3429| CSKY         | `r30`         | `svbr`    |
3430| CSKY         | `r31`         | `tls`     |
3431| SPARC        | `r[0-7]`      | `g[0-7]`  |
3432| SPARC        | `r[8-15]`     | `o[0-7]`  |
3433| SPARC        | `r[16-23]`    | `l[0-7]`  |
3434| SPARC        | `r[24-31]`    | `i[0-7]`  |
3435| Xtensa       | `a1`          | `sp`      |
3436
3437> **Notes**:
3438> - TI does not mandate a frame pointer for MSP430, but toolchains are allowed
3439    to use one; LLVM uses `r4`.
3440
3441## Unsupported registers
3442
3443| Architecture | Unsupported register                    | Reason                                                                                                                                                                              |
3444| ------------ | --------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
3445| All          | `sp`, `r14`/`o6` (SPARC)                | The stack pointer must be restored to its original value at the end of an asm code block.                                                                                           |
3446| All          | `fr` (Hexagon) `$fp` (MIPS), `Y` (AVR), `r4` (MSP430), `a6` (M68k), `r30`/`i6` (SPARC) | The frame pointer cannot be used as an input or output.                                                             |
3447| All          | `r19` (Hexagon) | These are used internally by LLVM as "base pointer" for functions with complex stack frames.                                                                              |
3448| MIPS         | `$0` or `$zero`                         | This is a constant zero register which can't be modified.                                                                                                                           |
3449| MIPS         | `$1` or `$at`                           | Reserved for assembler.                                                                                                                                                             |
3450| MIPS         | `$26`/`$k0`, `$27`/`$k1`                | OS-reserved registers.                                                                                                                                                              |
3451| MIPS         | `$28`/`$gp`                             | Global pointer cannot be used as inputs or outputs.                                                                                                                                 |
3452| MIPS         | `$ra`                                   | Return address cannot be used as inputs or outputs.                                                                                                                                 |
3453| Hexagon      | `lr`                                    | This is the link register which cannot be used as an input or output.                                                                                                               |
3454| AVR          | `r0`, `r1`, `r1r0`                      | Due to an issue in LLVM, the `r0` and `r1` registers cannot be used as inputs or outputs.  If modified, they must be restored to their original values before the end of the block. |
3455|MSP430        | `r0`, `r2`, `r3`                        | These are the program counter, status register, and constant generator respectively. Neither the status register nor constant generator can be written to.                          |
3456| M68k         | `a4`, `a5`                              | Used internally by LLVM for the base pointer and global base pointer. |
3457| CSKY         | `r7`, `r28`                             | Used internally by LLVM for the base pointer and global base pointer. |
3458| CSKY         | `r8`                                    | Used internally by LLVM for the frame pointer. |
3459| CSKY         | `r14`                                   | Used internally by LLVM for the stack pointer. |
3460| CSKY         | `r15`                                   | This is the link register. |
3461| CSKY         | `r[26-30]`                              | Reserved by its ABI.       |
3462| CSKY         | `r31`                                   | This is the TLS register.  |
3463| SPARC        | `r0`/`g0`                               | This is always zero and cannot be used as inputs or outputs. |
3464| SPARC        | `r1`/`g1`                               | Used internally by LLVM. |
3465| SPARC        | `r5`/`g5`                               | Reserved for system. (SPARC32 only) |
3466| SPARC        | `r6`/`g6`, `r7`/`g7`                    | Reserved for system. |
3467| SPARC        | `r31`/`i7`                              | Return address cannot be used as inputs or outputs. |
3468| Xtensa       | `a0`                                    | This is the return address register and is used internally by LLVM. |
3469| Xtensa       | `a1`/`sp`                               | This is the stack pointer and is used internally by LLVM. |
3470| Xtensa       | `a7` (windowed ABI) / `a15` (call0 ABI) | The frame pointer cannot be used as an input or output. |
3471
3472
3473## Template modifiers
3474
3475| Architecture | Register class | Modifier | Example output | LLVM modifier |
3476| ------------ | -------------- | -------- | -------------- | ------------- |
3477| MIPS         | `reg`          | None     | `$2`           | None          |
3478| MIPS         | `freg`         | None     | `$f0`          | None          |
3479| NVPTX        | `reg16`        | None     | `rs0`          | None          |
3480| NVPTX        | `reg32`        | None     | `r0`           | None          |
3481| NVPTX        | `reg64`        | None     | `rd0`          | None          |
3482| Hexagon      | `reg`          | None     | `r0`           | None          |
3483| SPARC        | `reg`          | None     | `%o0`          | None          |
3484| CSKY         | `reg`          | None     | `r0`           | None          |
3485| CSKY         | `freg`         | None     | `f0`           | None          |
3486| Xtensa       | `reg`          | None     | `a2`           | None          |
3487| Xtensa       | `freg`         | None     | `f0`           | None          |
3488
3489# Flags covered by `preserves_flags`
3490
3491These flags registers must be restored upon exiting the asm block if the `preserves_flags` option is set:
3492- AVR
3493  - The status register `SREG`.
3494- MSP430
3495  - The status register `r2`.
3496- M68k
3497  - The condition code register `ccr`.
3498- SPARC
3499  - Integer condition codes (`icc` and `xcc`)
3500  - Floating-point condition codes (`fcc[0-3]`)
3501- CSKY
3502  - Condition/carry bit (C) in `PSR`.
3503"##,
3504        default_severity: Severity::Allow,
3505        warn_since: None,
3506        deny_since: None,
3507    },
3508    Lint {
3509        label: "asm_experimental_reg",
3510        description: r##"# `asm_experimental_reg`
3511
3512The tracking issue for this feature is: [#133416]
3513
3514[#133416]: https://github.com/rust-lang/rust/issues/133416
3515
3516------------------------
3517
3518This tracks support for additional registers in architectures where inline assembly is already stable.
3519
3520## Register classes
3521
3522| Architecture | Register class | Registers | LLVM constraint code |
3523| ------------ | -------------- | --------- | -------------------- |
3524| LoongArch | `vreg` | `$vr[0-31]` | `f` |
3525| LoongArch | `xreg` | `$xr[0-31]` | `f` |
3526| AArch64 | `preg` | `p[0-16]` | `Upa` |
3527
3528## Register class supported types
3529
3530| Architecture | Register class | Target feature | Allowed types |
3531| ------------ | -------------- | -------------- | ------------- |
3532| LoongArch | `vreg` | `lsx` | `i128`, `f32`, `f64`, <br> `i8x16`, `i16x8`, `i32x4`, `i64x2`, `f32x4`, `f64x2` |
3533| LoongArch | `xreg` | `lasx` | `i128`, `f32`, `f64`, <br> `i8x16`, `i16x8`, `i32x4`, `i64x2`, `f32x4`, `f64x2`, <br> `i8x32`, `i16x16`, `i32x8`, `i64x4`, `f32x8`, `f64x4` |
3534| AArch64 | `vreg` | `sve` | `i8xN`, `i16xB`, `i32xN`, `i64xN`, `f16xN`, `f32xN`, `f64xN` (scalable vector) |
3535| AArch64 | `preg` | `sve` | `i1xN` (scalable vector predicate) |
3536
3537## Register aliases
3538
3539| Architecture | Base register | Aliases |
3540| ------------ | ------------- | ------- |
3541| LoongArch | `$f[0-7]` | `$fa[0-7]`, `$vr[0-7]`, `$xr[0-7]` |
3542| LoongArch | `$f[8-23]` | `$ft[0-15]`, `$vr[8-23]`, `$xr[8-23]` |
3543| LoongArch | `$f[24-31]` | `$fs[0-7]`, `$vr[24-31]`, `$xr[24-31]` |
3544
3545## Unsupported registers
3546
3547| Architecture | Unsupported register | Reason |
3548| ------------ | -------------------- | ------ |
3549
3550## Template modifiers
3551
3552| Architecture | Register class | Modifier | Example output | LLVM modifier |
3553| ------------ | -------------- | -------- | -------------- | ------------- |
3554| LoongArch | `freg` | `w` | `$vr0` | `w` |
3555| LoongArch | `freg` | `u` | `$xr0` | `u` |
3556| LoongArch | `vreg` | None | `$vr0` | `w` |
3557| LoongArch | `vreg` | `u` | `$xr0` | `u` |
3558| LoongArch | `xreg` | None | `$xr0` | `u` |
3559| LoongArch | `xreg` | `w` | `$vr0` | `w` |
3560| AArch64 | `vreg` | `z` | `z0` | `z` |
3561"##,
3562        default_severity: Severity::Allow,
3563        warn_since: None,
3564        deny_since: None,
3565    },
3566    Lint {
3567        label: "asm_goto_with_outputs",
3568        description: r##"# `asm_goto_with_outputs`
3569
3570The tracking issue for this feature is: [#119364]
3571
3572[#119364]: https://github.com/rust-lang/rust/issues/119364
3573
3574------------------------
3575
3576This feature allows label operands to be used together with output operands.
3577
3578Example:
3579```rust,ignore (partial-example, x86-only)
3580
3581unsafe {
3582    let a: usize;
3583    asm!(
3584        "mov {}, 1"
3585        "jmp {}",
3586        out(reg) a,
3587        label {
3588            println!("Jumped from asm {}!", a);
3589        }
3590    );
3591}
3592```
3593
3594The output operands are assigned before the label blocks are executed.
3595"##,
3596        default_severity: Severity::Allow,
3597        warn_since: None,
3598        deny_since: None,
3599    },
3600    Lint {
3601        label: "asm_unwind",
3602        description: r##"# `asm_unwind`
3603
3604The tracking issue for this feature is: [#93334]
3605
3606[#93334]: https://github.com/rust-lang/rust/issues/93334
3607
3608------------------------
3609
3610This feature adds a `may_unwind` option to `asm!` which allows an `asm` block to unwind stack and be part of the stack unwinding process. This option is only supported by the LLVM backend right now.
3611"##,
3612        default_severity: Severity::Allow,
3613        warn_since: None,
3614        deny_since: None,
3615    },
3616    Lint {
3617        label: "associated_type_defaults",
3618        description: r##"# `associated_type_defaults`
3619
3620Allows associated type defaults.
3621
3622The tracking issue for this feature is: [#29661]
3623
3624[#29661]: https://github.com/rust-lang/rust/issues/29661
3625
3626------------------------
3627"##,
3628        default_severity: Severity::Allow,
3629        warn_since: None,
3630        deny_since: None,
3631    },
3632    Lint {
3633        label: "async_drop",
3634        description: r##"# `async_drop`
3635
3636Allows implementing `AsyncDrop`.
3637
3638The tracking issue for this feature is: [#126482]
3639
3640[#126482]: https://github.com/rust-lang/rust/issues/126482
3641
3642------------------------
3643"##,
3644        default_severity: Severity::Allow,
3645        warn_since: None,
3646        deny_since: None,
3647    },
3648    Lint {
3649        label: "async_fn_in_dyn_trait",
3650        description: r##"# `async_fn_in_dyn_trait`
3651
3652Allows async functions to be called from `dyn Trait`.
3653
3654The tracking issue for this feature is: [#133119]
3655
3656[#133119]: https://github.com/rust-lang/rust/issues/133119
3657
3658------------------------
3659"##,
3660        default_severity: Severity::Allow,
3661        warn_since: None,
3662        deny_since: None,
3663    },
3664    Lint {
3665        label: "async_fn_track_caller",
3666        description: r##"# `async_fn_track_caller`
3667
3668Allows `#[track_caller]` on async functions.
3669
3670The tracking issue for this feature is: [#110011]
3671
3672[#110011]: https://github.com/rust-lang/rust/issues/110011
3673
3674------------------------
3675"##,
3676        default_severity: Severity::Allow,
3677        warn_since: None,
3678        deny_since: None,
3679    },
3680    Lint {
3681        label: "async_fn_traits",
3682        description: r##"# `async_fn_traits`
3683
3684See Also: [`fn_traits`](../library-features/fn-traits.md)
3685
3686----
3687
3688The `async_fn_traits` feature allows for implementation of the [`AsyncFn*`] traits
3689for creating custom closure-like types that return futures.
3690
3691[`AsyncFn*`]: ../../std/ops/trait.AsyncFn.html
3692
3693The main difference to the `Fn*` family of traits is that `AsyncFn` can return a future
3694that borrows from itself (`FnOnce::Output` has no lifetime parameters, while `AsyncFnMut::CallRefFuture` does).
3695"##,
3696        default_severity: Severity::Allow,
3697        warn_since: None,
3698        deny_since: None,
3699    },
3700    Lint {
3701        label: "async_for_loop",
3702        description: r##"# `async_for_loop`
3703
3704Allows `for await` loops.
3705
3706The tracking issue for this feature is: [#118898]
3707
3708[#118898]: https://github.com/rust-lang/rust/issues/118898
3709
3710------------------------
3711"##,
3712        default_severity: Severity::Allow,
3713        warn_since: None,
3714        deny_since: None,
3715    },
3716    Lint {
3717        label: "async_gen_internals",
3718        description: r##"# `async_gen_internals`
3719
3720
3721
3722This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
3723
3724------------------------
3725"##,
3726        default_severity: Severity::Allow,
3727        warn_since: None,
3728        deny_since: None,
3729    },
3730    Lint {
3731        label: "async_iter_from_iter",
3732        description: r##"# `async_iter_from_iter`
3733
3734
3735
3736The tracking issue for this feature is: [#81798]
3737
3738[#81798]: https://github.com/rust-lang/rust/issues/81798
3739
3740------------------------
3741"##,
3742        default_severity: Severity::Allow,
3743        warn_since: None,
3744        deny_since: None,
3745    },
3746    Lint {
3747        label: "async_iterator",
3748        description: r##"# `async_iterator`
3749
3750
3751
3752The tracking issue for this feature is: [#79024]
3753
3754[#79024]: https://github.com/rust-lang/rust/issues/79024
3755
3756------------------------
3757"##,
3758        default_severity: Severity::Allow,
3759        warn_since: None,
3760        deny_since: None,
3761    },
3762    Lint {
3763        label: "async_trait_bounds",
3764        description: r##"# `async_trait_bounds`
3765
3766Allows `async` trait bound modifier.
3767
3768The tracking issue for this feature is: [#62290]
3769
3770[#62290]: https://github.com/rust-lang/rust/issues/62290
3771
3772------------------------
3773"##,
3774        default_severity: Severity::Allow,
3775        warn_since: None,
3776        deny_since: None,
3777    },
3778    Lint {
3779        label: "atomic_internals",
3780        description: r##"# `atomic_internals`
3781
3782
3783
3784This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
3785
3786------------------------
3787"##,
3788        default_severity: Severity::Allow,
3789        warn_since: None,
3790        deny_since: None,
3791    },
3792    Lint {
3793        label: "atomic_ptr_null",
3794        description: r##"# `atomic_ptr_null`
3795
3796
3797
3798The tracking issue for this feature is: [#150733]
3799
3800[#150733]: https://github.com/rust-lang/rust/issues/150733
3801
3802------------------------
3803"##,
3804        default_severity: Severity::Allow,
3805        warn_since: None,
3806        deny_since: None,
3807    },
3808    Lint {
3809        label: "atomic_volatile",
3810        description: r##"# `atomic_volatile`
3811
3812
3813
3814The tracking issue for this feature is: [#158947]
3815
3816[#158947]: https://github.com/rust-lang/rust/issues/158947
3817
3818------------------------
3819"##,
3820        default_severity: Severity::Allow,
3821        warn_since: None,
3822        deny_since: None,
3823    },
3824    Lint {
3825        label: "auto_traits",
3826        description: r##"# `auto_traits`
3827
3828The tracking issue for this feature is [#13231]
3829
3830[#13231]: https://github.com/rust-lang/rust/issues/13231
3831
3832----
3833
3834The `auto_traits` feature gate allows you to define auto traits.
3835
3836Auto traits, like [`Send`] or [`Sync`] in the standard library, are marker traits
3837that are automatically implemented for every type, unless the type, or a type it contains,
3838has explicitly opted out via a negative impl. (Negative impls are separately controlled
3839by the `negative_impls` feature.)
3840
3841[`Send`]: ../../std/marker/trait.Send.html
3842[`Sync`]: ../../std/marker/trait.Sync.html
3843
3844```rust,ignore (partial-example)
3845impl !Trait for Type {}
3846```
3847
3848Example:
3849
3850```rust
3851#![feature(negative_impls)]
3852#![feature(auto_traits)]
3853
3854auto trait Valid {}
3855
3856struct True;
3857struct False;
3858
3859impl !Valid for False {}
3860
3861struct MaybeValid<T>(T);
3862
3863fn must_be_valid<T: Valid>(_t: T) { }
3864
3865fn main() {
3866    // works
3867    must_be_valid( MaybeValid(True) );
3868
3869    // compiler error - trait bound not satisfied
3870    // must_be_valid( MaybeValid(False) );
3871}
3872```
3873
3874## Automatic trait implementations
3875
3876When a type is declared as an `auto trait`, we will automatically
3877create impls for every struct/enum/union, unless an explicit impl is
3878provided. These automatic impls contain a where clause for each field
3879of the form `T: AutoTrait`, where `T` is the type of the field and
3880`AutoTrait` is the auto trait in question. As an example, consider the
3881struct `List` and the auto trait `Send`:
3882
3883```rust
3884struct List<T> {
3885  data: T,
3886  next: Option<Box<List<T>>>,
3887}
3888```
3889
3890Presuming that there is no explicit impl of `Send` for `List`, the
3891compiler will supply an automatic impl of the form:
3892
3893```rust
3894struct List<T> {
3895  data: T,
3896  next: Option<Box<List<T>>>,
3897}
3898
3899unsafe impl<T> Send for List<T>
3900where
3901  T: Send, // from the field `data`
3902  Option<Box<List<T>>>: Send, // from the field `next`
3903{ }
3904```
3905
3906Explicit impls may be either positive or negative. They take the form:
3907
3908```rust,ignore (partial-example)
3909impl<...> AutoTrait for StructName<..> { }
3910impl<...> !AutoTrait for StructName<..> { }
3911```
3912
3913## Coinduction: Auto traits permit cyclic matching
3914
3915Unlike ordinary trait matching, auto traits are **coinductive**. This
3916means, in short, that cycles which occur in trait matching are
3917considered ok. As an example, consider the recursive struct `List`
3918introduced in the previous section. In attempting to determine whether
3919`List: Send`, we would wind up in a cycle: to apply the impl, we must
3920show that `Option<Box<List>>: Send`, which will in turn require
3921`Box<List>: Send` and then finally `List: Send` again. Under ordinary
3922trait matching, this cycle would be an error, but for an auto trait it
3923is considered a successful match.
3924
3925## Items
3926
3927Auto traits cannot have any trait items, such as methods or associated types. This ensures that we can generate default implementations.
3928
3929## Supertraits
3930
3931Auto traits cannot have supertraits. This is for soundness reasons, as the interaction of coinduction with implied bounds is difficult to reconcile.
3932"##,
3933        default_severity: Severity::Allow,
3934        warn_since: None,
3935        deny_since: None,
3936    },
3937    Lint {
3938        label: "autodiff",
3939        description: r##"# `autodiff`
3940
3941
3942
3943The tracking issue for this feature is: [#124509]
3944
3945[#124509]: https://github.com/rust-lang/rust/issues/124509
3946
3947------------------------
3948"##,
3949        default_severity: Severity::Allow,
3950        warn_since: None,
3951        deny_since: None,
3952    },
3953    Lint {
3954        label: "avr_target_feature",
3955        description: r##"# `avr_target_feature`
3956
3957Target features on avr.
3958
3959The tracking issue for this feature is: [#146889]
3960
3961[#146889]: https://github.com/rust-lang/rust/issues/146889
3962
3963------------------------
3964"##,
3965        default_severity: Severity::Allow,
3966        warn_since: None,
3967        deny_since: None,
3968    },
3969    Lint {
3970        label: "avx10_target_feature",
3971        description: r##"# `avx10_target_feature`
3972
3973Allows using Intel AVX10 target features and intrinsics
3974
3975The tracking issue for this feature is: [#138843]
3976
3977[#138843]: https://github.com/rust-lang/rust/issues/138843
3978
3979------------------------
3980"##,
3981        default_severity: Severity::Allow,
3982        warn_since: None,
3983        deny_since: None,
3984    },
3985    Lint {
3986        label: "backtrace_frames",
3987        description: r##"# `backtrace_frames`
3988
3989
3990
3991The tracking issue for this feature is: [#79676]
3992
3993[#79676]: https://github.com/rust-lang/rust/issues/79676
3994
3995------------------------
3996"##,
3997        default_severity: Severity::Allow,
3998        warn_since: None,
3999        deny_since: None,
4000    },
4001    Lint {
4002        label: "bikeshed_guaranteed_no_drop",
4003        description: r##"# `bikeshed_guaranteed_no_drop`
4004
4005
4006
4007This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
4008
4009------------------------
4010"##,
4011        default_severity: Severity::Allow,
4012        warn_since: None,
4013        deny_since: None,
4014    },
4015    Lint {
4016        label: "binary_heap_as_mut_slice",
4017        description: r##"# `binary_heap_as_mut_slice`
4018
4019
4020
4021The tracking issue for this feature is: [#154009]
4022
4023[#154009]: https://github.com/rust-lang/rust/issues/154009
4024
4025------------------------
4026"##,
4027        default_severity: Severity::Allow,
4028        warn_since: None,
4029        deny_since: None,
4030    },
4031    Lint {
4032        label: "binary_heap_drain_sorted",
4033        description: r##"# `binary_heap_drain_sorted`
4034
4035
4036
4037The tracking issue for this feature is: [#59278]
4038
4039[#59278]: https://github.com/rust-lang/rust/issues/59278
4040
4041------------------------
4042"##,
4043        default_severity: Severity::Allow,
4044        warn_since: None,
4045        deny_since: None,
4046    },
4047    Lint {
4048        label: "binary_heap_from_raw_vec",
4049        description: r##"# `binary_heap_from_raw_vec`
4050
4051
4052
4053The tracking issue for this feature is: [#152500]
4054
4055[#152500]: https://github.com/rust-lang/rust/issues/152500
4056
4057------------------------
4058"##,
4059        default_severity: Severity::Allow,
4060        warn_since: None,
4061        deny_since: None,
4062    },
4063    Lint {
4064        label: "binary_heap_into_iter_sorted",
4065        description: r##"# `binary_heap_into_iter_sorted`
4066
4067
4068
4069The tracking issue for this feature is: [#59278]
4070
4071[#59278]: https://github.com/rust-lang/rust/issues/59278
4072
4073------------------------
4074"##,
4075        default_severity: Severity::Allow,
4076        warn_since: None,
4077        deny_since: None,
4078    },
4079    Lint {
4080        label: "binary_heap_peek_mut_refresh",
4081        description: r##"# `binary_heap_peek_mut_refresh`
4082
4083
4084
4085The tracking issue for this feature is: [#138355]
4086
4087[#138355]: https://github.com/rust-lang/rust/issues/138355
4088
4089------------------------
4090"##,
4091        default_severity: Severity::Allow,
4092        warn_since: None,
4093        deny_since: None,
4094    },
4095    Lint {
4096        label: "binary_heap_pop_if",
4097        description: r##"# `binary_heap_pop_if`
4098
4099
4100
4101The tracking issue for this feature is: [#151828]
4102
4103[#151828]: https://github.com/rust-lang/rust/issues/151828
4104
4105------------------------
4106"##,
4107        default_severity: Severity::Allow,
4108        warn_since: None,
4109        deny_since: None,
4110    },
4111    Lint {
4112        label: "borrowed_buf_init",
4113        description: r##"# `borrowed_buf_init`
4114
4115
4116
4117The tracking issue for this feature is: [#160476]
4118
4119[#160476]: https://github.com/rust-lang/rust/issues/160476
4120
4121------------------------
4122"##,
4123        default_severity: Severity::Allow,
4124        warn_since: None,
4125        deny_since: None,
4126    },
4127    Lint {
4128        label: "bound_as_ref",
4129        description: r##"# `bound_as_ref`
4130
4131
4132
4133The tracking issue for this feature is: [#80996]
4134
4135[#80996]: https://github.com/rust-lang/rust/issues/80996
4136
4137------------------------
4138"##,
4139        default_severity: Severity::Allow,
4140        warn_since: None,
4141        deny_since: None,
4142    },
4143    Lint {
4144        label: "bound_copied",
4145        description: r##"# `bound_copied`
4146
4147
4148
4149The tracking issue for this feature is: [#145966]
4150
4151[#145966]: https://github.com/rust-lang/rust/issues/145966
4152
4153------------------------
4154"##,
4155        default_severity: Severity::Allow,
4156        warn_since: None,
4157        deny_since: None,
4158    },
4159    Lint {
4160        label: "box_as_non_null",
4161        description: r##"# `box_as_non_null`
4162
4163
4164
4165The tracking issue for this feature is: [#157345]
4166
4167[#157345]: https://github.com/rust-lang/rust/issues/157345
4168
4169------------------------
4170"##,
4171        default_severity: Severity::Allow,
4172        warn_since: None,
4173        deny_since: None,
4174    },
4175    Lint {
4176        label: "box_internals",
4177        description: r##"# `box_internals`
4178
4179
4180
4181This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
4182
4183------------------------
4184"##,
4185        default_severity: Severity::Allow,
4186        warn_since: None,
4187        deny_since: None,
4188    },
4189    Lint {
4190        label: "box_into_boxed_slice",
4191        description: r##"# `box_into_boxed_slice`
4192
4193
4194
4195The tracking issue for this feature is: [#71582]
4196
4197[#71582]: https://github.com/rust-lang/rust/issues/71582
4198
4199------------------------
4200"##,
4201        default_severity: Severity::Allow,
4202        warn_since: None,
4203        deny_since: None,
4204    },
4205    Lint {
4206        label: "box_into_inner",
4207        description: r##"# `box_into_inner`
4208
4209
4210
4211The tracking issue for this feature is: [#80437]
4212
4213[#80437]: https://github.com/rust-lang/rust/issues/80437
4214
4215------------------------
4216"##,
4217        default_severity: Severity::Allow,
4218        warn_since: None,
4219        deny_since: None,
4220    },
4221    Lint {
4222        label: "bpf_target_feature",
4223        description: r##"# `bpf_target_feature`
4224
4225Target features on bpf.
4226
4227The tracking issue for this feature is: [#150247]
4228
4229[#150247]: https://github.com/rust-lang/rust/issues/150247
4230
4231------------------------
4232"##,
4233        default_severity: Severity::Allow,
4234        warn_since: None,
4235        deny_since: None,
4236    },
4237    Lint {
4238        label: "breakpoint",
4239        description: r##"# `breakpoint`
4240
4241
4242
4243The tracking issue for this feature is: [#133724]
4244
4245[#133724]: https://github.com/rust-lang/rust/issues/133724
4246
4247------------------------
4248"##,
4249        default_severity: Severity::Allow,
4250        warn_since: None,
4251        deny_since: None,
4252    },
4253    Lint {
4254        label: "btree_cursors",
4255        description: r##"# `btree_cursors`
4256
4257
4258
4259The tracking issue for this feature is: [#107540]
4260
4261[#107540]: https://github.com/rust-lang/rust/issues/107540
4262
4263------------------------
4264"##,
4265        default_severity: Severity::Allow,
4266        warn_since: None,
4267        deny_since: None,
4268    },
4269    Lint {
4270        label: "btree_merge",
4271        description: r##"# `btree_merge`
4272
4273
4274
4275The tracking issue for this feature is: [#152152]
4276
4277[#152152]: https://github.com/rust-lang/rust/issues/152152
4278
4279------------------------
4280"##,
4281        default_severity: Severity::Allow,
4282        warn_since: None,
4283        deny_since: None,
4284    },
4285    Lint {
4286        label: "btree_set_entry",
4287        description: r##"# `btree_set_entry`
4288
4289
4290
4291The tracking issue for this feature is: [#133549]
4292
4293[#133549]: https://github.com/rust-lang/rust/issues/133549
4294
4295------------------------
4296"##,
4297        default_severity: Severity::Allow,
4298        warn_since: None,
4299        deny_since: None,
4300    },
4301    Lint {
4302        label: "btreemap_alloc",
4303        description: r##"# `btreemap_alloc`
4304
4305
4306
4307The tracking issue for this feature is: [#163177]
4308
4309[#163177]: https://github.com/rust-lang/rust/issues/163177
4310
4311------------------------
4312"##,
4313        default_severity: Severity::Allow,
4314        warn_since: None,
4315        deny_since: None,
4316    },
4317    Lint {
4318        label: "buf_read_has_data_left",
4319        description: r##"# `buf_read_has_data_left`
4320
4321
4322
4323The tracking issue for this feature is: [#86423]
4324
4325[#86423]: https://github.com/rust-lang/rust/issues/86423
4326
4327------------------------
4328"##,
4329        default_severity: Severity::Allow,
4330        warn_since: None,
4331        deny_since: None,
4332    },
4333    Lint {
4334        label: "bufreader_peek",
4335        description: r##"# `bufreader_peek`
4336
4337
4338
4339The tracking issue for this feature is: [#128405]
4340
4341[#128405]: https://github.com/rust-lang/rust/issues/128405
4342
4343------------------------
4344"##,
4345        default_severity: Severity::Allow,
4346        warn_since: None,
4347        deny_since: None,
4348    },
4349    Lint {
4350        label: "builtin_syntax",
4351        description: r##"# `builtin_syntax`
4352
4353Allows builtin # foo() syntax
4354
4355The tracking issue for this feature is: [#110680]
4356
4357[#110680]: https://github.com/rust-lang/rust/issues/110680
4358
4359------------------------
4360"##,
4361        default_severity: Severity::Allow,
4362        warn_since: None,
4363        deny_since: None,
4364    },
4365    Lint {
4366        label: "byte_str",
4367        description: r##"# `byte_str`
4368
4369
4370
4371The tracking issue for this feature is: [#134915]
4372
4373[#134915]: https://github.com/rust-lang/rust/issues/134915
4374
4375------------------------
4376"##,
4377        default_severity: Severity::Allow,
4378        warn_since: None,
4379        deny_since: None,
4380    },
4381    Lint {
4382        label: "byte_str_internals",
4383        description: r##"# `byte_str_internals`
4384
4385
4386
4387This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
4388
4389------------------------
4390"##,
4391        default_severity: Severity::Allow,
4392        warn_since: None,
4393        deny_since: None,
4394    },
4395    Lint {
4396        label: "byte_str_to_string",
4397        description: r##"# `byte_str_to_string`
4398
4399
4400
4401The tracking issue for this feature is: [#134915]
4402
4403[#134915]: https://github.com/rust-lang/rust/issues/134915
4404
4405------------------------
4406"##,
4407        default_severity: Severity::Allow,
4408        warn_since: None,
4409        deny_since: None,
4410    },
4411    Lint {
4412        label: "c_size_t",
4413        description: r##"# `c_size_t`
4414
4415
4416
4417The tracking issue for this feature is: [#88345]
4418
4419[#88345]: https://github.com/rust-lang/rust/issues/88345
4420
4421------------------------
4422"##,
4423        default_severity: Severity::Allow,
4424        warn_since: None,
4425        deny_since: None,
4426    },
4427    Lint {
4428        label: "c_variadic_experimental_arch",
4429        description: r##"# `c_variadic_experimental_arch`
4430
4431Allows defining c-variadic functions on targets where this feature has not yet undergone sufficient testing for stabilization.
4432
4433The tracking issue for this feature is: [#155973]
4434
4435[#155973]: https://github.com/rust-lang/rust/issues/155973
4436
4437------------------------
4438"##,
4439        default_severity: Severity::Allow,
4440        warn_since: None,
4441        deny_since: None,
4442    },
4443    Lint {
4444        label: "c_variadic_int128",
4445        description: r##"# `c_variadic_int128`
4446
4447
4448
4449The tracking issue for this feature is: [#155752]
4450
4451[#155752]: https://github.com/rust-lang/rust/issues/155752
4452
4453------------------------
4454"##,
4455        default_severity: Severity::Allow,
4456        warn_since: None,
4457        deny_since: None,
4458    },
4459    Lint {
4460        label: "c_variadic_va_arg_safe",
4461        description: r##"# `c_variadic_va_arg_safe`
4462
4463
4464
4465The tracking issue for this feature is: [#162911]
4466
4467[#162911]: https://github.com/rust-lang/rust/issues/162911
4468
4469------------------------
4470"##,
4471        default_severity: Severity::Allow,
4472        warn_since: None,
4473        deny_since: None,
4474    },
4475    Lint {
4476        label: "c_void_variant",
4477        description: r##"# `c_void_variant`
4478
4479This feature is internal to the Rust compiler and is not intended for general use.
4480
4481------------------------
4482"##,
4483        default_severity: Severity::Allow,
4484        warn_since: None,
4485        deny_since: None,
4486    },
4487    Lint {
4488        label: "can_vector",
4489        description: r##"# `can_vector`
4490
4491
4492
4493The tracking issue for this feature is: [#69941]
4494
4495[#69941]: https://github.com/rust-lang/rust/issues/69941
4496
4497------------------------
4498"##,
4499        default_severity: Severity::Allow,
4500        warn_since: None,
4501        deny_since: None,
4502    },
4503    Lint {
4504        label: "case_ignorable",
4505        description: r##"# `case_ignorable`
4506
4507
4508
4509The tracking issue for this feature is: [#154848]
4510
4511[#154848]: https://github.com/rust-lang/rust/issues/154848
4512
4513------------------------
4514"##,
4515        default_severity: Severity::Allow,
4516        warn_since: None,
4517        deny_since: None,
4518    },
4519    Lint {
4520        label: "casefold",
4521        description: r##"# `casefold`
4522
4523
4524
4525The tracking issue for this feature is: [#157000]
4526
4527[#157000]: https://github.com/rust-lang/rust/issues/157000
4528
4529------------------------
4530"##,
4531        default_severity: Severity::Allow,
4532        warn_since: None,
4533        deny_since: None,
4534    },
4535    Lint {
4536        label: "cast_maybe_uninit",
4537        description: r##"# `cast_maybe_uninit`
4538
4539
4540
4541The tracking issue for this feature is: [#145036]
4542
4543[#145036]: https://github.com/rust-lang/rust/issues/145036
4544
4545------------------------
4546"##,
4547        default_severity: Severity::Allow,
4548        warn_since: None,
4549        deny_since: None,
4550    },
4551    Lint {
4552        label: "cell_get_cloned",
4553        description: r##"# `cell_get_cloned`
4554
4555
4556
4557The tracking issue for this feature is: [#145329]
4558
4559[#145329]: https://github.com/rust-lang/rust/issues/145329
4560
4561------------------------
4562"##,
4563        default_severity: Severity::Allow,
4564        warn_since: None,
4565        deny_since: None,
4566    },
4567    Lint {
4568        label: "cell_leak",
4569        description: r##"# `cell_leak`
4570
4571
4572
4573The tracking issue for this feature is: [#69099]
4574
4575[#69099]: https://github.com/rust-lang/rust/issues/69099
4576
4577------------------------
4578"##,
4579        default_severity: Severity::Allow,
4580        warn_since: None,
4581        deny_since: None,
4582    },
4583    Lint {
4584        label: "cfg_accessible",
4585        description: r##"# `cfg_accessible`
4586
4587
4588
4589The tracking issue for this feature is: [#64797]
4590
4591[#64797]: https://github.com/rust-lang/rust/issues/64797
4592
4593------------------------
4594"##,
4595        default_severity: Severity::Allow,
4596        warn_since: None,
4597        deny_since: None,
4598    },
4599    Lint {
4600        label: "cfg_contract_checks",
4601        description: r##"# `cfg_contract_checks`
4602
4603Allows the use of `#[cfg(contract_checks)` to check if contract checks are enabled.
4604
4605The tracking issue for this feature is: [#128044]
4606
4607[#128044]: https://github.com/rust-lang/rust/issues/128044
4608
4609------------------------
4610"##,
4611        default_severity: Severity::Allow,
4612        warn_since: None,
4613        deny_since: None,
4614    },
4615    Lint {
4616        label: "cfg_eval",
4617        description: r##"# `cfg_eval`
4618
4619
4620
4621The tracking issue for this feature is: [#82679]
4622
4623[#82679]: https://github.com/rust-lang/rust/issues/82679
4624
4625------------------------
4626"##,
4627        default_severity: Severity::Allow,
4628        warn_since: None,
4629        deny_since: None,
4630    },
4631    Lint {
4632        label: "cfg_overflow_checks",
4633        description: r##"# `cfg_overflow_checks`
4634
4635Allows the use of `#[cfg(overflow_checks)` to check if integer overflow behaviour.
4636
4637The tracking issue for this feature is: [#111466]
4638
4639[#111466]: https://github.com/rust-lang/rust/issues/111466
4640
4641------------------------
4642"##,
4643        default_severity: Severity::Allow,
4644        warn_since: None,
4645        deny_since: None,
4646    },
4647    Lint {
4648        label: "cfg_relocation_model",
4649        description: r##"# `cfg_relocation_model`
4650
4651Provides the relocation model information as cfg entry
4652
4653The tracking issue for this feature is: [#114929]
4654
4655[#114929]: https://github.com/rust-lang/rust/issues/114929
4656
4657------------------------
4658"##,
4659        default_severity: Severity::Allow,
4660        warn_since: None,
4661        deny_since: None,
4662    },
4663    Lint {
4664        label: "cfg_sanitize",
4665        description: r##"# `cfg_sanitize`
4666
4667The tracking issue for this feature is: [#39699]
4668
4669[#39699]: https://github.com/rust-lang/rust/issues/39699
4670
4671------------------------
4672
4673The `cfg_sanitize` feature makes it possible to execute different code
4674depending on whether a particular sanitizer is enabled or not.
4675
4676## Examples
4677
4678```rust
4679#![feature(cfg_sanitize)]
4680
4681#[cfg(sanitize = "thread")]
4682fn a() {
4683    // ...
4684}
4685
4686#[cfg(not(sanitize = "thread"))]
4687fn a() {
4688    // ...
4689}
4690
4691fn b() {
4692    if cfg!(sanitize = "leak") {
4693        // ...
4694    } else {
4695        // ...
4696    }
4697}
4698```
4699"##,
4700        default_severity: Severity::Allow,
4701        warn_since: None,
4702        deny_since: None,
4703    },
4704    Lint {
4705        label: "cfg_sanitizer_cfi",
4706        description: r##"# `cfg_sanitizer_cfi`
4707
4708Allows `cfg(sanitizer_cfi_generalize_pointers)` and `cfg(sanitizer_cfi_normalize_integers)`.
4709
4710The tracking issue for this feature is: [#89653]
4711
4712[#89653]: https://github.com/rust-lang/rust/issues/89653
4713
4714------------------------
4715"##,
4716        default_severity: Severity::Allow,
4717        warn_since: None,
4718        deny_since: None,
4719    },
4720    Lint {
4721        label: "cfg_target_compact",
4722        description: r##"# `cfg_target_compact`
4723
4724Allows `cfg(target(abi = "..."))`.
4725
4726The tracking issue for this feature is: [#96901]
4727
4728[#96901]: https://github.com/rust-lang/rust/issues/96901
4729
4730------------------------
4731"##,
4732        default_severity: Severity::Allow,
4733        warn_since: None,
4734        deny_since: None,
4735    },
4736    Lint {
4737        label: "cfg_target_has_atomic",
4738        description: r##"# `cfg_target_has_atomic`
4739
4740Allows `cfg(target_has_atomic_load_store = "...")`.
4741
4742The tracking issue for this feature is: [#94039]
4743
4744[#94039]: https://github.com/rust-lang/rust/issues/94039
4745
4746------------------------
4747"##,
4748        default_severity: Severity::Allow,
4749        warn_since: None,
4750        deny_since: None,
4751    },
4752    Lint {
4753        label: "cfg_target_has_reliable_f16_f128",
4754        description: r##"# `cfg_target_has_reliable_f16_f128`
4755
4756Allows checking whether or not the backend correctly supports unstable float types.
4757
4758This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
4759
4760------------------------
4761"##,
4762        default_severity: Severity::Allow,
4763        warn_since: None,
4764        deny_since: None,
4765    },
4766    Lint {
4767        label: "cfg_target_has_reliable_f16b",
4768        description: r##"# `cfg_target_has_reliable_f16b`
4769
4770Allows checking whether or not the backend correctly supports the unstable `f16b` type.
4771
4772This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
4773
4774------------------------
4775"##,
4776        default_severity: Severity::Allow,
4777        warn_since: None,
4778        deny_since: None,
4779    },
4780    Lint {
4781        label: "cfg_target_has_threads",
4782        description: r##"# `cfg_target_has_threads`
4783
4784Allows checking whether or not the target might have thread support.
4785
4786This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
4787
4788------------------------
4789"##,
4790        default_severity: Severity::Allow,
4791        warn_since: None,
4792        deny_since: None,
4793    },
4794    Lint {
4795        label: "cfg_target_object_format",
4796        description: r##"# `cfg_target_object_format`
4797
4798The tracking issue for this feature is: [#152586]
4799
4800[#152586]: https://github.com/rust-lang/rust/issues/152586
4801
4802------------------------
4803
4804The `cfg_target_object_format` feature makes it possible to execute different code
4805depending on the current target's object file format.
4806
4807## Examples
4808
4809```rust
4810#![feature(cfg_target_object_format)]
4811
4812#[cfg(target_object_format = "elf")]
4813fn a() {
4814    // ...
4815}
4816
4817#[cfg(target_object_format = "mach-o")]
4818fn a() {
4819    // ...
4820}
4821
4822fn b() {
4823    if cfg!(target_object_format = "wasm") {
4824        // ...
4825    } else {
4826        // ...
4827    }
4828}
4829```
4830"##,
4831        default_severity: Severity::Allow,
4832        warn_since: None,
4833        deny_since: None,
4834    },
4835    Lint {
4836        label: "cfg_target_thread_local",
4837        description: r##"# `cfg_target_thread_local`
4838
4839Allows `cfg(target_thread_local)`.
4840
4841The tracking issue for this feature is: [#29594]
4842
4843[#29594]: https://github.com/rust-lang/rust/issues/29594
4844
4845------------------------
4846"##,
4847        default_severity: Severity::Allow,
4848        warn_since: None,
4849        deny_since: None,
4850    },
4851    Lint {
4852        label: "cfg_ub_checks",
4853        description: r##"# `cfg_ub_checks`
4854
4855Allows the use of `#[cfg(ub_checks)` to check if UB checks are enabled.
4856
4857The tracking issue for this feature is: [#123499]
4858
4859[#123499]: https://github.com/rust-lang/rust/issues/123499
4860
4861------------------------
4862"##,
4863        default_severity: Severity::Allow,
4864        warn_since: None,
4865        deny_since: None,
4866    },
4867    Lint {
4868        label: "cfg_version",
4869        description: r##"# `cfg_version`
4870
4871The tracking issue for this feature is: [#64796]
4872
4873[#64796]: https://github.com/rust-lang/rust/issues/64796
4874
4875------------------------
4876
4877The `cfg_version` feature makes it possible to execute different code
4878depending on the compiler version. It will return true if the compiler
4879version is greater than or equal to the specified version.
4880
4881## Examples
4882
4883```rust
4884#![feature(cfg_version)]
4885
4886#[cfg(version("1.42"))] // 1.42 and above
4887fn a() {
4888    // ...
4889}
4890
4891#[cfg(not(version("1.42")))] // 1.41 and below
4892fn a() {
4893    // ...
4894}
4895
4896fn b() {
4897    if cfg!(version("1.42")) {
4898        // ...
4899    } else {
4900        // ...
4901    }
4902}
4903```
4904"##,
4905        default_severity: Severity::Allow,
4906        warn_since: None,
4907        deny_since: None,
4908    },
4909    Lint {
4910        label: "cfi_encoding",
4911        description: r##"# `cfi_encoding`
4912
4913The tracking issue for this feature is: [#89653]
4914
4915[#89653]: https://github.com/rust-lang/rust/issues/89653
4916
4917------------------------
4918
4919The `cfi_encoding` feature allows the user to define a CFI encoding for a type.
4920It allows the user to use a different names for types that otherwise would be
4921required to have the same name as used in externally defined C functions.
4922
4923## Examples
4924
4925```rust
4926#![feature(cfi_encoding, extern_types)]
4927
4928#[cfi_encoding = "3Foo"]
4929pub struct Type1(i32);
4930
4931extern {
4932    #[cfi_encoding = "3Bar"]
4933    type Type2;
4934}
4935```
4936"##,
4937        default_severity: Severity::Allow,
4938        warn_since: None,
4939        deny_since: None,
4940    },
4941    Lint {
4942        label: "char_internals",
4943        description: r##"# `char_internals`
4944
4945
4946
4947This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
4948
4949------------------------
4950"##,
4951        default_severity: Severity::Allow,
4952        warn_since: None,
4953        deny_since: None,
4954    },
4955    Lint {
4956        label: "char_to_u32",
4957        description: r##"# `char_to_u32`
4958
4959
4960
4961The tracking issue for this feature is: [#158938]
4962
4963[#158938]: https://github.com/rust-lang/rust/issues/158938
4964
4965------------------------
4966"##,
4967        default_severity: Severity::Allow,
4968        warn_since: None,
4969        deny_since: None,
4970    },
4971    Lint {
4972        label: "char_unassigned_private_use",
4973        description: r##"# `char_unassigned_private_use`
4974
4975
4976
4977The tracking issue for this feature is: [#158322]
4978
4979[#158322]: https://github.com/rust-lang/rust/issues/158322
4980
4981------------------------
4982"##,
4983        default_severity: Severity::Allow,
4984        warn_since: None,
4985        deny_since: None,
4986    },
4987    Lint {
4988        label: "checked_type_aliases",
4989        description: r##"# `checked_type_aliases`
4990
4991Allow to have type alias types for inter-crate use.
4992
4993The tracking issue for this feature is: [#112792]
4994
4995[#112792]: https://github.com/rust-lang/rust/issues/112792
4996
4997------------------------
4998"##,
4999        default_severity: Severity::Allow,
5000        warn_since: None,
5001        deny_since: None,
5002    },
5003    Lint {
5004        label: "clamp_bounds",
5005        description: r##"# `clamp_bounds`
5006
5007
5008
5009The tracking issue for this feature is: [#147781]
5010
5011[#147781]: https://github.com/rust-lang/rust/issues/147781
5012
5013------------------------
5014"##,
5015        default_severity: Severity::Allow,
5016        warn_since: None,
5017        deny_since: None,
5018    },
5019    Lint {
5020        label: "clamp_magnitude",
5021        description: r##"# `clamp_magnitude`
5022
5023
5024
5025The tracking issue for this feature is: [#148519]
5026
5027[#148519]: https://github.com/rust-lang/rust/issues/148519
5028
5029------------------------
5030"##,
5031        default_severity: Severity::Allow,
5032        warn_since: None,
5033        deny_since: None,
5034    },
5035    Lint {
5036        label: "clamp_to",
5037        description: r##"# `clamp_to`
5038
5039
5040
5041The tracking issue for this feature is: [#147781]
5042
5043[#147781]: https://github.com/rust-lang/rust/issues/147781
5044
5045------------------------
5046"##,
5047        default_severity: Severity::Allow,
5048        warn_since: None,
5049        deny_since: None,
5050    },
5051    Lint {
5052        label: "clflushopt_target_feature",
5053        description: r##"# `clflushopt_target_feature`
5054
5055The `clflushopt` target feature on x86.
5056
5057The tracking issue for this feature is: [#157096]
5058
5059[#157096]: https://github.com/rust-lang/rust/issues/157096
5060
5061------------------------
5062"##,
5063        default_severity: Severity::Allow,
5064        warn_since: None,
5065        deny_since: None,
5066    },
5067    Lint {
5068        label: "clone_from_ref",
5069        description: r##"# `clone_from_ref`
5070
5071
5072
5073The tracking issue for this feature is: [#149075]
5074
5075[#149075]: https://github.com/rust-lang/rust/issues/149075
5076
5077------------------------
5078"##,
5079        default_severity: Severity::Allow,
5080        warn_since: None,
5081        deny_since: None,
5082    },
5083    Lint {
5084        label: "clone_to_uninit",
5085        description: r##"# `clone_to_uninit`
5086
5087
5088
5089The tracking issue for this feature is: [#126799]
5090
5091[#126799]: https://github.com/rust-lang/rust/issues/126799
5092
5093------------------------
5094"##,
5095        default_severity: Severity::Allow,
5096        warn_since: None,
5097        deny_since: None,
5098    },
5099    Lint {
5100        label: "closure_lifetime_binder",
5101        description: r##"# `closure_lifetime_binder`
5102
5103Allows `for<...>` on closures and coroutines.
5104
5105The tracking issue for this feature is: [#97362]
5106
5107[#97362]: https://github.com/rust-lang/rust/issues/97362
5108
5109------------------------
5110"##,
5111        default_severity: Severity::Allow,
5112        warn_since: None,
5113        deny_since: None,
5114    },
5115    Lint {
5116        label: "closure_track_caller",
5117        description: r##"# `closure_track_caller`
5118
5119The tracking issue for this feature is: [#87417]
5120
5121[#87417]: https://github.com/rust-lang/rust/issues/87417
5122
5123------------------------
5124
5125Allows using the `#[track_caller]` attribute on closures and coroutines.
5126Calls made to the closure or coroutine will have caller information
5127available through `std::panic::Location::caller()`, just like using
5128`#[track_caller]` on a function.
5129"##,
5130        default_severity: Severity::Allow,
5131        warn_since: None,
5132        deny_since: None,
5133    },
5134    Lint {
5135        label: "cmp_minmax",
5136        description: r##"# `cmp_minmax`
5137
5138
5139
5140The tracking issue for this feature is: [#115939]
5141
5142[#115939]: https://github.com/rust-lang/rust/issues/115939
5143
5144------------------------
5145"##,
5146        default_severity: Severity::Allow,
5147        warn_since: None,
5148        deny_since: None,
5149    },
5150    Lint {
5151        label: "cmp_splat",
5152        description: r##"# `cmp_splat`
5153
5154
5155
5156The tracking issue for this feature is: [#160728]
5157
5158[#160728]: https://github.com/rust-lang/rust/issues/160728
5159
5160------------------------
5161"##,
5162        default_severity: Severity::Allow,
5163        warn_since: None,
5164        deny_since: None,
5165    },
5166    Lint {
5167        label: "cmp_splat_internals",
5168        description: r##"# `cmp_splat_internals`
5169
5170
5171
5172The tracking issue for this feature is: [#160728]
5173
5174[#160728]: https://github.com/rust-lang/rust/issues/160728
5175
5176------------------------
5177"##,
5178        default_severity: Severity::Allow,
5179        warn_since: None,
5180        deny_since: None,
5181    },
5182    Lint {
5183        label: "cmse_nonsecure_entry",
5184        description: r##"# `cmse_nonsecure_entry`
5185
5186The tracking issue for this feature is: [#75835]
5187
5188[#75835]: https://github.com/rust-lang/rust/issues/75835
5189
5190------------------------
5191
5192The [TrustZone-M
5193feature](https://developer.arm.com/documentation/100690/latest/) is available
5194for targets with the Armv8-M architecture profile (`thumbv8m` in their target
5195name).
5196LLVM, the Rust compiler and the linker are providing
5197[support](https://developer.arm.com/documentation/ecm0359818/latest/) for the
5198TrustZone-M feature.
5199
5200One of the things provided with this unstable feature is the "cmse-nonsecure-entry" ABI.
5201This ABI marks a Secure function as an entry function (see
5202[section 5.4](https://developer.arm.com/documentation/ecm0359818/latest/) for details).
5203With this ABI, the compiler will do the following:
5204* add a special symbol on the function which is the `__acle_se_` prefix and the
5205  standard function name
5206* constrain the number of parameters to avoid using the Non-Secure stack
5207* before returning from the function, clear registers that might contain Secure
5208  information
5209* use the `BXNS` instruction to return
5210
5211Because the stack can not be used to pass parameters, there will be compilation
5212errors if:
5213* the total size of all parameters is too big (for example, more than four 32-bit integers)
5214
5215The special symbol `__acle_se_` will be used by the linker to generate a secure
5216gateway veneer.
5217
5218<!-- NOTE(ignore) this example is specific to thumbv8m targets -->
5219
5220``` rust,ignore
5221#![no_std]
5222#![feature(cmse_nonsecure_entry)]
5223
5224#[no_mangle]
5225pub extern "cmse-nonsecure-entry" fn entry_function(input: u32) -> u32 {
5226    input + 6
5227}
5228```
5229
5230``` text
5231$ rustc --emit obj --crate-type lib --target thumbv8m.main-none-eabi function.rs
5232$ arm-none-eabi-objdump -D function.o
5233
523400000000 <entry_function>:
5235   0:   b580            push    {r7, lr}
5236   2:   466f            mov     r7, sp
5237   4:   b082            sub     sp, #8
5238   6:   9001            str     r0, [sp, #4]
5239   8:   1d81            adds    r1, r0, #6
5240   a:   460a            mov     r2, r1
5241   c:   4281            cmp     r1, r0
5242   e:   9200            str     r2, [sp, #0]
5243  10:   d30b            bcc.n   2a <entry_function+0x2a>
5244  12:   e7ff            b.n     14 <entry_function+0x14>
5245  14:   9800            ldr     r0, [sp, #0]
5246  16:   b002            add     sp, #8
5247  18:   e8bd 4080       ldmia.w sp!, {r7, lr}
5248  1c:   4671            mov     r1, lr
5249  1e:   4672            mov     r2, lr
5250  20:   4673            mov     r3, lr
5251  22:   46f4            mov     ip, lr
5252  24:   f38e 8800       msr     CPSR_f, lr
5253  28:   4774            bxns    lr
5254  2a:   f240 0000       movw    r0, #0
5255  2e:   f2c0 0000       movt    r0, #0
5256  32:   f240 0200       movw    r2, #0
5257  36:   f2c0 0200       movt    r2, #0
5258  3a:   211c            movs    r1, #28
5259  3c:   f7ff fffe       bl      0 <_ZN4core9panicking5panic17h5c028258ca2fb3f5E>
5260  40:   defe            udf     #254    ; 0xfe
5261```
5262"##,
5263        default_severity: Severity::Allow,
5264        warn_since: None,
5265        deny_since: None,
5266    },
5267    Lint {
5268        label: "codeview_annotation",
5269        description: r##"# `codeview_annotation`
5270
5271
5272
5273The tracking issue for this feature is: [#163964]
5274
5275[#163964]: https://github.com/rust-lang/rust/issues/163964
5276
5277------------------------
5278"##,
5279        default_severity: Severity::Allow,
5280        warn_since: None,
5281        deny_since: None,
5282    },
5283    Lint {
5284        label: "coerce_pointee_validated",
5285        description: r##"# `coerce_pointee_validated`
5286
5287
5288
5289This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
5290
5291------------------------
5292"##,
5293        default_severity: Severity::Allow,
5294        warn_since: None,
5295        deny_since: None,
5296    },
5297    Lint {
5298        label: "coerce_unsized",
5299        description: r##"# `coerce_unsized`
5300
5301
5302
5303The tracking issue for this feature is: [#18598]
5304
5305[#18598]: https://github.com/rust-lang/rust/issues/18598
5306
5307------------------------
5308"##,
5309        default_severity: Severity::Allow,
5310        warn_since: None,
5311        deny_since: None,
5312    },
5313    Lint {
5314        label: "command_resolved_envs",
5315        description: r##"# `command_resolved_envs`
5316
5317
5318
5319The tracking issue for this feature is: [#149070]
5320
5321[#149070]: https://github.com/rust-lang/rust/issues/149070
5322
5323------------------------
5324"##,
5325        default_severity: Severity::Allow,
5326        warn_since: None,
5327        deny_since: None,
5328    },
5329    Lint {
5330        label: "compiler_builtins",
5331        description: r##"# `compiler_builtins`
5332
5333This feature is internal to the Rust compiler and is not intended for general use.
5334
5335------------------------
5336"##,
5337        default_severity: Severity::Allow,
5338        warn_since: None,
5339        deny_since: None,
5340    },
5341    Lint {
5342        label: "complex_numbers",
5343        description: r##"# `complex_numbers`
5344
5345
5346
5347The tracking issue for this feature is: [#154023]
5348
5349[#154023]: https://github.com/rust-lang/rust/issues/154023
5350
5351------------------------
5352"##,
5353        default_severity: Severity::Allow,
5354        warn_since: None,
5355        deny_since: None,
5356    },
5357    Lint {
5358        label: "concat_bytes",
5359        description: r##"# `concat_bytes`
5360
5361
5362
5363The tracking issue for this feature is: [#87555]
5364
5365[#87555]: https://github.com/rust-lang/rust/issues/87555
5366
5367------------------------
5368"##,
5369        default_severity: Severity::Allow,
5370        warn_since: None,
5371        deny_since: None,
5372    },
5373    Lint {
5374        label: "const_alloc_error",
5375        description: r##"# `const_alloc_error`
5376
5377
5378
5379The tracking issue for this feature is: [#92523]
5380
5381[#92523]: https://github.com/rust-lang/rust/issues/92523
5382
5383------------------------
5384"##,
5385        default_severity: Severity::Allow,
5386        warn_since: None,
5387        deny_since: None,
5388    },
5389    Lint {
5390        label: "const_array",
5391        description: r##"# `const_array`
5392
5393
5394
5395The tracking issue for this feature is: [#147606]
5396
5397[#147606]: https://github.com/rust-lang/rust/issues/147606
5398
5399------------------------
5400"##,
5401        default_severity: Severity::Allow,
5402        warn_since: None,
5403        deny_since: None,
5404    },
5405    Lint {
5406        label: "const_async_blocks",
5407        description: r##"# `const_async_blocks`
5408
5409Allows `async {}` expressions in const contexts.
5410
5411The tracking issue for this feature is: [#85368]
5412
5413[#85368]: https://github.com/rust-lang/rust/issues/85368
5414
5415------------------------
5416"##,
5417        default_severity: Severity::Allow,
5418        warn_since: None,
5419        deny_since: None,
5420    },
5421    Lint {
5422        label: "const_atomic",
5423        description: r##"# `const_atomic`
5424
5425
5426
5427The tracking issue for this feature is: [#160078]
5428
5429[#160078]: https://github.com/rust-lang/rust/issues/160078
5430
5431------------------------
5432"##,
5433        default_severity: Severity::Allow,
5434        warn_since: None,
5435        deny_since: None,
5436    },
5437    Lint {
5438        label: "const_binary_search",
5439        description: r##"# `const_binary_search`
5440
5441
5442
5443The tracking issue for this feature is: [#159532]
5444
5445[#159532]: https://github.com/rust-lang/rust/issues/159532
5446
5447------------------------
5448"##,
5449        default_severity: Severity::Allow,
5450        warn_since: None,
5451        deny_since: None,
5452    },
5453    Lint {
5454        label: "const_block_items",
5455        description: r##"# `const_block_items`
5456
5457Allows `const { ... }` as a shorthand for `const _: () = const { ... };` for module items.
5458
5459The tracking issue for this feature is: [#149226]
5460
5461[#149226]: https://github.com/rust-lang/rust/issues/149226
5462
5463------------------------
5464"##,
5465        default_severity: Severity::Allow,
5466        warn_since: None,
5467        deny_since: None,
5468    },
5469    Lint {
5470        label: "const_bool",
5471        description: r##"# `const_bool`
5472
5473
5474
5475The tracking issue for this feature is: [#151531]
5476
5477[#151531]: https://github.com/rust-lang/rust/issues/151531
5478
5479------------------------
5480"##,
5481        default_severity: Severity::Allow,
5482        warn_since: None,
5483        deny_since: None,
5484    },
5485    Lint {
5486        label: "const_btree_len",
5487        description: r##"# `const_btree_len`
5488
5489
5490
5491The tracking issue for this feature is: [#71835]
5492
5493[#71835]: https://github.com/rust-lang/rust/issues/71835
5494
5495------------------------
5496"##,
5497        default_severity: Severity::Allow,
5498        warn_since: None,
5499        deny_since: None,
5500    },
5501    Lint {
5502        label: "const_c_variadic",
5503        description: r##"# `const_c_variadic`
5504
5505Allows defining and calling c-variadic functions in const contexts.
5506
5507The tracking issue for this feature is: [#151787]
5508
5509[#151787]: https://github.com/rust-lang/rust/issues/151787
5510
5511------------------------
5512"##,
5513        default_severity: Severity::Allow,
5514        warn_since: None,
5515        deny_since: None,
5516    },
5517    Lint {
5518        label: "const_carrying_mul_add",
5519        description: r##"# `const_carrying_mul_add`
5520
5521
5522
5523The tracking issue for this feature is: [#85532]
5524
5525[#85532]: https://github.com/rust-lang/rust/issues/85532
5526
5527------------------------
5528"##,
5529        default_severity: Severity::Allow,
5530        warn_since: None,
5531        deny_since: None,
5532    },
5533    Lint {
5534        label: "const_cell_traits",
5535        description: r##"# `const_cell_traits`
5536
5537
5538
5539The tracking issue for this feature is: [#147787]
5540
5541[#147787]: https://github.com/rust-lang/rust/issues/147787
5542
5543------------------------
5544"##,
5545        default_severity: Severity::Allow,
5546        warn_since: None,
5547        deny_since: None,
5548    },
5549    Lint {
5550        label: "const_clone",
5551        description: r##"# `const_clone`
5552
5553
5554
5555The tracking issue for this feature is: [#142757]
5556
5557[#142757]: https://github.com/rust-lang/rust/issues/142757
5558
5559------------------------
5560"##,
5561        default_severity: Severity::Allow,
5562        warn_since: None,
5563        deny_since: None,
5564    },
5565    Lint {
5566        label: "const_closures",
5567        description: r##"# `const_closures`
5568
5569Allows `const || {}` closures in const contexts.
5570
5571The tracking issue for this feature is: [#106003]
5572
5573[#106003]: https://github.com/rust-lang/rust/issues/106003
5574
5575------------------------
5576"##,
5577        default_severity: Severity::Allow,
5578        warn_since: None,
5579        deny_since: None,
5580    },
5581    Lint {
5582        label: "const_cmp",
5583        description: r##"# `const_cmp`
5584
5585
5586
5587The tracking issue for this feature is: [#143800]
5588
5589[#143800]: https://github.com/rust-lang/rust/issues/143800
5590
5591------------------------
5592"##,
5593        default_severity: Severity::Allow,
5594        warn_since: None,
5595        deny_since: None,
5596    },
5597    Lint {
5598        label: "const_control_flow",
5599        description: r##"# `const_control_flow`
5600
5601
5602
5603The tracking issue for this feature is: [#148739]
5604
5605[#148739]: https://github.com/rust-lang/rust/issues/148739
5606
5607------------------------
5608"##,
5609        default_severity: Severity::Allow,
5610        warn_since: None,
5611        deny_since: None,
5612    },
5613    Lint {
5614        label: "const_convert",
5615        description: r##"# `const_convert`
5616
5617
5618
5619The tracking issue for this feature is: [#143773]
5620
5621[#143773]: https://github.com/rust-lang/rust/issues/143773
5622
5623------------------------
5624"##,
5625        default_severity: Severity::Allow,
5626        warn_since: None,
5627        deny_since: None,
5628    },
5629    Lint {
5630        label: "const_default",
5631        description: r##"# `const_default`
5632
5633
5634
5635The tracking issue for this feature is: [#143894]
5636
5637[#143894]: https://github.com/rust-lang/rust/issues/143894
5638
5639------------------------
5640"##,
5641        default_severity: Severity::Allow,
5642        warn_since: None,
5643        deny_since: None,
5644    },
5645    Lint {
5646        label: "const_destruct",
5647        description: r##"# `const_destruct`
5648
5649Allows using `[const] Destruct` bounds and calling drop impls in const contexts.
5650
5651The tracking issue for this feature is: [#133214]
5652
5653[#133214]: https://github.com/rust-lang/rust/issues/133214
5654
5655------------------------
5656"##,
5657        default_severity: Severity::Allow,
5658        warn_since: None,
5659        deny_since: None,
5660    },
5661    Lint {
5662        label: "const_drop_guard",
5663        description: r##"# `const_drop_guard`
5664
5665
5666
5667This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
5668
5669------------------------
5670"##,
5671        default_severity: Severity::Allow,
5672        warn_since: None,
5673        deny_since: None,
5674    },
5675    Lint {
5676        label: "const_drop_in_place",
5677        description: r##"# `const_drop_in_place`
5678
5679
5680
5681The tracking issue for this feature is: [#109342]
5682
5683[#109342]: https://github.com/rust-lang/rust/issues/109342
5684
5685------------------------
5686"##,
5687        default_severity: Severity::Allow,
5688        warn_since: None,
5689        deny_since: None,
5690    },
5691    Lint {
5692        label: "const_eval_select",
5693        description: r##"# `const_eval_select`
5694
5695
5696
5697The tracking issue for this feature is: [#124625]
5698
5699[#124625]: https://github.com/rust-lang/rust/issues/124625
5700
5701------------------------
5702"##,
5703        default_severity: Severity::Allow,
5704        warn_since: None,
5705        deny_since: None,
5706    },
5707    Lint {
5708        label: "const_for",
5709        description: r##"# `const_for`
5710
5711Allows `for _ in _` loops in const contexts.
5712
5713The tracking issue for this feature is: [#87575]
5714
5715[#87575]: https://github.com/rust-lang/rust/issues/87575
5716
5717------------------------
5718"##,
5719        default_severity: Severity::Allow,
5720        warn_since: None,
5721        deny_since: None,
5722    },
5723    Lint {
5724        label: "const_format_args",
5725        description: r##"# `const_format_args`
5726
5727
5728
5729This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
5730
5731------------------------
5732"##,
5733        default_severity: Severity::Allow,
5734        warn_since: None,
5735        deny_since: None,
5736    },
5737    Lint {
5738        label: "const_heap",
5739        description: r##"# `const_heap`
5740
5741
5742
5743The tracking issue for this feature is: [#79597]
5744
5745[#79597]: https://github.com/rust-lang/rust/issues/79597
5746
5747------------------------
5748"##,
5749        default_severity: Severity::Allow,
5750        warn_since: None,
5751        deny_since: None,
5752    },
5753    Lint {
5754        label: "const_index",
5755        description: r##"# `const_index`
5756
5757
5758
5759The tracking issue for this feature is: [#143775]
5760
5761[#143775]: https://github.com/rust-lang/rust/issues/143775
5762
5763------------------------
5764"##,
5765        default_severity: Severity::Allow,
5766        warn_since: None,
5767        deny_since: None,
5768    },
5769    Lint {
5770        label: "const_iter",
5771        description: r##"# `const_iter`
5772
5773
5774
5775The tracking issue for this feature is: [#92476]
5776
5777[#92476]: https://github.com/rust-lang/rust/issues/92476
5778
5779------------------------
5780"##,
5781        default_severity: Severity::Allow,
5782        warn_since: None,
5783        deny_since: None,
5784    },
5785    Lint {
5786        label: "const_manually_drop_take",
5787        description: r##"# `const_manually_drop_take`
5788
5789
5790
5791The tracking issue for this feature is: [#148773]
5792
5793[#148773]: https://github.com/rust-lang/rust/issues/148773
5794
5795------------------------
5796"##,
5797        default_severity: Severity::Allow,
5798        warn_since: None,
5799        deny_since: None,
5800    },
5801    Lint {
5802        label: "const_never_short_circuit",
5803        description: r##"# `const_never_short_circuit`
5804
5805
5806
5807This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
5808
5809------------------------
5810"##,
5811        default_severity: Severity::Allow,
5812        warn_since: None,
5813        deny_since: None,
5814    },
5815    Lint {
5816        label: "const_nonnull_with_exposed_provenance",
5817        description: r##"# `const_nonnull_with_exposed_provenance`
5818
5819
5820
5821The tracking issue for this feature is: [#154215]
5822
5823[#154215]: https://github.com/rust-lang/rust/issues/154215
5824
5825------------------------
5826"##,
5827        default_severity: Severity::Allow,
5828        warn_since: None,
5829        deny_since: None,
5830    },
5831    Lint {
5832        label: "const_ops",
5833        description: r##"# `const_ops`
5834
5835
5836
5837The tracking issue for this feature is: [#143802]
5838
5839[#143802]: https://github.com/rust-lang/rust/issues/143802
5840
5841------------------------
5842"##,
5843        default_severity: Severity::Allow,
5844        warn_since: None,
5845        deny_since: None,
5846    },
5847    Lint {
5848        label: "const_option_ops",
5849        description: r##"# `const_option_ops`
5850
5851
5852
5853The tracking issue for this feature is: [#143956]
5854
5855[#143956]: https://github.com/rust-lang/rust/issues/143956
5856
5857------------------------
5858"##,
5859        default_severity: Severity::Allow,
5860        warn_since: None,
5861        deny_since: None,
5862    },
5863    Lint {
5864        label: "const_param_ty_trait",
5865        description: r##"# `const_param_ty_trait`
5866
5867
5868
5869The tracking issue for this feature is: [#95174]
5870
5871[#95174]: https://github.com/rust-lang/rust/issues/95174
5872
5873------------------------
5874"##,
5875        default_severity: Severity::Allow,
5876        warn_since: None,
5877        deny_since: None,
5878    },
5879    Lint {
5880        label: "const_param_ty_unchecked",
5881        description: r##"# `const_param_ty_unchecked`
5882
5883Allows skipping `ConstParamTy_` trait implementation checks
5884
5885This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
5886
5887------------------------
5888"##,
5889        default_severity: Severity::Allow,
5890        warn_since: None,
5891        deny_since: None,
5892    },
5893    Lint {
5894        label: "const_path_separators",
5895        description: r##"# `const_path_separators`
5896
5897
5898
5899The tracking issue for this feature is: [#153106]
5900
5901[#153106]: https://github.com/rust-lang/rust/issues/153106
5902
5903------------------------
5904"##,
5905        default_severity: Severity::Allow,
5906        warn_since: None,
5907        deny_since: None,
5908    },
5909    Lint {
5910        label: "const_precise_live_drops",
5911        description: r##"# `const_precise_live_drops`
5912
5913Be more precise when looking for live drops in a const context.
5914
5915The tracking issue for this feature is: [#73255]
5916
5917[#73255]: https://github.com/rust-lang/rust/issues/73255
5918
5919------------------------
5920"##,
5921        default_severity: Severity::Allow,
5922        warn_since: None,
5923        deny_since: None,
5924    },
5925    Lint {
5926        label: "const_range",
5927        description: r##"# `const_range`
5928
5929
5930
5931This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
5932
5933------------------------
5934"##,
5935        default_severity: Severity::Allow,
5936        warn_since: None,
5937        deny_since: None,
5938    },
5939    Lint {
5940        label: "const_range_bounds",
5941        description: r##"# `const_range_bounds`
5942
5943
5944
5945The tracking issue for this feature is: [#108082]
5946
5947[#108082]: https://github.com/rust-lang/rust/issues/108082
5948
5949------------------------
5950"##,
5951        default_severity: Severity::Allow,
5952        warn_since: None,
5953        deny_since: None,
5954    },
5955    Lint {
5956        label: "const_raw_ptr_comparison",
5957        description: r##"# `const_raw_ptr_comparison`
5958
5959
5960
5961The tracking issue for this feature is: [#53020]
5962
5963[#53020]: https://github.com/rust-lang/rust/issues/53020
5964
5965------------------------
5966"##,
5967        default_severity: Severity::Allow,
5968        warn_since: None,
5969        deny_since: None,
5970    },
5971    Lint {
5972        label: "const_ref_cell",
5973        description: r##"# `const_ref_cell`
5974
5975
5976
5977The tracking issue for this feature is: [#137844]
5978
5979[#137844]: https://github.com/rust-lang/rust/issues/137844
5980
5981------------------------
5982"##,
5983        default_severity: Severity::Allow,
5984        warn_since: None,
5985        deny_since: None,
5986    },
5987    Lint {
5988        label: "const_result_trait_fn",
5989        description: r##"# `const_result_trait_fn`
5990
5991
5992
5993The tracking issue for this feature is: [#144211]
5994
5995[#144211]: https://github.com/rust-lang/rust/issues/144211
5996
5997------------------------
5998"##,
5999        default_severity: Severity::Allow,
6000        warn_since: None,
6001        deny_since: None,
6002    },
6003    Lint {
6004        label: "const_result_unwrap_unchecked",
6005        description: r##"# `const_result_unwrap_unchecked`
6006
6007
6008
6009The tracking issue for this feature is: [#148714]
6010
6011[#148714]: https://github.com/rust-lang/rust/issues/148714
6012
6013------------------------
6014"##,
6015        default_severity: Severity::Allow,
6016        warn_since: None,
6017        deny_since: None,
6018    },
6019    Lint {
6020        label: "const_select_unpredictable",
6021        description: r##"# `const_select_unpredictable`
6022
6023
6024
6025The tracking issue for this feature is: [#145938]
6026
6027[#145938]: https://github.com/rust-lang/rust/issues/145938
6028
6029------------------------
6030"##,
6031        default_severity: Severity::Allow,
6032        warn_since: None,
6033        deny_since: None,
6034    },
6035    Lint {
6036        label: "const_slice_from_mut_ptr_range",
6037        description: r##"# `const_slice_from_mut_ptr_range`
6038
6039
6040
6041The tracking issue for this feature is: [#89792]
6042
6043[#89792]: https://github.com/rust-lang/rust/issues/89792
6044
6045------------------------
6046"##,
6047        default_severity: Severity::Allow,
6048        warn_since: None,
6049        deny_since: None,
6050    },
6051    Lint {
6052        label: "const_slice_from_ptr_range",
6053        description: r##"# `const_slice_from_ptr_range`
6054
6055
6056
6057The tracking issue for this feature is: [#89792]
6058
6059[#89792]: https://github.com/rust-lang/rust/issues/89792
6060
6061------------------------
6062"##,
6063        default_severity: Severity::Allow,
6064        warn_since: None,
6065        deny_since: None,
6066    },
6067    Lint {
6068        label: "const_slice_make_iter",
6069        description: r##"# `const_slice_make_iter`
6070
6071
6072
6073The tracking issue for this feature is: [#137737]
6074
6075[#137737]: https://github.com/rust-lang/rust/issues/137737
6076
6077------------------------
6078"##,
6079        default_severity: Severity::Allow,
6080        warn_since: None,
6081        deny_since: None,
6082    },
6083    Lint {
6084        label: "const_split_off_first_last",
6085        description: r##"# `const_split_off_first_last`
6086
6087
6088
6089The tracking issue for this feature is: [#138539]
6090
6091[#138539]: https://github.com/rust-lang/rust/issues/138539
6092
6093------------------------
6094"##,
6095        default_severity: Severity::Allow,
6096        warn_since: None,
6097        deny_since: None,
6098    },
6099    Lint {
6100        label: "const_swap_with_slice",
6101        description: r##"# `const_swap_with_slice`
6102
6103
6104
6105The tracking issue for this feature is: [#142204]
6106
6107[#142204]: https://github.com/rust-lang/rust/issues/142204
6108
6109------------------------
6110"##,
6111        default_severity: Severity::Allow,
6112        warn_since: None,
6113        deny_since: None,
6114    },
6115    Lint {
6116        label: "const_trait_impl",
6117        description: r##"# `const_trait_impl`
6118
6119Allows `impl const Trait for T` syntax.
6120
6121The tracking issue for this feature is: [#143874]
6122
6123[#143874]: https://github.com/rust-lang/rust/issues/143874
6124
6125------------------------
6126"##,
6127        default_severity: Severity::Allow,
6128        warn_since: None,
6129        deny_since: None,
6130    },
6131    Lint {
6132        label: "const_try",
6133        description: r##"# `const_try`
6134
6135Allows the `?` operator in const contexts.
6136
6137The tracking issue for this feature is: [#74935]
6138
6139[#74935]: https://github.com/rust-lang/rust/issues/74935
6140
6141------------------------
6142"##,
6143        default_severity: Severity::Allow,
6144        warn_since: None,
6145        deny_since: None,
6146    },
6147    Lint {
6148        label: "const_try_residual",
6149        description: r##"# `const_try_residual`
6150
6151
6152
6153The tracking issue for this feature is: [#91285]
6154
6155[#91285]: https://github.com/rust-lang/rust/issues/91285
6156
6157------------------------
6158"##,
6159        default_severity: Severity::Allow,
6160        warn_since: None,
6161        deny_since: None,
6162    },
6163    Lint {
6164        label: "const_type_name",
6165        description: r##"# `const_type_name`
6166
6167
6168
6169The tracking issue for this feature is: [#63084]
6170
6171[#63084]: https://github.com/rust-lang/rust/issues/63084
6172
6173------------------------
6174"##,
6175        default_severity: Severity::Allow,
6176        warn_since: None,
6177        deny_since: None,
6178    },
6179    Lint {
6180        label: "const_unsigned_bigint_helpers",
6181        description: r##"# `const_unsigned_bigint_helpers`
6182
6183
6184
6185The tracking issue for this feature is: [#152015]
6186
6187[#152015]: https://github.com/rust-lang/rust/issues/152015
6188
6189------------------------
6190"##,
6191        default_severity: Severity::Allow,
6192        warn_since: None,
6193        deny_since: None,
6194    },
6195    Lint {
6196        label: "const_volatile",
6197        description: r##"# `const_volatile`
6198
6199
6200
6201The tracking issue for this feature is: [#159094]
6202
6203[#159094]: https://github.com/rust-lang/rust/issues/159094
6204
6205------------------------
6206"##,
6207        default_severity: Severity::Allow,
6208        warn_since: None,
6209        deny_since: None,
6210    },
6211    Lint {
6212        label: "container_error_extra",
6213        description: r##"# `container_error_extra`
6214
6215
6216
6217This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
6218
6219------------------------
6220"##,
6221        default_severity: Severity::Allow,
6222        warn_since: None,
6223        deny_since: None,
6224    },
6225    Lint {
6226        label: "context_ext",
6227        description: r##"# `context_ext`
6228
6229
6230
6231The tracking issue for this feature is: [#123392]
6232
6233[#123392]: https://github.com/rust-lang/rust/issues/123392
6234
6235------------------------
6236"##,
6237        default_severity: Severity::Allow,
6238        warn_since: None,
6239        deny_since: None,
6240    },
6241    Lint {
6242        label: "contracts",
6243        description: r##"# `contracts`
6244
6245Allows use of contracts attributes.
6246
6247The tracking issue for this feature is: [#128044]
6248
6249[#128044]: https://github.com/rust-lang/rust/issues/128044
6250
6251------------------------
6252"##,
6253        default_severity: Severity::Allow,
6254        warn_since: None,
6255        deny_since: None,
6256    },
6257    Lint {
6258        label: "contracts_internals",
6259        description: r##"# `contracts_internals`
6260
6261Allows access to internal machinery used to implement contracts.
6262
6263The tracking issue for this feature is: [#128044]
6264
6265[#128044]: https://github.com/rust-lang/rust/issues/128044
6266
6267------------------------
6268"##,
6269        default_severity: Severity::Allow,
6270        warn_since: None,
6271        deny_since: None,
6272    },
6273    Lint {
6274        label: "control_flow_into_value",
6275        description: r##"# `control_flow_into_value`
6276
6277
6278
6279The tracking issue for this feature is: [#137461]
6280
6281[#137461]: https://github.com/rust-lang/rust/issues/137461
6282
6283------------------------
6284"##,
6285        default_severity: Severity::Allow,
6286        warn_since: None,
6287        deny_since: None,
6288    },
6289    Lint {
6290        label: "convert_float_to_int",
6291        description: r##"# `convert_float_to_int`
6292
6293
6294
6295The tracking issue for this feature is: [#67057]
6296
6297[#67057]: https://github.com/rust-lang/rust/issues/67057
6298
6299------------------------
6300"##,
6301        default_severity: Severity::Allow,
6302        warn_since: None,
6303        deny_since: None,
6304    },
6305    Lint {
6306        label: "copied_into_inner",
6307        description: r##"# `copied_into_inner`
6308
6309
6310
6311This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
6312
6313------------------------
6314"##,
6315        default_severity: Severity::Allow,
6316        warn_since: None,
6317        deny_since: None,
6318    },
6319    Lint {
6320        label: "core_float_math",
6321        description: r##"# `core_float_math`
6322
6323
6324
6325The tracking issue for this feature is: [#137578]
6326
6327[#137578]: https://github.com/rust-lang/rust/issues/137578
6328
6329------------------------
6330"##,
6331        default_severity: Severity::Allow,
6332        warn_since: None,
6333        deny_since: None,
6334    },
6335    Lint {
6336        label: "core_intrinsics",
6337        description: r##"# `core_intrinsics`
6338
6339This feature is internal to the Rust compiler and is not intended for general use.
6340
6341------------------------
6342"##,
6343        default_severity: Severity::Allow,
6344        warn_since: None,
6345        deny_since: None,
6346    },
6347    Lint {
6348        label: "core_intrinsics_fallbacks",
6349        description: r##"# `core_intrinsics_fallbacks`
6350
6351
6352
6353This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
6354
6355------------------------
6356"##,
6357        default_severity: Severity::Allow,
6358        warn_since: None,
6359        deny_since: None,
6360    },
6361    Lint {
6362        label: "core_io",
6363        description: r##"# `core_io`
6364
6365
6366
6367The tracking issue for this feature is: [#154046]
6368
6369[#154046]: https://github.com/rust-lang/rust/issues/154046
6370
6371------------------------
6372"##,
6373        default_severity: Severity::Allow,
6374        warn_since: None,
6375        deny_since: None,
6376    },
6377    Lint {
6378        label: "core_io_borrowed_buf",
6379        description: r##"# `core_io_borrowed_buf`
6380
6381
6382
6383The tracking issue for this feature is: [#117693]
6384
6385[#117693]: https://github.com/rust-lang/rust/issues/117693
6386
6387------------------------
6388"##,
6389        default_severity: Severity::Allow,
6390        warn_since: None,
6391        deny_since: None,
6392    },
6393    Lint {
6394        label: "core_io_internals",
6395        description: r##"# `core_io_internals`
6396
6397
6398
6399This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
6400
6401------------------------
6402"##,
6403        default_severity: Severity::Allow,
6404        warn_since: None,
6405        deny_since: None,
6406    },
6407    Lint {
6408        label: "core_os",
6409        description: r##"# `core_os`
6410
6411
6412
6413This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
6414
6415------------------------
6416"##,
6417        default_severity: Severity::Allow,
6418        warn_since: None,
6419        deny_since: None,
6420    },
6421    Lint {
6422        label: "core_private_bignum",
6423        description: r##"# `core_private_bignum`
6424
6425This feature is internal to the Rust compiler and is not intended for general use.
6426
6427------------------------
6428"##,
6429        default_severity: Severity::Allow,
6430        warn_since: None,
6431        deny_since: None,
6432    },
6433    Lint {
6434        label: "core_private_diy_float",
6435        description: r##"# `core_private_diy_float`
6436
6437This feature is internal to the Rust compiler and is not intended for general use.
6438
6439------------------------
6440"##,
6441        default_severity: Severity::Allow,
6442        warn_since: None,
6443        deny_since: None,
6444    },
6445    Lint {
6446        label: "coroutine_clone",
6447        description: r##"# `coroutine_clone`
6448
6449Allows coroutines to be cloned.
6450
6451The tracking issue for this feature is: [#95360]
6452
6453[#95360]: https://github.com/rust-lang/rust/issues/95360
6454
6455------------------------
6456"##,
6457        default_severity: Severity::Allow,
6458        warn_since: None,
6459        deny_since: None,
6460    },
6461    Lint {
6462        label: "coroutine_trait",
6463        description: r##"# `coroutine_trait`
6464
6465
6466
6467The tracking issue for this feature is: [#43122]
6468
6469[#43122]: https://github.com/rust-lang/rust/issues/43122
6470
6471------------------------
6472"##,
6473        default_severity: Severity::Allow,
6474        warn_since: None,
6475        deny_since: None,
6476    },
6477    Lint {
6478        label: "coroutines",
6479        description: r##"# `coroutines`
6480
6481The tracking issue for this feature is: [#43122]
6482
6483[#43122]: https://github.com/rust-lang/rust/issues/43122
6484
6485------------------------
6486
6487The `coroutines` feature gate in Rust allows you to define coroutine or
6488coroutine literals. A coroutine is a "resumable function" that syntactically
6489resembles a closure but compiles to much different semantics in the compiler
6490itself. The primary feature of a coroutine is that it can be suspended during
6491execution to be resumed at a later date. Coroutines use the `yield` keyword to
6492"return", and then the caller can `resume` a coroutine to resume execution just
6493after the `yield` keyword.
6494
6495Coroutines are an extra-unstable feature in the compiler right now. Added in
6496[RFC 2033] they're mostly intended right now as a information/constraint
6497gathering phase. The intent is that experimentation can happen on the nightly
6498compiler before actual stabilization. A further RFC will be required to
6499stabilize coroutines and will likely contain at least a few small
6500tweaks to the overall design.
6501
6502[RFC 2033]: https://github.com/rust-lang/rfcs/pull/2033
6503
6504A syntactical example of a coroutine is:
6505
6506```rust
6507#![feature(coroutines, coroutine_trait, stmt_expr_attributes)]
6508
6509use std::ops::{Coroutine, CoroutineState};
6510use std::pin::Pin;
6511
6512fn main() {
6513    let mut coroutine = #[coroutine] || {
6514        yield 1;
6515        return "foo"
6516    };
6517
6518    match Pin::new(&mut coroutine).resume(()) {
6519        CoroutineState::Yielded(1) => {}
6520        _ => panic!("unexpected value from resume"),
6521    }
6522    match Pin::new(&mut coroutine).resume(()) {
6523        CoroutineState::Complete("foo") => {}
6524        _ => panic!("unexpected value from resume"),
6525    }
6526}
6527```
6528
6529Coroutines are closure-like literals which are annotated with `#[coroutine]`
6530and can contain a `yield` statement. The
6531`yield` statement takes an optional expression of a value to yield out of the
6532coroutine. All coroutine literals implement the `Coroutine` trait in the
6533`std::ops` module. The `Coroutine` trait has one main method, `resume`, which
6534resumes execution of the coroutine at the previous suspension point.
6535
6536An example of the control flow of coroutines is that the following example
6537prints all numbers in order:
6538
6539```rust
6540#![feature(coroutines, coroutine_trait, stmt_expr_attributes)]
6541
6542use std::ops::Coroutine;
6543use std::pin::Pin;
6544
6545fn main() {
6546    let mut coroutine = #[coroutine] || {
6547        println!("2");
6548        yield;
6549        println!("4");
6550    };
6551
6552    println!("1");
6553    Pin::new(&mut coroutine).resume(());
6554    println!("3");
6555    Pin::new(&mut coroutine).resume(());
6556    println!("5");
6557}
6558```
6559
6560At this time the main use case of coroutines is an implementation
6561primitive for `async`/`await` and `gen` syntax, but coroutines
6562will likely be extended to other primitives in the future.
6563Feedback on the design and usage is always appreciated!
6564
6565### The `Coroutine` trait
6566
6567The `Coroutine` trait in `std::ops` currently looks like:
6568
6569```rust
6570# #![feature(arbitrary_self_types, coroutine_trait)]
6571# use std::ops::CoroutineState;
6572# use std::pin::Pin;
6573
6574pub trait Coroutine<R = ()> {
6575    type Yield;
6576    type Return;
6577    fn resume(self: Pin<&mut Self>, resume: R) -> CoroutineState<Self::Yield, Self::Return>;
6578}
6579```
6580
6581The `Coroutine::Yield` type is the type of values that can be yielded with the
6582`yield` statement. The `Coroutine::Return` type is the returned type of the
6583coroutine. This is typically the last expression in a coroutine's definition or
6584any value passed to `return` in a coroutine. The `resume` function is the entry
6585point for executing the `Coroutine` itself.
6586
6587The return value of `resume`, `CoroutineState`, looks like:
6588
6589```rust
6590pub enum CoroutineState<Y, R> {
6591    Yielded(Y),
6592    Complete(R),
6593}
6594```
6595
6596The `Yielded` variant indicates that the coroutine can later be resumed. This
6597corresponds to a `yield` point in a coroutine. The `Complete` variant indicates
6598that the coroutine is complete and cannot be resumed again. Calling `resume`
6599after a coroutine has returned `Complete` will likely result in a panic of the
6600program.
6601
6602### Closure-like semantics
6603
6604The closure-like syntax for coroutines alludes to the fact that they also have
6605closure-like semantics. Namely:
6606
6607* When created, a coroutine executes no code. A closure literal does not
6608  actually execute any of the closure's code on construction, and similarly a
6609  coroutine literal does not execute any code inside the coroutine when
6610  constructed.
6611
6612* Coroutines can capture outer variables by reference or by move, and this can
6613  be tweaked with the `move` keyword at the beginning of the closure. Like
6614  closures all coroutines will have an implicit environment which is inferred by
6615  the compiler. Outer variables can be moved into a coroutine for use as the
6616  coroutine progresses.
6617
6618* Coroutine literals produce a value with a unique type which implements the
6619  `std::ops::Coroutine` trait. This allows actual execution of the coroutine
6620  through the `Coroutine::resume` method as well as also naming it in return
6621  types and such.
6622
6623* Traits like `Send` and `Sync` are automatically implemented for a `Coroutine`
6624  depending on the captured variables of the environment. Unlike closures,
6625  coroutines also depend on variables live across suspension points. This means
6626  that although the ambient environment may be `Send` or `Sync`, the coroutine
6627  itself may not be due to internal variables live across `yield` points being
6628  not-`Send` or not-`Sync`. Note that coroutines do
6629  not implement traits like `Copy` or `Clone` automatically.
6630
6631* Whenever a coroutine is dropped it will drop all captured environment
6632  variables.
6633
6634### Coroutines as state machines
6635
6636In the compiler, coroutines are currently compiled as state machines. Each
6637`yield` expression will correspond to a different state that stores all live
6638variables over that suspension point. Resumption of a coroutine will dispatch on
6639the current state and then execute internally until a `yield` is reached, at
6640which point all state is saved off in the coroutine and a value is returned.
6641
6642Let's take a look at an example to see what's going on here:
6643
6644```rust
6645#![feature(coroutines, coroutine_trait, stmt_expr_attributes)]
6646
6647use std::ops::Coroutine;
6648use std::pin::Pin;
6649
6650fn main() {
6651    let ret = "foo";
6652    let mut coroutine = #[coroutine] move || {
6653        yield 1;
6654        return ret
6655    };
6656
6657    Pin::new(&mut coroutine).resume(());
6658    Pin::new(&mut coroutine).resume(());
6659}
6660```
6661
6662This coroutine literal will compile down to something similar to:
6663
6664```rust
6665#![feature(arbitrary_self_types, coroutine_trait)]
6666
6667use std::ops::{Coroutine, CoroutineState};
6668use std::pin::Pin;
6669
6670fn main() {
6671    let ret = "foo";
6672    let mut coroutine = {
6673        enum __Coroutine {
6674            Start(&'static str),
6675            Yield1(&'static str),
6676            Done,
6677        }
6678
6679        impl Coroutine for __Coroutine {
6680            type Yield = i32;
6681            type Return = &'static str;
6682
6683            fn resume(mut self: Pin<&mut Self>, resume: ()) -> CoroutineState<i32, &'static str> {
6684                use std::mem;
6685                match mem::replace(&mut *self, __Coroutine::Done) {
6686                    __Coroutine::Start(s) => {
6687                        *self = __Coroutine::Yield1(s);
6688                        CoroutineState::Yielded(1)
6689                    }
6690
6691                    __Coroutine::Yield1(s) => {
6692                        *self = __Coroutine::Done;
6693                        CoroutineState::Complete(s)
6694                    }
6695
6696                    __Coroutine::Done => {
6697                        panic!("coroutine resumed after completion")
6698                    }
6699                }
6700            }
6701        }
6702
6703        __Coroutine::Start(ret)
6704    };
6705
6706    Pin::new(&mut coroutine).resume(());
6707    Pin::new(&mut coroutine).resume(());
6708}
6709```
6710
6711Notably here we can see that the compiler is generating a fresh type,
6712`__Coroutine` in this case. This type has a number of states (represented here
6713as an `enum`) corresponding to each of the conceptual states of the coroutine.
6714At the beginning we're closing over our outer variable `foo` and then that
6715variable is also live over the `yield` point, so it's stored in both states.
6716
6717When the coroutine starts it'll immediately yield 1, but it saves off its state
6718just before it does so indicating that it has reached the yield point. Upon
6719resuming again we'll execute the `return ret` which returns the `Complete`
6720state.
6721
6722Here we can also note that the `Done` state, if resumed, panics immediately as
6723it's invalid to resume a completed coroutine. It's also worth noting that this
6724is just a rough desugaring, not a normative specification for what the compiler
6725does.
6726"##,
6727        default_severity: Severity::Allow,
6728        warn_since: None,
6729        deny_since: None,
6730    },
6731    Lint {
6732        label: "covariant_unsafe_cell",
6733        description: r##"# `covariant_unsafe_cell`
6734
6735
6736
6737The tracking issue for this feature is: [#159735]
6738
6739[#159735]: https://github.com/rust-lang/rust/issues/159735
6740
6741------------------------
6742"##,
6743        default_severity: Severity::Allow,
6744        warn_since: None,
6745        deny_since: None,
6746    },
6747    Lint {
6748        label: "coverage_attribute",
6749        description: r##"# `coverage_attribute`
6750
6751The tracking issue for this feature is: [#84605]
6752
6753[#84605]: https://github.com/rust-lang/rust/issues/84605
6754
6755---
6756
6757The `coverage` attribute can be used to selectively disable coverage
6758instrumentation in an annotated function. This might be useful to:
6759
6760-   Avoid instrumentation overhead in a performance critical function
6761-   Avoid generating coverage for a function that is not meant to be executed,
6762    but still target 100% coverage for the rest of the program.
6763
6764## Example
6765
6766```rust
6767#![feature(coverage_attribute)]
6768
6769// `foo()` will get coverage instrumentation (by default)
6770fn foo() {
6771  // ...
6772}
6773
6774#[coverage(off)]
6775fn bar() {
6776  // ...
6777}
6778```
6779"##,
6780        default_severity: Severity::Allow,
6781        warn_since: None,
6782        deny_since: None,
6783    },
6784    Lint {
6785        label: "cow_is_borrowed",
6786        description: r##"# `cow_is_borrowed`
6787
6788
6789
6790The tracking issue for this feature is: [#65143]
6791
6792[#65143]: https://github.com/rust-lang/rust/issues/65143
6793
6794------------------------
6795"##,
6796        default_severity: Severity::Allow,
6797        warn_since: None,
6798        deny_since: None,
6799    },
6800    Lint {
6801        label: "csky_target_feature",
6802        description: r##"# `csky_target_feature`
6803
6804Target features on csky.
6805
6806The tracking issue for this feature is: [#150248]
6807
6808[#150248]: https://github.com/rust-lang/rust/issues/150248
6809
6810------------------------
6811"##,
6812        default_severity: Severity::Allow,
6813        warn_since: None,
6814        deny_since: None,
6815    },
6816    Lint {
6817        label: "cstr_bytes",
6818        description: r##"# `cstr_bytes`
6819
6820
6821
6822The tracking issue for this feature is: [#112115]
6823
6824[#112115]: https://github.com/rust-lang/rust/issues/112115
6825
6826------------------------
6827"##,
6828        default_severity: Severity::Allow,
6829        warn_since: None,
6830        deny_since: None,
6831    },
6832    Lint {
6833        label: "cstr_internals",
6834        description: r##"# `cstr_internals`
6835
6836
6837
6838This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
6839
6840------------------------
6841"##,
6842        default_severity: Severity::Allow,
6843        warn_since: None,
6844        deny_since: None,
6845    },
6846    Lint {
6847        label: "current_thread_id",
6848        description: r##"# `current_thread_id`
6849
6850
6851
6852The tracking issue for this feature is: [#147194]
6853
6854[#147194]: https://github.com/rust-lang/rust/issues/147194
6855
6856------------------------
6857"##,
6858        default_severity: Severity::Allow,
6859        warn_since: None,
6860        deny_since: None,
6861    },
6862    Lint {
6863        label: "cursor_split",
6864        description: r##"# `cursor_split`
6865
6866
6867
6868The tracking issue for this feature is: [#86369]
6869
6870[#86369]: https://github.com/rust-lang/rust/issues/86369
6871
6872------------------------
6873"##,
6874        default_severity: Severity::Allow,
6875        warn_since: None,
6876        deny_since: None,
6877    },
6878    Lint {
6879        label: "custom_inner_attributes",
6880        description: r##"# `custom_inner_attributes`
6881
6882Allows non-builtin attributes in inner attribute position.
6883
6884The tracking issue for this feature is: [#54726]
6885
6886[#54726]: https://github.com/rust-lang/rust/issues/54726
6887
6888------------------------
6889"##,
6890        default_severity: Severity::Allow,
6891        warn_since: None,
6892        deny_since: None,
6893    },
6894    Lint {
6895        label: "custom_mir",
6896        description: r##"# `custom_mir`
6897
6898Allows writing custom MIR
6899
6900This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
6901
6902------------------------
6903"##,
6904        default_severity: Severity::Allow,
6905        warn_since: None,
6906        deny_since: None,
6907    },
6908    Lint {
6909        label: "custom_test_frameworks",
6910        description: r##"# `custom_test_frameworks`
6911
6912The tracking issue for this feature is: [#50297]
6913
6914[#50297]: https://github.com/rust-lang/rust/issues/50297
6915
6916------------------------
6917
6918The `custom_test_frameworks` feature allows the use of `#[test_case]` and `#![test_runner]`.
6919Any function, const, or static can be annotated with `#[test_case]` causing it to be aggregated (like `#[test]`)
6920and be passed to the test runner determined by the `#![test_runner]` crate attribute.
6921
6922```rust
6923#![feature(custom_test_frameworks)]
6924#![test_runner(my_runner)]
6925
6926fn my_runner(tests: &[&i32]) {
6927    for t in tests {
6928        if **t == 0 {
6929            println!("PASSED");
6930        } else {
6931            println!("FAILED");
6932        }
6933    }
6934}
6935
6936#[test_case]
6937const WILL_PASS: i32 = 0;
6938
6939#[test_case]
6940const WILL_FAIL: i32 = 4;
6941```
6942"##,
6943        default_severity: Severity::Allow,
6944        warn_since: None,
6945        deny_since: None,
6946    },
6947    Lint {
6948        label: "darwin_objc",
6949        description: r##"# `darwin_objc`
6950
6951
6952
6953The tracking issue for this feature is: [#145496]
6954
6955[#145496]: https://github.com/rust-lang/rust/issues/145496
6956
6957------------------------
6958"##,
6959        default_severity: Severity::Allow,
6960        warn_since: None,
6961        deny_since: None,
6962    },
6963    Lint {
6964        label: "deadline_api",
6965        description: r##"# `deadline_api`
6966
6967
6968
6969The tracking issue for this feature is: [#46316]
6970
6971[#46316]: https://github.com/rust-lang/rust/issues/46316
6972
6973------------------------
6974"##,
6975        default_severity: Severity::Allow,
6976        warn_since: None,
6977        deny_since: None,
6978    },
6979    Lint {
6980        label: "dec2flt",
6981        description: r##"# `dec2flt`
6982
6983This feature is internal to the Rust compiler and is not intended for general use.
6984
6985------------------------
6986"##,
6987        default_severity: Severity::Allow,
6988        warn_since: None,
6989        deny_since: None,
6990    },
6991    Lint {
6992        label: "decl_macro",
6993        description: r##"# `decl_macro`
6994
6995Allows declarative macros 2.0 (`macro`).
6996
6997The tracking issue for this feature is: [#39412]
6998
6999[#39412]: https://github.com/rust-lang/rust/issues/39412
7000
7001------------------------
7002"##,
7003        default_severity: Severity::Allow,
7004        warn_since: None,
7005        deny_since: None,
7006    },
7007    Lint {
7008        label: "default_field_values",
7009        description: r##"# `default_field_values`
7010
7011The tracking issue for this feature is: [#132162]
7012
7013[#132162]: https://github.com/rust-lang/rust/issues/132162
7014
7015The RFC for this feature is: [#3681]
7016
7017[#3681]: https://rust-lang.github.io/rfcs/3681-default-field-values.html
7018
7019------------------------
7020
7021The `default_field_values` feature allows users to specify a const value for
7022individual fields in struct definitions, allowing those to be omitted from
7023initializers.
7024
7025## Examples
7026
7027```rust
7028#![feature(default_field_values)]
7029
7030#[derive(Default)]
7031struct Pet {
7032    name: Option<String>, // impl Default for Pet will use Default::default() for name
7033    age: i128 = 42, // impl Default for Pet will use the literal 42 for age
7034}
7035
7036fn main() {
7037    let a = Pet { name: Some(String::new()), .. }; // Pet { name: Some(""), age: 42 }
7038    let b = Pet::default(); // Pet { name: None, age: 42 }
7039    assert_eq!(a.age, b.age);
7040    // The following would be a compilation error: `name` needs to be specified
7041    // let _ = Pet { .. };
7042}
7043```
7044
7045## `#[derive(Default)]`
7046
7047When deriving Default, the provided values are then used. On enum variants,
7048the variant must still be marked with `#[default]` and have all its fields
7049with default values.
7050
7051```rust
7052#![feature(default_field_values)]
7053
7054#[derive(Default)]
7055enum A {
7056    #[default]
7057    B {
7058        x: i32 = 0,
7059        y: i32 = 0,
7060    },
7061    C,
7062}
7063```
7064
7065## Enum variants
7066
7067This feature also supports enum variants for both specifying default values
7068and `#[derive(Default)]`.
7069
7070## Interaction with `#[non_exhaustive]`
7071
7072A struct or enum variant marked with `#[non_exhaustive]` is not allowed to
7073have default field values.
7074
7075## Lints
7076
7077When manually implementing the `Default` trait for a type that has default
7078field values, if any of these are overridden in the impl the
7079`default_overrides_default_fields` lint will trigger. This lint is in place
7080to avoid surprising diverging behavior between `S { .. }` and
7081`S::default()`, where using the same type in both ways could result in
7082different values. The appropriate way to write a manual `Default`
7083implementation is to use the functional update syntax:
7084
7085```rust
7086#![feature(default_field_values)]
7087
7088struct Pet {
7089    name: String,
7090    age: i128 = 42, // impl Default for Pet will use the literal 42 for age
7091}
7092
7093impl Default for Pet {
7094    fn default() -> Pet {
7095        Pet {
7096            name: "no-name".to_string(),
7097            ..
7098        }
7099    }
7100}
7101```
7102"##,
7103        default_severity: Severity::Allow,
7104        warn_since: None,
7105        deny_since: None,
7106    },
7107    Lint {
7108        label: "default_ignorable",
7109        description: r##"# `default_ignorable`
7110
7111
7112
7113The tracking issue for this feature is: [#160583]
7114
7115[#160583]: https://github.com/rust-lang/rust/issues/160583
7116
7117------------------------
7118"##,
7119        default_severity: Severity::Allow,
7120        warn_since: None,
7121        deny_since: None,
7122    },
7123    Lint {
7124        label: "deprecated_suggestion",
7125        description: r##"# `deprecated_suggestion`
7126
7127Allows having using `suggestion` in the `#[deprecated]` attribute.
7128
7129The tracking issue for this feature is: [#94785]
7130
7131[#94785]: https://github.com/rust-lang/rust/issues/94785
7132
7133------------------------
7134"##,
7135        default_severity: Severity::Allow,
7136        warn_since: None,
7137        deny_since: None,
7138    },
7139    Lint {
7140        label: "deque_extend_front",
7141        description: r##"# `deque_extend_front`
7142
7143
7144
7145The tracking issue for this feature is: [#146975]
7146
7147[#146975]: https://github.com/rust-lang/rust/issues/146975
7148
7149------------------------
7150"##,
7151        default_severity: Severity::Allow,
7152        warn_since: None,
7153        deny_since: None,
7154    },
7155    Lint {
7156        label: "deref_patterns",
7157        description: r##"# `deref_patterns`
7158
7159The tracking issue for this feature is: [#87121]
7160
7161[#87121]: https://github.com/rust-lang/rust/issues/87121
7162
7163------------------------
7164
7165> **Note**: This feature supersedes `box_patterns`.
7166
7167This feature permits pattern matching on [smart pointers in the standard library] through their
7168`Deref` target types, either implicitly or with explicit `deref!(_)` patterns (the syntax of which
7169is currently a placeholder).
7170
7171```rust
7172#![feature(deref_patterns)]
7173
7174let mut v = vec![Box::new(Some(0))];
7175
7176// Implicit dereferences are inserted when a pattern can match against the
7177// result of repeatedly dereferencing but can't match against a smart
7178// pointer itself. This works alongside match ergonomics for references.
7179if let [Some(x)] = &mut v {
7180    *x += 1;
7181}
7182
7183// Explicit `deref!(_)` patterns may instead be used when finer control is
7184// needed, e.g. to dereference only a single smart pointer, or to bind the
7185// the result of dereferencing to a variable.
7186if let deref!([deref!(opt_x @ Some(1))]) = &mut v {
7187    opt_x.as_mut().map(|x| *x += 1);
7188}
7189
7190assert_eq!(v, [Box::new(Some(2))]);
7191```
7192
7193Without this feature, it may be necessary to introduce temporaries to represent dereferenced places
7194when matching on nested structures:
7195
7196```rust
7197let mut v = vec![Box::new(Some(0))];
7198if let [b] = &mut *v {
7199    if let Some(x) = &mut **b {
7200        *x += 1;
7201    }
7202}
7203if let [b] = &mut *v {
7204    if let opt_x @ Some(1) = &mut **b {
7205        opt_x.as_mut().map(|x| *x += 1);
7206    }
7207}
7208assert_eq!(v, [Box::new(Some(2))]);
7209```
7210
7211Deref patterns may move out of boxes:
7212
7213```rust
7214# #![feature(deref_patterns)]
7215struct NoCopy;
7216let deref!(x) = Box::new(NoCopy);
7217drop::<NoCopy>(x);
7218```
7219
7220Additionally, `deref_patterns` implements changes to string and byte string literal patterns,
7221allowing then to be used in deref patterns:
7222
7223```rust
7224# #![feature(deref_patterns)]
7225match ("test".to_string(), Box::from("test"), b"test".to_vec()) {
7226    ("test", "test", b"test") => {}
7227    _ => panic!(),
7228}
7229
7230// This works through multiple layers of reference and smart pointer:
7231match (&Box::new(&"test".to_string()), &&&"test") {
7232    ("test", "test") => {}
7233    _ => panic!(),
7234}
7235
7236// `deref!("...")` syntax may also be used:
7237match "test".to_string() {
7238    deref!("test") => {}
7239    _ => panic!(),
7240}
7241
7242// Matching on slices and arrays using literals is possible elsewhere as well:
7243match *"test" {
7244    "test" => {}
7245    _ => panic!(),
7246}
7247match *b"test" {
7248    b"test" => {}
7249    _ => panic!(),
7250}
7251match *(b"test" as &[u8]) {
7252    b"test" => {}
7253    _ => panic!(),
7254}
7255```
7256
7257[smart pointers in the standard library]: https://doc.rust-lang.org/std/ops/trait.DerefPure.html#implementors
7258"##,
7259        default_severity: Severity::Allow,
7260        warn_since: None,
7261        deny_since: None,
7262    },
7263    Lint {
7264        label: "deref_pure_trait",
7265        description: r##"# `deref_pure_trait`
7266
7267
7268
7269The tracking issue for this feature is: [#87121]
7270
7271[#87121]: https://github.com/rust-lang/rust/issues/87121
7272
7273------------------------
7274"##,
7275        default_severity: Severity::Allow,
7276        warn_since: None,
7277        deny_since: None,
7278    },
7279    Lint {
7280        label: "derive_clone_copy_internals",
7281        description: r##"# `derive_clone_copy_internals`
7282
7283This feature is internal to the Rust compiler and is not intended for general use.
7284
7285------------------------
7286"##,
7287        default_severity: Severity::Allow,
7288        warn_since: None,
7289        deny_since: None,
7290    },
7291    Lint {
7292        label: "derive_coerce_pointee",
7293        description: r##"# `derive_coerce_pointee`
7294
7295
7296
7297The tracking issue for this feature is: [#123430]
7298
7299[#123430]: https://github.com/rust-lang/rust/issues/123430
7300
7301------------------------
7302"##,
7303        default_severity: Severity::Allow,
7304        warn_since: None,
7305        deny_since: None,
7306    },
7307    Lint {
7308        label: "derive_const",
7309        description: r##"# `derive_const`
7310
7311
7312
7313The tracking issue for this feature is: [#118304]
7314
7315[#118304]: https://github.com/rust-lang/rust/issues/118304
7316
7317------------------------
7318"##,
7319        default_severity: Severity::Allow,
7320        warn_since: None,
7321        deny_since: None,
7322    },
7323    Lint {
7324        label: "derive_eq_internals",
7325        description: r##"# `derive_eq_internals`
7326
7327This feature is internal to the Rust compiler and is not intended for general use.
7328
7329------------------------
7330"##,
7331        default_severity: Severity::Allow,
7332        warn_since: None,
7333        deny_since: None,
7334    },
7335    Lint {
7336        label: "derive_from",
7337        description: r##"# `derive_from`
7338
7339Allows deriving the From trait on single-field structs.
7340
7341The tracking issue for this feature is: [#144889]
7342
7343[#144889]: https://github.com/rust-lang/rust/issues/144889
7344
7345------------------------
7346"##,
7347        default_severity: Severity::Allow,
7348        warn_since: None,
7349        deny_since: None,
7350    },
7351    Lint {
7352        label: "derive_macro_global_path",
7353        description: r##"# `derive_macro_global_path`
7354
7355
7356
7357The tracking issue for this feature is: [#154645]
7358
7359[#154645]: https://github.com/rust-lang/rust/issues/154645
7360
7361------------------------
7362"##,
7363        default_severity: Severity::Allow,
7364        warn_since: None,
7365        deny_since: None,
7366    },
7367    Lint {
7368        label: "diagnostic_on_const",
7369        description: r##"# `diagnostic_on_const`
7370
7371Allows giving non-const impls custom diagnostic messages if attempted to be used as const
7372
7373The tracking issue for this feature is: [#143874]
7374
7375[#143874]: https://github.com/rust-lang/rust/issues/143874
7376
7377------------------------
7378"##,
7379        default_severity: Severity::Allow,
7380        warn_since: None,
7381        deny_since: None,
7382    },
7383    Lint {
7384        label: "diagnostic_on_move",
7385        description: r##"# `diagnostic_on_move`
7386
7387The tracking issue for this feature is: [#154181]
7388
7389------------------------
7390
7391The `diagnostic_on_move` feature allows use of the `#[diagnostic::on_move]` attribute. It should be
7392placed on struct, enum and union declarations, though it is not an error to be located in other
7393positions. This attribute is a hint to the compiler to supplement the error message when the
7394annotated type is involved in a borrowcheck error.
7395
7396For example, [`File`] is annotated as such:
7397```rust
7398#![feature(diagnostic_on_move)]
7399
7400#[diagnostic::on_move(note = "you can use `File::try_clone` \
7401                             to duplicate a `File` instance")]
7402pub struct File {
7403    // ...
7404}
7405```
7406
7407When you try to use a `File` after it's already been moved, it will helpfully tell you about `try_clone`.
7408
7409The message and label can also be customized:
7410
7411```rust
7412#![feature(diagnostic_on_move)]
7413
7414use std::marker::PhantomData;
7415
7416#[diagnostic::on_move(
7417    message = "`{Self}` cannot be used multiple times",
7418    label = "this token may only be used once",
7419    note = "you can create a new `Token` with `Token::conjure()`"
7420)]
7421pub struct Token<'brand> {
7422    spooky: PhantomData<&'brand ()>,
7423}
7424
7425impl Token<'_> {
7426    pub fn conjure<'u>() -> Token<'u> {
7427        Token {
7428            spooky: PhantomData,
7429        }
7430    }
7431}
7432```
7433The user may try to use it like this:
7434```rust,compile_fail,E0382
7435# #![feature(diagnostic_on_move)]
7436#
7437# use std::marker::PhantomData;
7438#
7439# #[diagnostic::on_move(
7440#     message = "`{Self}` cannot be used multiple times",
7441#     label = "this token may only be used once",
7442#     note = "you can create a new `Token` with `Token::conjure()`"
7443# )]
7444# pub struct Token<'brand> {
7445#     spooky: PhantomData<&'brand ()>,
7446# }
7447#
7448# impl Token<'_> {
7449#     pub fn conjure<'u>() -> Token<'u> {
7450#         Token {
7451#             spooky: PhantomData,
7452#         }
7453#     }
7454# }
7455# fn main() {
7456let token = Token::conjure();
7457let _ = (token, token);
7458# }
7459```
7460This will result in the following error:
7461```text
7462error[E0382]: `Token` cannot be used multiple times
7463  --> src/main.rs:24:21
7464   |
7465 1 |     let token = Token::conjure();
7466   |         ----- this token may only be used once
7467 2 |     let _ = (token, token);
7468   |              -----  ^^^^^ value used here after move
7469   |              |
7470   |              value moved here
7471   |
7472   = note: you can create a new `Token` with `Token::conjure()`
7473```
7474
7475[`File`]: https://doc.rust-lang.org/nightly/std/fs/struct.File.html "File in std::fs"
7476[#154181]: https://github.com/rust-lang/rust/issues/154181 "Tracking Issue for #[diagnostic::on_move]"
7477"##,
7478        default_severity: Severity::Allow,
7479        warn_since: None,
7480        deny_since: None,
7481    },
7482    Lint {
7483        label: "diagnostic_on_type_error",
7484        description: r##"# `diagnostic_on_type_error`
7485
7486Allows giving custom types diagnostic messages on type errors
7487
7488The tracking issue for this feature is: [#155382]
7489
7490[#155382]: https://github.com/rust-lang/rust/issues/155382
7491
7492------------------------
7493"##,
7494        default_severity: Severity::Allow,
7495        warn_since: None,
7496        deny_since: None,
7497    },
7498    Lint {
7499        label: "diagnostic_on_unknown",
7500        description: r##"# `diagnostic_on_unknown`
7501
7502The tracking issue for this feature is: [#152900](https://github.com/rust-lang/rust/issues/152900)
7503
7504------------------------
7505
7506The `diagnostic_on_unknown` feature allows use of the `#[diagnostic::on_unknown]` attribute. It should be
7507placed on use and module declarations as well as the crate root, though it is not an error to be located in other
7508positions. This attribute is a hint to the compiler to supplement the error message when the
7509annotated declaration is involved in a name resolution error.
7510
7511Format parameters with the given named parameter will be replaced with the following text:
7512
7513-  `{Unresolved}` — The `SimplePathSegment` of the import path that could not be resolved.
7514-  `{this}` — The name of the annotated item. On `use` statements this is identical to `{unresolved}`.
7515
7516The original error message will not be suppressed but is emitted as a note instead.
7517
7518### On use declarations
7519
7520```rust,edition2018,compile_fail,E0432
7521#![feature(diagnostic_on_unknown)]
7522
7523#[diagnostic::on_unknown(
7524    message = "`{Unresolved}` doesn't exist",
7525    label = "you did something silly here"
7526)]
7527use doesnt_exist;
7528```
7529This will result in the following error:
7530```text
7531error[E0432]: `doesnt_exist` doesn't exist
7532 --> src/lib.rs:7:5
7533  |
75347 | use doesnt_exist;
7535  |     ^^^^^^^^^^^^ you did something silly here
7536  |
7537  = note: unresolved import `doesnt_exist`
7538
7539For more information about this error, try `rustc --explain E0432`.
7540```
7541
7542### On module declarations
7543
7544```rust,edition2018,compile_fail,E0432
7545#![feature(diagnostic_on_unknown)]
7546
7547#[diagnostic::on_unknown(
7548    message = "module `{this}` is empty, there is no `{unresolved}` here",
7549    label = "can't import something from an empty module"
7550)]
7551mod empty {}
7552
7553use empty::what;
7554```
7555This will result in the following error:
7556
7557```text
7558error[E0432]: module `empty` is empty, there is no `what` here
7559 --> src/lib.rs:9:5
7560  |
75619 | use empty::what;
7562  |     ^^^^^^^----
7563  |            |
7564  |            can't import something from an empty module
7565  |
7566  = note: unresolved import `empty::what`
7567```
7568
7569### On the crate root
7570
7571This additionally requires the `#![feature(custom_inner_attributes)]` feature:
7572
7573```rust,edition2018,compile_fail,E0432
7574#![feature(diagnostic_on_unknown)]
7575#![feature(custom_inner_attributes)]
7576#![diagnostic::on_unknown(message = "Say `{Unresolved}` again!")]
7577
7578use self::what;
7579```
7580### Example
7581
7582Consider the following pair of macros, one which creates a hidden module with a constant and another that reads it.
7583
7584```rust
7585#![feature(macro_metavar_expr, macro_attr)]
7586
7587macro_rules! instrument {
7588    attr() { $vis:vis fn $fn_name:ident ($($arg_name:ident : $arg_ty:ty),*) $(-> $ret:ty)? $body:block } => {
7589        $vis fn $fn_name ($($arg_name:$arg_ty),*) $(-> $ret)? $body
7590        #[doc(hidden)]
7591        $vis mod $fn_name {
7592            pub const LEN: usize = ${ count($arg_name) };
7593        }
7594    }
7595}
7596
7597macro_rules! count_args {
7598    ($name:ident) => {{
7599        $name::LEN
7600    }}
7601}
7602
7603#[instrument]
7604fn add(a: u8, b: u8) -> u8 {
7605    a + b
7606}
7607
7608fn main() {
7609    let n = count_args!(add);
7610    println!("`add` has {n} arguments");
7611}
7612```
7613
7614If the `#[instrument]` macro is omitted it will emit this confusing error:
7615```text
7616error[E0433]: cannot find module or crate `add` in this scope
7617  --> src/main.rs:25:25
7618   |
761925 |     let n = count_args!(add);
7620   |                         ^^^ function `add` is not a crate or module
7621```
7622
7623`#[diagnostic::on_unknown]` can be used to customize this error message:
7624
7625```rust,edition2018,compile_fail,E0432
7626#![feature(diagnostic_on_unknown)]
7627# #![feature(macro_metavar_expr, macro_attr)]
7628#
7629# #[allow(unused_macros)]
7630# macro_rules! instrument {
7631#     attr() { $vis:vis fn $fn_name:ident ($($arg_name:ident : $arg_ty:ty),*) $(-> $ret:ty)? $body:block } => {
7632#         $vis fn $fn_name ($($arg_name:$arg_ty),*) $(-> $ret)? $body
7633#         #[doc(hidden)]
7634#         $vis  mod $fn_name {
7635#             pub const LEN: usize = ${ count($arg_name) };
7636#         }
7637#     }
7638# }
7639
7640macro_rules! count_args {
7641    ($name:ident) => {{
7642        #[diagnostic::on_unknown(
7643            message = "cannot count arguments of `{Unresolved}`",
7644            label = "`{Unresolved}` is not a function decorated \
7645                    with the `#[instrument]` macro"
7646        )]
7647        use $name::LEN as length;
7648        length
7649    }}
7650}
7651
7652// #[instrument]
7653fn add(a: u8, b: u8) -> u8 {
7654  a + b
7655}
7656
7657fn main() {
7658    let n = count_args!(add);
7659    println!("`add` has {n} arguments");
7660}
7661```
7662This produces:
7663```text
7664error[E0432]: cannot count arguments of `add`
7665  --> src/main.rs:33:25
7666   |
766733 |     let n = count_args!(add);
7668   |                         ^^^ `add` is not a function decorated with
7669   |                              the `#[instrument]` macro
7670   |
7671   = note: unresolved import `add`
7672```
7673
7674### Edition differences
7675
7676In the 2015 edition, use paths are relative to the crate root. For example, `use empty` will be resolved relative to the crate root and resolution will not encounter the `mod empty {}` declaration.
7677```rust,edition2015,compile_fail,E0432
7678#![feature(diagnostic_on_unknown)]
7679
7680mod foo {
7681   #[diagnostic::on_unknown(message = "oh oh")]
7682   mod empty {}
7683
7684   use empty::what;
7685}
7686```
7687
7688```text
7689error[E0432]: unresolved import `empty`
7690 --> src/main.rs:9:8
7691  |
76929 |    use empty::what;
7693  |        ^^^^^
7694  |
7695```
7696"##,
7697        default_severity: Severity::Allow,
7698        warn_since: None,
7699        deny_since: None,
7700    },
7701    Lint {
7702        label: "diagnostic_on_unmatched_args",
7703        description: r##"# `diagnostic_on_unmatched_args`
7704
7705The tracking issue for this feature is: [#155642]
7706
7707[#155642]: https://github.com/rust-lang/rust/issues/155642
7708
7709------------------------
7710
7711The `diagnostic_on_unmatched_args` feature adds the
7712`#[diagnostic::on_unmatched_args(...)]` attribute for declarative macros.
7713It lets a macro definition customize diagnostics for matcher failures after all arms have been
7714tried, such as incomplete invocations or trailing extra arguments.
7715
7716This attribute currently applies to declarative macros such as `macro_rules!` and `pub macro`.
7717It is currently used for errors emitted by declarative macro matching itself; fragment parser
7718errors still use their existing diagnostics.
7719
7720```rust,compile_fail
7721#![feature(diagnostic_on_unmatched_args)]
7722
7723#[diagnostic::on_unmatched_args(
7724    message = "invalid arguments to {this} macro invocation",
7725    label = "expected a type and value here",
7726    note = "this macro expects a type and a value, like `pair!(u8, 0)`",
7727    note = "see <link/to/docs>",
7728)]
7729macro_rules! pair {
7730    ($ty:ty, $value:expr) => {};
7731}
7732
7733pair!(u8);
7734```
7735
7736This emits output like:
7737
7738```text
7739error: invalid arguments to pair macro invocation
7740  --> example.rs:13:9
7741   |
77429  | macro_rules! pair {
7743   | ----------------- when calling this macro
7744...
774513 | pair!(u8);
7746   |         ^ expected a type and value here
7747   |
7748note: while trying to match `,`
7749  --> example.rs:10:12
7750   |
775110 |     ($ty:ty, $value:expr) => {};
7752   |            ^
7753   = note: this macro expects a type and a value, like `pair!(u8, 0)`
7754   = note: see <link/to/docs>
7755```
7756"##,
7757        default_severity: Severity::Allow,
7758        warn_since: None,
7759        deny_since: None,
7760    },
7761    Lint {
7762        label: "diagnostic_opaque",
7763        description: r##"# `diagnostic_opaque`
7764
7765Used by macros to not show their bodies in error messages. No-op with `-Z macro-backtrace`.
7766
7767The tracking issue for this feature is: [#158813]
7768
7769[#158813]: https://github.com/rust-lang/rust/issues/158813
7770
7771------------------------
7772"##,
7773        default_severity: Severity::Allow,
7774        warn_since: None,
7775        deny_since: None,
7776    },
7777    Lint {
7778        label: "dir_entry_ext2",
7779        description: r##"# `dir_entry_ext2`
7780
7781
7782
7783The tracking issue for this feature is: [#85573]
7784
7785[#85573]: https://github.com/rust-lang/rust/issues/85573
7786
7787------------------------
7788"##,
7789        default_severity: Severity::Allow,
7790        warn_since: None,
7791        deny_since: None,
7792    },
7793    Lint {
7794        label: "dirfd",
7795        description: r##"# `dirfd`
7796
7797
7798
7799The tracking issue for this feature is: [#120426]
7800
7801[#120426]: https://github.com/rust-lang/rust/issues/120426
7802
7803------------------------
7804"##,
7805        default_severity: Severity::Allow,
7806        warn_since: None,
7807        deny_since: None,
7808    },
7809    Lint {
7810        label: "discriminant_kind",
7811        description: r##"# `discriminant_kind`
7812
7813
7814
7815This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
7816
7817------------------------
7818"##,
7819        default_severity: Severity::Allow,
7820        warn_since: None,
7821        deny_since: None,
7822    },
7823    Lint {
7824        label: "disjoint_bitor",
7825        description: r##"# `disjoint_bitor`
7826
7827
7828
7829The tracking issue for this feature is: [#135758]
7830
7831[#135758]: https://github.com/rust-lang/rust/issues/135758
7832
7833------------------------
7834"##,
7835        default_severity: Severity::Allow,
7836        warn_since: None,
7837        deny_since: None,
7838    },
7839    Lint {
7840        label: "dispatch_from_dyn",
7841        description: r##"# `dispatch_from_dyn`
7842
7843
7844
7845This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
7846
7847------------------------
7848"##,
7849        default_severity: Severity::Allow,
7850        warn_since: None,
7851        deny_since: None,
7852    },
7853    Lint {
7854        label: "doc_cfg",
7855        description: r##"# `doc_cfg`
7856
7857The tracking issue for this feature is: [#43781]
7858
7859------
7860
7861The `doc_cfg` feature allows an API be documented as only available in some specific platforms.
7862This attribute has two effects:
7863
78641. In the annotated item's documentation, there will be a message saying "Available on
7865    (platform) only".
7866
78672. The item's doc-tests will only run on the specific platform.
7868
7869In addition to allowing the use of the `#[doc(cfg)]` attribute, this feature enables the use of a
7870special conditional compilation flag, `#[cfg(doc)]`, set whenever building documentation on your
7871crate.
7872
7873This feature was introduced as part of PR [#43348] to allow the platform-specific parts of the
7874standard library be documented.
7875
7876```rust
7877#![feature(doc_cfg)]
7878
7879#[cfg(any(windows, doc))]
7880#[doc(cfg(windows))]
7881/// The application's icon in the notification area (a.k.a. system tray).
7882///
7883/// # Examples
7884///
7885/// ```no_run
7886/// extern crate my_awesome_ui_library;
7887/// use my_awesome_ui_library::current_app;
7888/// use my_awesome_ui_library::windows::notification;
7889///
7890/// let icon = current_app().get::<notification::Icon>();
7891/// icon.show();
7892/// icon.show_message("Hello");
7893/// ```
7894pub struct Icon {
7895    // ...
7896}
7897```
7898
7899[#43781]: https://github.com/rust-lang/rust/issues/43781
7900[#43348]: https://github.com/rust-lang/rust/issues/43348
7901"##,
7902        default_severity: Severity::Allow,
7903        warn_since: None,
7904        deny_since: None,
7905    },
7906    Lint {
7907        label: "doc_masked",
7908        description: r##"# `doc_masked`
7909
7910The tracking issue for this feature is: [#44027]
7911
7912-----
7913
7914The `doc_masked` feature allows a crate to exclude types from a given crate from appearing in lists
7915of trait implementations. The specifics of the feature are as follows:
7916
79171. When rustdoc encounters an `extern crate` statement annotated with a `#[doc(masked)]` attribute,
7918   it marks the crate as being masked.
7919
79202. When listing traits a given type implements, rustdoc ensures that traits from masked crates are
7921   not emitted into the documentation.
7922
79233. When listing types that implement a given trait, rustdoc ensures that types from masked crates
7924   are not emitted into the documentation.
7925
7926This feature was introduced in PR [#44026] to ensure that compiler-internal and
7927implementation-specific types and traits were not included in the standard library's documentation.
7928Such types would introduce broken links into the documentation.
7929
7930[#44026]: https://github.com/rust-lang/rust/pull/44026
7931[#44027]: https://github.com/rust-lang/rust/pull/44027
7932"##,
7933        default_severity: Severity::Allow,
7934        warn_since: None,
7935        deny_since: None,
7936    },
7937    Lint {
7938        label: "doc_notable_trait",
7939        description: r##"# `doc_notable_trait`
7940
7941The tracking issue for this feature is: [#45040]
7942
7943The `doc_notable_trait` feature allows the use of the `#[doc(notable_trait)]`
7944attribute, which will display the trait in a "Notable traits" dialog for
7945functions returning types that implement the trait. For example, this attribute
7946is applied to the `Iterator`, `Future`, `io::Read`, and `io::Write` traits in
7947the standard library.
7948
7949You can do this on your own traits like so:
7950
7951```
7952#![feature(doc_notable_trait)]
7953
7954#[doc(notable_trait)]
7955pub trait MyTrait {}
7956
7957pub struct MyStruct;
7958impl MyTrait for MyStruct {}
7959
7960/// The docs for this function will have a button that displays a dialog about
7961/// `MyStruct` implementing `MyTrait`.
7962pub fn my_fn() -> MyStruct { MyStruct }
7963```
7964
7965This feature was originally implemented in PR [#45039].
7966
7967See also its documentation in [the rustdoc book][rustdoc-book-notable_trait].
7968
7969[#45040]: https://github.com/rust-lang/rust/issues/45040
7970[#45039]: https://github.com/rust-lang/rust/pull/45039
7971[rustdoc-book-notable_trait]: ../../rustdoc/unstable-features.html#adding-your-trait-to-the-notable-traits-dialog
7972"##,
7973        default_severity: Severity::Allow,
7974        warn_since: None,
7975        deny_since: None,
7976    },
7977    Lint {
7978        label: "downcast_unchecked",
7979        description: r##"# `downcast_unchecked`
7980
7981
7982
7983The tracking issue for this feature is: [#90850]
7984
7985[#90850]: https://github.com/rust-lang/rust/issues/90850
7986
7987------------------------
7988"##,
7989        default_severity: Severity::Allow,
7990        warn_since: None,
7991        deny_since: None,
7992    },
7993    Lint {
7994        label: "drain_keep_rest",
7995        description: r##"# `drain_keep_rest`
7996
7997
7998
7999The tracking issue for this feature is: [#101122]
8000
8001[#101122]: https://github.com/rust-lang/rust/issues/101122
8002
8003------------------------
8004"##,
8005        default_severity: Severity::Allow,
8006        warn_since: None,
8007        deny_since: None,
8008    },
8009    Lint {
8010        label: "dropck_eyepatch",
8011        description: r##"# `dropck_eyepatch`
8012
8013Allows using the `may_dangle` attribute (RFC 1327).
8014
8015The tracking issue for this feature is: [#34761]
8016
8017[#34761]: https://github.com/rust-lang/rust/issues/34761
8018
8019------------------------
8020"##,
8021        default_severity: Severity::Allow,
8022        warn_since: None,
8023        deny_since: None,
8024    },
8025    Lint {
8026        label: "duration_constants",
8027        description: r##"# `duration_constants`
8028
8029
8030
8031The tracking issue for this feature is: [#57391]
8032
8033[#57391]: https://github.com/rust-lang/rust/issues/57391
8034
8035------------------------
8036"##,
8037        default_severity: Severity::Allow,
8038        warn_since: None,
8039        deny_since: None,
8040    },
8041    Lint {
8042        label: "duration_constructors",
8043        description: r##"# `duration_constructors`
8044
8045The tracking issue for this feature is: [#120301]
8046
8047[#120301]: https://github.com/rust-lang/rust/issues/120301
8048
8049------------------------
8050
8051Add the methods `from_days` and `from_weeks` to `Duration`.
8052"##,
8053        default_severity: Severity::Allow,
8054        warn_since: None,
8055        deny_since: None,
8056    },
8057    Lint {
8058        label: "duration_integer_division",
8059        description: r##"# `duration_integer_division`
8060
8061
8062
8063The tracking issue for this feature is: [#149573]
8064
8065[#149573]: https://github.com/rust-lang/rust/issues/149573
8066
8067------------------------
8068"##,
8069        default_severity: Severity::Allow,
8070        warn_since: None,
8071        deny_since: None,
8072    },
8073    Lint {
8074        label: "duration_millis_float",
8075        description: r##"# `duration_millis_float`
8076
8077
8078
8079The tracking issue for this feature is: [#122451]
8080
8081[#122451]: https://github.com/rust-lang/rust/issues/122451
8082
8083------------------------
8084"##,
8085        default_severity: Severity::Allow,
8086        warn_since: None,
8087        deny_since: None,
8088    },
8089    Lint {
8090        label: "duration_units",
8091        description: r##"# `duration_units`
8092
8093
8094
8095The tracking issue for this feature is: [#120301]
8096
8097[#120301]: https://github.com/rust-lang/rust/issues/120301
8098
8099------------------------
8100"##,
8101        default_severity: Severity::Allow,
8102        warn_since: None,
8103        deny_since: None,
8104    },
8105    Lint {
8106        label: "edition_panic",
8107        description: r##"# `edition_panic`
8108
8109
8110
8111This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
8112
8113------------------------
8114"##,
8115        default_severity: Severity::Allow,
8116        warn_since: None,
8117        deny_since: None,
8118    },
8119    Lint {
8120        label: "effective_target_features",
8121        description: r##"# `effective_target_features`
8122
8123Allows features to allow target_feature to better interact with traits.
8124
8125The tracking issue for this feature is: [#143352]
8126
8127[#143352]: https://github.com/rust-lang/rust/issues/143352
8128
8129------------------------
8130"##,
8131        default_severity: Severity::Allow,
8132        warn_since: None,
8133        deny_since: None,
8134    },
8135    Lint {
8136        label: "eii_internals",
8137        description: r##"# `eii_internals`
8138
8139Implementation details of externally implementable items
8140
8141This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
8142
8143------------------------
8144"##,
8145        default_severity: Severity::Allow,
8146        warn_since: None,
8147        deny_since: None,
8148    },
8149    Lint {
8150        label: "env_split_paths_ref",
8151        description: r##"# `env_split_paths_ref`
8152
8153
8154
8155This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
8156
8157------------------------
8158"##,
8159        default_severity: Severity::Allow,
8160        warn_since: None,
8161        deny_since: None,
8162    },
8163    Lint {
8164        label: "ergonomic_clones",
8165        description: r##"# `ergonomic_clones`
8166
8167Allows the .use postfix syntax `x.use` and use closures `use |x| { ... }`
8168
8169The tracking issue for this feature is: [#132290]
8170
8171[#132290]: https://github.com/rust-lang/rust/issues/132290
8172
8173------------------------
8174"##,
8175        default_severity: Severity::Allow,
8176        warn_since: None,
8177        deny_since: None,
8178    },
8179    Lint {
8180        label: "ermsb_target_feature",
8181        description: r##"# `ermsb_target_feature`
8182
8183ermsb target feature on x86.
8184
8185The tracking issue for this feature is: [#150249]
8186
8187[#150249]: https://github.com/rust-lang/rust/issues/150249
8188
8189------------------------
8190"##,
8191        default_severity: Severity::Allow,
8192        warn_since: None,
8193        deny_since: None,
8194    },
8195    Lint {
8196        label: "error_generic_member_access",
8197        description: r##"# `error_generic_member_access`
8198
8199
8200
8201The tracking issue for this feature is: [#99301]
8202
8203[#99301]: https://github.com/rust-lang/rust/issues/99301
8204
8205------------------------
8206"##,
8207        default_severity: Severity::Allow,
8208        warn_since: None,
8209        deny_since: None,
8210    },
8211    Lint {
8212        label: "error_iter",
8213        description: r##"# `error_iter`
8214
8215
8216
8217The tracking issue for this feature is: [#58520]
8218
8219[#58520]: https://github.com/rust-lang/rust/issues/58520
8220
8221------------------------
8222"##,
8223        default_severity: Severity::Allow,
8224        warn_since: None,
8225        deny_since: None,
8226    },
8227    Lint {
8228        label: "error_reporter",
8229        description: r##"# `error_reporter`
8230
8231
8232
8233The tracking issue for this feature is: [#90172]
8234
8235[#90172]: https://github.com/rust-lang/rust/issues/90172
8236
8237------------------------
8238"##,
8239        default_severity: Severity::Allow,
8240        warn_since: None,
8241        deny_since: None,
8242    },
8243    Lint {
8244        label: "error_type_id",
8245        description: r##"# `error_type_id`
8246
8247
8248
8249The tracking issue for this feature is: [#60784]
8250
8251[#60784]: https://github.com/rust-lang/rust/issues/60784
8252
8253------------------------
8254"##,
8255        default_severity: Severity::Allow,
8256        warn_since: None,
8257        deny_since: None,
8258    },
8259    Lint {
8260        label: "exact_bitshifts",
8261        description: r##"# `exact_bitshifts`
8262
8263
8264
8265The tracking issue for this feature is: [#144336]
8266
8267[#144336]: https://github.com/rust-lang/rust/issues/144336
8268
8269------------------------
8270"##,
8271        default_severity: Severity::Allow,
8272        warn_since: None,
8273        deny_since: None,
8274    },
8275    Lint {
8276        label: "exact_div",
8277        description: r##"# `exact_div`
8278
8279
8280
8281The tracking issue for this feature is: [#139911]
8282
8283[#139911]: https://github.com/rust-lang/rust/issues/139911
8284
8285------------------------
8286"##,
8287        default_severity: Severity::Allow,
8288        warn_since: None,
8289        deny_since: None,
8290    },
8291    Lint {
8292        label: "exact_size_is_empty",
8293        description: r##"# `exact_size_is_empty`
8294
8295
8296
8297The tracking issue for this feature is: [#35428]
8298
8299[#35428]: https://github.com/rust-lang/rust/issues/35428
8300
8301------------------------
8302"##,
8303        default_severity: Severity::Allow,
8304        warn_since: None,
8305        deny_since: None,
8306    },
8307    Lint {
8308        label: "exhaustive_patterns",
8309        description: r##"# `exhaustive_patterns`
8310
8311Allows exhaustive pattern matching on types that contain uninhabited types.
8312
8313The tracking issue for this feature is: [#51085]
8314
8315[#51085]: https://github.com/rust-lang/rust/issues/51085
8316
8317------------------------
8318"##,
8319        default_severity: Severity::Allow,
8320        warn_since: None,
8321        deny_since: None,
8322    },
8323    Lint {
8324        label: "exit_status_error",
8325        description: r##"# `exit_status_error`
8326
8327
8328
8329The tracking issue for this feature is: [#84908]
8330
8331[#84908]: https://github.com/rust-lang/rust/issues/84908
8332
8333------------------------
8334"##,
8335        default_severity: Severity::Allow,
8336        warn_since: None,
8337        deny_since: None,
8338    },
8339    Lint {
8340        label: "exitcode_exit_method",
8341        description: r##"# `exitcode_exit_method`
8342
8343
8344
8345The tracking issue for this feature is: [#97100]
8346
8347[#97100]: https://github.com/rust-lang/rust/issues/97100
8348
8349------------------------
8350"##,
8351        default_severity: Severity::Allow,
8352        warn_since: None,
8353        deny_since: None,
8354    },
8355    Lint {
8356        label: "explicit_extern_abis",
8357        description: r##"# `explicit_extern_abis`
8358
8359The tracking issue for this feature is: [#134986]
8360
8361------
8362
8363Disallow `extern` without an explicit ABI. We should write `extern "C"`
8364(or another ABI) instead of just `extern`.
8365
8366By making the ABI explicit, it becomes much clearer that "C" is just one of the
8367possible choices, rather than the "standard" way for external functions.
8368Removing the default makes it easier to add a new ABI on equal footing as "C".
8369
8370```rust,editionfuture,compile_fail
8371#![feature(explicit_extern_abis)]
8372
8373extern fn function1() {}  // ERROR `extern` declarations without an explicit ABI
8374                          // are disallowed
8375
8376extern "C" fn function2() {} // compiles
8377
8378extern "aapcs" fn function3() {} // compiles
8379```
8380
8381[#134986]: https://github.com/rust-lang/rust/issues/134986
8382"##,
8383        default_severity: Severity::Allow,
8384        warn_since: None,
8385        deny_since: None,
8386    },
8387    Lint {
8388        label: "explicit_tail_calls",
8389        description: r##"# `explicit_tail_calls`
8390
8391Allows explicit tail calls via `become` expression.
8392
8393The tracking issue for this feature is: [#112788]
8394
8395[#112788]: https://github.com/rust-lang/rust/issues/112788
8396
8397------------------------
8398"##,
8399        default_severity: Severity::Allow,
8400        warn_since: None,
8401        deny_since: None,
8402    },
8403    Lint {
8404        label: "export_stable",
8405        description: r##"# `export_stable`
8406
8407Allows using `#[export_stable]` which indicates that an item is exportable.
8408
8409The tracking issue for this feature is: [#139939]
8410
8411[#139939]: https://github.com/rust-lang/rust/issues/139939
8412
8413------------------------
8414"##,
8415        default_severity: Severity::Allow,
8416        warn_since: None,
8417        deny_since: None,
8418    },
8419    Lint {
8420        label: "extend_one",
8421        description: r##"# `extend_one`
8422
8423
8424
8425The tracking issue for this feature is: [#72631]
8426
8427[#72631]: https://github.com/rust-lang/rust/issues/72631
8428
8429------------------------
8430"##,
8431        default_severity: Severity::Allow,
8432        warn_since: None,
8433        deny_since: None,
8434    },
8435    Lint {
8436        label: "extend_one_unchecked",
8437        description: r##"# `extend_one_unchecked`
8438
8439
8440
8441This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
8442
8443------------------------
8444"##,
8445        default_severity: Severity::Allow,
8446        warn_since: None,
8447        deny_since: None,
8448    },
8449    Lint {
8450        label: "extern_item_impls",
8451        description: r##"# `extern_item_impls`
8452
8453Externally implementable items
8454
8455The tracking issue for this feature is: [#125418]
8456
8457[#125418]: https://github.com/rust-lang/rust/issues/125418
8458
8459------------------------
8460"##,
8461        default_severity: Severity::Allow,
8462        warn_since: None,
8463        deny_since: None,
8464    },
8465    Lint {
8466        label: "extern_types",
8467        description: r##"# `extern_types`
8468
8469Allows defining `extern type`s.
8470
8471The tracking issue for this feature is: [#43467]
8472
8473[#43467]: https://github.com/rust-lang/rust/issues/43467
8474
8475------------------------
8476"##,
8477        default_severity: Severity::Allow,
8478        warn_since: None,
8479        deny_since: None,
8480    },
8481    Lint {
8482        label: "f128",
8483        description: r##"# `f128`
8484
8485The tracking issue for this feature is: [#116909]
8486
8487[#116909]: https://github.com/rust-lang/rust/issues/116909
8488
8489---
8490
8491Enable the `f128` type for IEEE 128-bit floating numbers (quad precision).
8492"##,
8493        default_severity: Severity::Allow,
8494        warn_since: None,
8495        deny_since: None,
8496    },
8497    Lint {
8498        label: "f16",
8499        description: r##"# `f16`
8500
8501The tracking issue for this feature is: [#116909]
8502
8503[#116909]: https://github.com/rust-lang/rust/issues/116909
8504
8505---
8506
8507Enable the `f16` type for IEEE 16-bit floating numbers (half precision).
8508"##,
8509        default_severity: Severity::Allow,
8510        warn_since: None,
8511        deny_since: None,
8512    },
8513    Lint {
8514        label: "f16b",
8515        description: r##"# `f16b`
8516
8517The tracking issue for this feature is: [#160630]
8518
8519[#160630]: https://github.com/rust-lang/rust/issues/160630
8520
8521---
8522
8523Enable the `core::num::f16b` type for values stored in the bfloat16 format.
8524
8525`f16b` is a nominal library type, not a primitive floating-point type: it has no literal suffix, arithmetic operators, or numeric `as` casts. A compiler lang item connects its layout to the chosen backend's representation.
8526"##,
8527        default_severity: Severity::Allow,
8528        warn_since: None,
8529        deny_since: None,
8530    },
8531    Lint {
8532        label: "f32_from_f16",
8533        description: r##"# `f32_from_f16`
8534
8535
8536
8537The tracking issue for this feature is: [#154005]
8538
8539[#154005]: https://github.com/rust-lang/rust/issues/154005
8540
8541------------------------
8542"##,
8543        default_severity: Severity::Allow,
8544        warn_since: None,
8545        deny_since: None,
8546    },
8547    Lint {
8548        label: "fd",
8549        description: r##"# `fd`
8550
8551This feature is internal to the Rust compiler and is not intended for general use.
8552
8553------------------------
8554"##,
8555        default_severity: Severity::Allow,
8556        warn_since: None,
8557        deny_since: None,
8558    },
8559    Lint {
8560        label: "ffi_const",
8561        description: r##"# `ffi_const`
8562
8563The tracking issue for this feature is: [#58328]
8564
8565------
8566
8567The `#[ffi_const]` attribute applies clang's `const` attribute to foreign
8568functions declarations.
8569
8570That is, `#[ffi_const]` functions shall have no effects except for its return
8571value, which can only depend on the values of the function parameters, and is
8572not affected by changes to the observable state of the program.
8573
8574Applying the `#[ffi_const]` attribute to a function that violates these
8575requirements is undefined behaviour.
8576
8577This attribute enables Rust to perform common optimizations, like sub-expression
8578elimination, and it can avoid emitting some calls in repeated invocations of the
8579function with the same argument values regardless of other operations being
8580performed in between these functions calls (as opposed to `#[ffi_pure]`
8581functions).
8582
8583## Pitfalls
8584
8585A `#[ffi_const]` function can only read global memory that would not affect
8586its return value for the whole execution of the program (e.g. immutable global
8587memory). `#[ffi_const]` functions are referentially-transparent and therefore
8588more strict than `#[ffi_pure]` functions.
8589
8590A common pitfall involves applying the `#[ffi_const]` attribute to a
8591function that reads memory through pointer arguments which do not necessarily
8592point to immutable global memory.
8593
8594A `#[ffi_const]` function that returns unit has no effect on the abstract
8595machine's state, and a `#[ffi_const]` function cannot be `#[ffi_pure]`.
8596
8597A `#[ffi_const]` function must not diverge, neither via a side effect (e.g. a
8598call to `abort`) nor by infinite loops.
8599
8600When translating C headers to Rust FFI, it is worth verifying for which targets
8601the `const` attribute is enabled in those headers, and using the appropriate
8602`cfg` macros in the Rust side to match those definitions. While the semantics of
8603`const` are implemented identically by many C and C++ compilers, e.g., clang,
8604[GCC], [ARM C/C++ compiler], [IBM ILE C/C++], etc. they are not necessarily
8605implemented in this way on all of them. It is therefore also worth verifying
8606that the semantics of the C toolchain used to compile the binary being linked
8607against are compatible with those of the `#[ffi_const]`.
8608
8609[#58328]: https://github.com/rust-lang/rust/issues/58328
8610[ARM C/C++ compiler]: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0491c/Cacgigch.html
8611[GCC]: https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-const-function-attribute
8612[IBM ILE C/C++]: https://www.ibm.com/support/knowledgecenter/fr/ssw_ibm_i_71/rzarg/fn_attrib_const.htm
8613"##,
8614        default_severity: Severity::Allow,
8615        warn_since: None,
8616        deny_since: None,
8617    },
8618    Lint {
8619        label: "ffi_pure",
8620        description: r##"# `ffi_pure`
8621
8622The tracking issue for this feature is: [#58329]
8623
8624------
8625
8626The `#[ffi_pure]` attribute applies clang's `pure` attribute to foreign
8627functions declarations.
8628
8629That is, `#[ffi_pure]` functions shall have no effects except for its return
8630value, which shall not change across two consecutive function calls with
8631the same parameters.
8632
8633Applying the `#[ffi_pure]` attribute to a function that violates these
8634requirements is undefined behavior.
8635
8636This attribute enables Rust to perform common optimizations, like sub-expression
8637elimination and loop optimizations. Some common examples of pure functions are
8638`strlen` or `memcmp`.
8639
8640These optimizations are only applicable when the compiler can prove that no
8641program state observable by the `#[ffi_pure]` function has changed between calls
8642of the function, which could alter the result. See also the `#[ffi_const]`
8643attribute, which provides stronger guarantees regarding the allowable behavior
8644of a function, enabling further optimization.
8645
8646## Pitfalls
8647
8648A `#[ffi_pure]` function can read global memory through the function
8649parameters (e.g. pointers), globals, etc. `#[ffi_pure]` functions are not
8650referentially-transparent, and are therefore more relaxed than `#[ffi_const]`
8651functions.
8652
8653However, accessing global memory through volatile or atomic reads can violate the
8654requirement that two consecutive function calls shall return the same value.
8655
8656A `pure` function that returns unit has no effect on the abstract machine's
8657state.
8658
8659A `#[ffi_pure]` function must not diverge, neither via a side effect (e.g. a
8660call to `abort`) nor by infinite loops.
8661
8662When translating C headers to Rust FFI, it is worth verifying for which targets
8663the `pure` attribute is enabled in those headers, and using the appropriate
8664`cfg` macros in the Rust side to match those definitions. While the semantics of
8665`pure` are implemented identically by many C and C++ compilers, e.g., clang,
8666[GCC], [ARM C/C++ compiler], [IBM ILE C/C++], etc. they are not necessarily
8667implemented in this way on all of them. It is therefore also worth verifying
8668that the semantics of the C toolchain used to compile the binary being linked
8669against are compatible with those of the `#[ffi_pure]`.
8670
8671
8672[#58329]: https://github.com/rust-lang/rust/issues/58329
8673[ARM C/C++ compiler]: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0491c/Cacigdac.html
8674[GCC]: https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-pure-function-attribute
8675[IBM ILE C/C++]: https://www.ibm.com/support/knowledgecenter/fr/ssw_ibm_i_71/rzarg/fn_attrib_pure.htm
8676"##,
8677        default_severity: Severity::Allow,
8678        warn_since: None,
8679        deny_since: None,
8680    },
8681    Lint {
8682        label: "field_projections",
8683        description: r##"# `field_projections`
8684
8685Experimental field projections.
8686
8687The tracking issue for this feature is: [#145383]
8688
8689[#145383]: https://github.com/rust-lang/rust/issues/145383
8690
8691------------------------
8692"##,
8693        default_severity: Severity::Allow,
8694        warn_since: None,
8695        deny_since: None,
8696    },
8697    Lint {
8698        label: "field_representing_type_raw",
8699        description: r##"# `field_representing_type_raw`
8700
8701Implementation details of field representing types.
8702
8703This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
8704
8705------------------------
8706"##,
8707        default_severity: Severity::Allow,
8708        warn_since: None,
8709        deny_since: None,
8710    },
8711    Lint {
8712        label: "file_buffered",
8713        description: r##"# `file_buffered`
8714
8715
8716
8717The tracking issue for this feature is: [#130804]
8718
8719[#130804]: https://github.com/rust-lang/rust/issues/130804
8720
8721------------------------
8722"##,
8723        default_severity: Severity::Allow,
8724        warn_since: None,
8725        deny_since: None,
8726    },
8727    Lint {
8728        label: "final_associated_functions",
8729        description: r##"# `final_associated_functions`
8730
8731Allows marking trait functions as `final` to prevent overriding impls
8732
8733The tracking issue for this feature is: [#131179]
8734
8735[#131179]: https://github.com/rust-lang/rust/issues/131179
8736
8737------------------------
8738"##,
8739        default_severity: Severity::Allow,
8740        warn_since: None,
8741        deny_since: None,
8742    },
8743    Lint {
8744        label: "float_bits_const",
8745        description: r##"# `float_bits_const`
8746
8747
8748
8749The tracking issue for this feature is: [#151073]
8750
8751[#151073]: https://github.com/rust-lang/rust/issues/151073
8752
8753------------------------
8754"##,
8755        default_severity: Severity::Allow,
8756        warn_since: None,
8757        deny_since: None,
8758    },
8759    Lint {
8760        label: "float_conversions",
8761        description: r##"# `float_conversions`
8762
8763
8764
8765The tracking issue for this feature is: [#159913]
8766
8767[#159913]: https://github.com/rust-lang/rust/issues/159913
8768
8769------------------------
8770"##,
8771        default_severity: Severity::Allow,
8772        warn_since: None,
8773        deny_since: None,
8774    },
8775    Lint {
8776        label: "float_erf",
8777        description: r##"# `float_erf`
8778
8779
8780
8781The tracking issue for this feature is: [#136321]
8782
8783[#136321]: https://github.com/rust-lang/rust/issues/136321
8784
8785------------------------
8786"##,
8787        default_severity: Severity::Allow,
8788        warn_since: None,
8789        deny_since: None,
8790    },
8791    Lint {
8792        label: "float_exact_integer_constants",
8793        description: r##"# `float_exact_integer_constants`
8794
8795
8796
8797The tracking issue for this feature is: [#152466]
8798
8799[#152466]: https://github.com/rust-lang/rust/issues/152466
8800
8801------------------------
8802"##,
8803        default_severity: Severity::Allow,
8804        warn_since: None,
8805        deny_since: None,
8806    },
8807    Lint {
8808        label: "float_gamma",
8809        description: r##"# `float_gamma`
8810
8811
8812
8813The tracking issue for this feature is: [#99842]
8814
8815[#99842]: https://github.com/rust-lang/rust/issues/99842
8816
8817------------------------
8818"##,
8819        default_severity: Severity::Allow,
8820        warn_since: None,
8821        deny_since: None,
8822    },
8823    Lint {
8824        label: "float_masks",
8825        description: r##"# `float_masks`
8826
8827
8828
8829The tracking issue for this feature is: [#154064]
8830
8831[#154064]: https://github.com/rust-lang/rust/issues/154064
8832
8833------------------------
8834"##,
8835        default_severity: Severity::Allow,
8836        warn_since: None,
8837        deny_since: None,
8838    },
8839    Lint {
8840        label: "float_minimum_maximum",
8841        description: r##"# `float_minimum_maximum`
8842
8843
8844
8845The tracking issue for this feature is: [#91079]
8846
8847[#91079]: https://github.com/rust-lang/rust/issues/91079
8848
8849------------------------
8850"##,
8851        default_severity: Severity::Allow,
8852        warn_since: None,
8853        deny_since: None,
8854    },
8855    Lint {
8856        label: "float_mul_add_relaxed",
8857        description: r##"# `float_mul_add_relaxed`
8858
8859
8860
8861The tracking issue for this feature is: [#151770]
8862
8863[#151770]: https://github.com/rust-lang/rust/issues/151770
8864
8865------------------------
8866"##,
8867        default_severity: Severity::Allow,
8868        warn_since: None,
8869        deny_since: None,
8870    },
8871    Lint {
8872        label: "float_nan_to",
8873        description: r##"# `float_nan_to`
8874
8875
8876
8877The tracking issue for this feature is: [#161248]
8878
8879[#161248]: https://github.com/rust-lang/rust/issues/161248
8880
8881------------------------
8882"##,
8883        default_severity: Severity::Allow,
8884        warn_since: None,
8885        deny_since: None,
8886    },
8887    Lint {
8888        label: "flt2dec",
8889        description: r##"# `flt2dec`
8890
8891This feature is internal to the Rust compiler and is not intended for general use.
8892
8893------------------------
8894"##,
8895        default_severity: Severity::Allow,
8896        warn_since: None,
8897        deny_since: None,
8898    },
8899    Lint {
8900        label: "fma4_target_feature",
8901        description: r##"# `fma4_target_feature`
8902
8903fma4 target feature on x86.
8904
8905The tracking issue for this feature is: [#155233]
8906
8907[#155233]: https://github.com/rust-lang/rust/issues/155233
8908
8909------------------------
8910"##,
8911        default_severity: Severity::Allow,
8912        warn_since: None,
8913        deny_since: None,
8914    },
8915    Lint {
8916        label: "fmt_arguments_from_str",
8917        description: r##"# `fmt_arguments_from_str`
8918
8919
8920
8921The tracking issue for this feature is: [#148905]
8922
8923[#148905]: https://github.com/rust-lang/rust/issues/148905
8924
8925------------------------
8926"##,
8927        default_severity: Severity::Allow,
8928        warn_since: None,
8929        deny_since: None,
8930    },
8931    Lint {
8932        label: "fmt_debug",
8933        description: r##"# `fmt_debug`
8934
8935Controlling the behavior of fmt::Debug
8936
8937The tracking issue for this feature is: [#129709]
8938
8939[#129709]: https://github.com/rust-lang/rust/issues/129709
8940
8941------------------------
8942"##,
8943        default_severity: Severity::Allow,
8944        warn_since: None,
8945        deny_since: None,
8946    },
8947    Lint {
8948        label: "fmt_helpers_for_derive",
8949        description: r##"# `fmt_helpers_for_derive`
8950
8951
8952
8953This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
8954
8955------------------------
8956"##,
8957        default_severity: Severity::Allow,
8958        warn_since: None,
8959        deny_since: None,
8960    },
8961    Lint {
8962        label: "fmt_internals",
8963        description: r##"# `fmt_internals`
8964
8965This feature is internal to the Rust compiler and is not intended for general use.
8966
8967------------------------
8968"##,
8969        default_severity: Severity::Allow,
8970        warn_since: None,
8971        deny_since: None,
8972    },
8973    Lint {
8974        label: "fn_align",
8975        description: r##"# `fn_align`
8976
8977Allows using `#[align(...)]` on function items
8978
8979The tracking issue for this feature is: [#82232]
8980
8981[#82232]: https://github.com/rust-lang/rust/issues/82232
8982
8983------------------------
8984"##,
8985        default_severity: Severity::Allow,
8986        warn_since: None,
8987        deny_since: None,
8988    },
8989    Lint {
8990        label: "fn_delegation",
8991        description: r##"# `fn_delegation`
8992
8993Support delegating implementation of functions to other already implemented functions.
8994
8995The tracking issue for this feature is: [#118212]
8996
8997[#118212]: https://github.com/rust-lang/rust/issues/118212
8998
8999------------------------
9000"##,
9001        default_severity: Severity::Allow,
9002        warn_since: None,
9003        deny_since: None,
9004    },
9005    Lint {
9006        label: "fn_static",
9007        description: r##"# `fn_static`
9008
9009Traits for function pointers and items
9010
9011The tracking issue for this feature is: [#148768]
9012
9013[#148768]: https://github.com/rust-lang/rust/issues/148768
9014
9015------------------------
9016"##,
9017        default_severity: Severity::Allow,
9018        warn_since: None,
9019        deny_since: None,
9020    },
9021    Lint {
9022        label: "fn_traits",
9023        description: r##"# `fn_traits`
9024
9025The tracking issue for this feature is [#29625]
9026
9027See Also: [`unboxed_closures`](../language-features/unboxed-closures.md)
9028
9029[#29625]: https://github.com/rust-lang/rust/issues/29625
9030
9031----
9032
9033The `fn_traits` feature allows for implementation of the [`Fn*`] traits
9034for creating custom closure-like types.
9035
9036[`Fn*`]: ../../std/ops/trait.Fn.html
9037
9038```rust
9039#![feature(unboxed_closures)]
9040#![feature(fn_traits)]
9041
9042struct Adder {
9043    a: u32
9044}
9045
9046impl FnOnce<(u32, )> for Adder {
9047    type Output = u32;
9048    extern "rust-call" fn call_once(self, b: (u32, )) -> Self::Output {
9049        self.a + b.0
9050    }
9051}
9052
9053fn main() {
9054    let adder = Adder { a: 3 };
9055    assert_eq!(adder(2), 5);
9056}
9057```
9058"##,
9059        default_severity: Severity::Allow,
9060        warn_since: None,
9061        deny_since: None,
9062    },
9063    Lint {
9064        label: "forced_keywords",
9065        description: r##"# `forced_keywords`
9066
9067Allows using forced keywords `k#fn`.
9068
9069The tracking issue for this feature is: [#153839]
9070
9071[#153839]: https://github.com/rust-lang/rust/issues/153839
9072
9073------------------------
9074"##,
9075        default_severity: Severity::Allow,
9076        warn_since: None,
9077        deny_since: None,
9078    },
9079    Lint {
9080        label: "forget_unsized",
9081        description: r##"# `forget_unsized`
9082
9083
9084
9085This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
9086
9087------------------------
9088"##,
9089        default_severity: Severity::Allow,
9090        warn_since: None,
9091        deny_since: None,
9092    },
9093    Lint {
9094        label: "format_args_nl",
9095        description: r##"# `format_args_nl`
9096
9097
9098
9099This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
9100
9101------------------------
9102"##,
9103        default_severity: Severity::Allow,
9104        warn_since: None,
9105        deny_since: None,
9106    },
9107    Lint {
9108        label: "formatting_options",
9109        description: r##"# `formatting_options`
9110
9111
9112
9113The tracking issue for this feature is: [#118117]
9114
9115[#118117]: https://github.com/rust-lang/rust/issues/118117
9116
9117------------------------
9118"##,
9119        default_severity: Severity::Allow,
9120        warn_since: None,
9121        deny_since: None,
9122    },
9123    Lint {
9124        label: "freeze",
9125        description: r##"# `freeze`
9126
9127
9128
9129The tracking issue for this feature is: [#121675]
9130
9131[#121675]: https://github.com/rust-lang/rust/issues/121675
9132
9133------------------------
9134"##,
9135        default_severity: Severity::Allow,
9136        warn_since: None,
9137        deny_since: None,
9138    },
9139    Lint {
9140        label: "freeze_impls",
9141        description: r##"# `freeze_impls`
9142
9143Allows impls for the Freeze trait.
9144
9145The tracking issue for this feature is: [#121675]
9146
9147[#121675]: https://github.com/rust-lang/rust/issues/121675
9148
9149------------------------
9150"##,
9151        default_severity: Severity::Allow,
9152        warn_since: None,
9153        deny_since: None,
9154    },
9155    Lint {
9156        label: "frontmatter",
9157        description: r##"# `frontmatter`
9158
9159The tracking issue for this feature is: [#136889]
9160
9161------
9162
9163The `frontmatter` feature allows an extra metadata block at the top of files for consumption by
9164external tools. For example, it can be used by [`cargo-script`] files to specify dependencies.
9165
9166```rust
9167#!/usr/bin/env -S cargo -Zscript
9168---
9169[dependencies]
9170libc = "0.2.172"
9171---
9172#![feature(frontmatter)]
9173# mod libc { pub type c_int = i32; }
9174
9175fn main() {
9176    let x: libc::c_int = 1i32;
9177}
9178```
9179
9180[#136889]: https://github.com/rust-lang/rust/issues/136889
9181[`cargo-script`]: https://rust-lang.github.io/rfcs/3502-cargo-script.html
9182"##,
9183        default_severity: Severity::Allow,
9184        warn_since: None,
9185        deny_since: None,
9186    },
9187    Lint {
9188        label: "fs_home_dirs",
9189        description: r##"# `fs_home_dirs`
9190
9191
9192
9193The tracking issue for this feature is: [#162082]
9194
9195[#162082]: https://github.com/rust-lang/rust/issues/162082
9196
9197------------------------
9198"##,
9199        default_severity: Severity::Allow,
9200        warn_since: None,
9201        deny_since: None,
9202    },
9203    Lint {
9204        label: "fs_media_dirs",
9205        description: r##"# `fs_media_dirs`
9206
9207
9208
9209The tracking issue for this feature is: [#162083]
9210
9211[#162083]: https://github.com/rust-lang/rust/issues/162083
9212
9213------------------------
9214"##,
9215        default_severity: Severity::Allow,
9216        warn_since: None,
9217        deny_since: None,
9218    },
9219    Lint {
9220        label: "function_arg_const_generics",
9221        description: r##"# function_arg_const_generics
9222
9223The tracking issue for this feature is: [#163261]
9224
9225[#163261]: https://github.com/rust-lang/rust/issues/163261
9226
9227------------------------
9228
9229The `#![feature(function_arg_const_generics)]` allows const generic parameters to be declared in a function's value parameter list and supplied as ordinary call arguments, rather than through generic arguments (turbofish syntax).
9230
9231Warning: This feature is incomplete; its design and syntax may change.
9232
9233This feature requires either `#![feature(gca_min_const_items)]` or `#![feature(gca_adts)]`.
9234
9235## Examples
9236
9237Normally, const generic parameters are declared in the generic parameter list and supplied using turbofish syntax:
9238
9239```rust
9240fn foo<const N: usize>(value: u8) {
9241    let _ = N;
9242}
9243
9244fn main() {
9245    foo::<42>(10);
9246}
9247```
9248
9249With `function_arg_const_generics`, the const generic parameter can instead be declared in the function's value parameter list:
9250
9251```rust
9252#![allow(incomplete_features)]
9253#![feature(function_arg_const_generics, gca_min_const_items)]
9254
9255fn foo(const N: usize, value: u8) {
9256    let _ = (N, value);
9257}
9258
9259fn main() {
9260    foo(42, 10);
9261}
9262```
9263
9264Here, `N` is still a const generic parameter, but its value is supplied as the first argument to the function call.
9265
9266### Methods and trait functions
9267
9268Argument position const generic parameters are supported in free functions, inherent methods, trait methods, and trait implementations.
9269
9270```rust
9271#![allow(incomplete_features)]
9272#![feature(function_arg_const_generics, gca_min_const_items)]
9273
9274struct Foo;
9275
9276impl Foo {
9277    fn bar(&self, const N: usize) {
9278        let _ = N;
9279    }
9280}
9281
9282trait Trait {
9283    fn baz(const N: usize);
9284}
9285
9286impl Trait for Foo {
9287    fn baz(const N: usize) {
9288        let _ = N;
9289    }
9290}
9291
9292fn main() {
9293    Foo.bar(10);
9294    Foo::baz(20);
9295}
9296```
9297
9298### Supported const arguments
9299
9300Currently, only the following forms of const arguments are supported:
9301
9302- Literals.
9303- Paths to const generic parameters.
9304- Paths to const items, provided the const item is marked for use in the type system, for example using `gca!`.
9305
9306```rust
9307#![allow(incomplete_features)]
9308#![feature(function_arg_const_generics, gca_min_const_items)]
9309
9310fn foo(const N: usize) {
9311    let _ = N;
9312}
9313
9314const VALUE: usize = core::gca!(42);
9315
9316fn bar<const K: usize>() {
9317    foo(K);
9318}
9319
9320fn main() {
9321    foo(10);    // OK: integer literal
9322    foo(VALUE); // OK: const item marked with gca!
9323    bar::<20>();
9324}
9325```
9326
9327### Restrictions
9328
9329Argument position const generic parameters have the following restrictions:
9330
9331- They must be declared using a plain identifier, such as `const N: usize`.
9332- They cannot be explicitly supplied using turbofish syntax.
9333- Arguments must use one of the supported const argument forms described above.
9334
9335For example, a runtime local variable cannot be used as a const argument:
9336
9337```rust,compile_fail
9338#![allow(incomplete_features)]
9339#![feature(function_arg_const_generics, gca_min_const_items)]
9340
9341fn foo(const N: usize) {}
9342
9343fn main() {
9344    let n = 10;
9345    foo(n); // ERROR: runtime local variable
9346}
9347```
9348
9349Similarly, argument position const generic parameters cannot be specified using turbofish syntax:
9350
9351```rust,compile_fail,E0107
9352#![allow(incomplete_features)]
9353#![feature(function_arg_const_generics, gca_min_const_items)]
9354
9355fn foo(const N: usize) {}
9356
9357fn main() {
9358    foo::<10>(10); // ERROR: N cannot be specified using turbofish
9359}
9360```
9361
9362Argument position const generic parameters are not currently supported in function pointer types, `Fn()` trait syntax, or foreign function declarations.
9363"##,
9364        default_severity: Severity::Allow,
9365        warn_since: None,
9366        deny_since: None,
9367    },
9368    Lint {
9369        label: "fundamental",
9370        description: r##"# `fundamental`
9371
9372Allows using the `#[fundamental]` attribute.
9373
9374The tracking issue for this feature is: [#29635]
9375
9376[#29635]: https://github.com/rust-lang/rust/issues/29635
9377
9378------------------------
9379"##,
9380        default_severity: Severity::Allow,
9381        warn_since: None,
9382        deny_since: None,
9383    },
9384    Lint {
9385        label: "future_join",
9386        description: r##"# `future_join`
9387
9388
9389
9390The tracking issue for this feature is: [#91642]
9391
9392[#91642]: https://github.com/rust-lang/rust/issues/91642
9393
9394------------------------
9395"##,
9396        default_severity: Severity::Allow,
9397        warn_since: None,
9398        deny_since: None,
9399    },
9400    Lint {
9401        label: "gca_adts",
9402        description: r##"# gca_adts
9403
9404Enables ADTs under the generic const args family of features (e.g. `gca!` macro).
9405
9406The tracking issue for this feature is: [#163420]
9407
9408[#163420]: https://github.com/rust-lang/rust/issues/163420
9409
9410## Examples
9411
9412```rust
9413#![feature(gca_min_const_items, min_adt_const_params, gca_adts)]
9414
9415use std::gca;
9416
9417struct S<const A: [u32; 2]>;
9418
9419fn main() {
9420    let _: S<gca!([1, 2])> = S::<gca!([1, 2])>;
9421}
9422```
9423"##,
9424        default_severity: Severity::Allow,
9425        warn_since: None,
9426        deny_since: None,
9427    },
9428    Lint {
9429        label: "gca_const_items",
9430        description: r##"# gca_const_items
9431
9432Allows using generics in more complex const expressions, based on definitional equality.
9433
9434The tracking issue for this feature is: [#151972]
9435
9436[#151972]: https://github.com/rust-lang/rust/issues/151972
9437
9438------------------------
9439
9440Warning: This feature is incomplete; its design and syntax may change.
9441
9442This feature enables many of the same use cases supported by [generic_const_exprs],
9443but based on the machinery developed for [gca_min_const_items]. In a way, it is
9444meant to be an interim successor for GCE (though it might not currently support all
9445the valid cases that supported by GCE).
9446
9447See also: [generic_const_items]
9448
9449[gca_min_const_items]: gca-min-const-items.md
9450[generic_const_exprs]: generic-const-exprs.md
9451[generic_const_items]: generic-const-items.md
9452
9453## Examples
9454
9455<!-- NOTE(ignore) gca_const_items requires -Znext-solver to compile -->
9456```rust,ignore (requires-Z-next-solver)
9457#![feature(generic_const_items)]
9458#![feature(gca_min_const_items)]
9459#![feature(gca_const_items)]
9460#![expect(incomplete_features)]
9461
9462type const ADD1<const N: usize>: usize = const { N + 1 };
9463
9464type const INC<const N: usize>: usize = ADD1::<N>;
9465
9466const ARR: [(); ADD1::<0>] = [(); INC::<0>];
9467```
9468"##,
9469        default_severity: Severity::Allow,
9470        warn_since: None,
9471        deny_since: None,
9472    },
9473    Lint {
9474        label: "gca_macroless_args",
9475        description: r##"# gca_macroless_args
9476
9477Enables using `#![feature(gca_min_const_items)]` without the `gca!` macro.
9478
9479The tracking issue for this feature is: [#159006]
9480
9481[#159006]: https://github.com/rust-lang/rust/issues/159006
9482
9483------------------------
9484
9485Warning: This feature is incomplete; its design and syntax may change.
9486
9487Related features:
9488- [gca_min_const_items]. See that doc for what the `gca!` is. This feature enables
9489support for directly represented const arguments without the macro.
9490- [gca_macroless_items]. For a version of this feature that works for const arguments
9491as the right hand side of a const item.
9492
9493[gca_min_const_items]: gca-min-const-items.md
9494[gca_macroless_items]: gca-macroless-items.md
9495
9496## Examples
9497
9498Here is an example from [gca_min_const_items]:
9499
9500[gca_min_const_items]: gca-min-const-items.md
9501
9502```rust
9503#![allow(incomplete_features)]
9504#![feature(gca_min_const_items)]
9505
9506trait Bar {
9507    #[rustc_always_gca]
9508    const VAL: usize;
9509    #[rustc_always_gca]
9510    const VAL2: usize;
9511}
9512
9513struct Baz;
9514
9515impl Bar for Baz {
9516    const VAL: usize = core::gca!(2);
9517    const VAL2: usize = core::gca!(const { Self::VAL * 2 });
9518}
9519
9520struct Foo<B: Bar> {
9521    arr1: [usize; core::gca!(B::VAL)],
9522    arr2: [usize; core::gca!(B::VAL2)],
9523}
9524```
9525
9526Using `#![feature(gca_macroless_args)]` enables you to write the above without the macro:
9527
9528```rust
9529#![allow(incomplete_features)]
9530#![feature(gca_min_const_items, gca_macroless_args)]
9531
9532trait Bar {
9533    #[rustc_always_gca]
9534    const VAL: usize;
9535    #[rustc_always_gca]
9536    const VAL2: usize;
9537}
9538
9539struct Baz;
9540
9541impl Bar for Baz {
9542    // note these still need a macro, macroless for these is `gca_macroless_items`
9543    const VAL: usize = core::gca!(2);
9544    const VAL2: usize = core::gca!(const { Self::VAL * 2 });
9545}
9546
9547struct Foo<B: Bar> {
9548    arr1: [usize; B::VAL],
9549    arr2: [usize; B::VAL2],
9550}
9551```
9552"##,
9553        default_severity: Severity::Allow,
9554        warn_since: None,
9555        deny_since: None,
9556    },
9557    Lint {
9558        label: "gca_macroless_items",
9559        description: r##"# gca_macroless_args
9560
9561Enables implementing const items under `#![feature(gca_min_const_items)]` and `#![feature(gca_const_items)]` without the `gca!` macro.
9562
9563The tracking issue for this feature is: [#162540]
9564
9565[#162540]: https://github.com/rust-lang/rust/issues/162540
9566
9567------------------------
9568
9569Warning: This feature is incomplete; its design and syntax may change.
9570
9571Related features:
9572- [gca_min_const_items]. See that doc for what the `gca!` is. This feature enables
9573support for directly represented const arguments as the rhs of const items without the macro.
9574- [gca_macroless_args]. For a version of this feature that works for const arguments in other
9575positions
9576
9577[gca_min_const_items]: gca-min-const-items.md
9578[gca_macroless_args]: gca-macroless-args.md
9579
9580## Examples
9581
9582Here is an example from [gca_min_const_items]:
9583
9584[gca_min_const_items]: gca-min-const-items.md
9585
9586```rust,ignore (needs new solver)
9587#![allow(incomplete_features)]
9588#![feature(
9589    gca_min_const_items,
9590    gca_const_items,
9591    gca_macroless_args,
9592    generic_const_items,
9593)]
9594
9595trait Trait {
9596    const ASSOC<const N: usize>: usize;
9597}
9598
9599impl Trait for () {
9600    const ASSOC<const N: usize>: usize = core::gca!(N);
9601}
9602
9603fn foo<const N: usize>() {
9604    let a: [(); <() as Trait>::ASSOC::<N>]
9605        = [(); N];
9606}
9607```
9608
9609Using `#![feature(gca_macroless_items)]` enables you to write the above without the macro:
9610
9611```rust,ignore (needs new solver)
9612#![allow(incomplete_features)]
9613#![feature(
9614    gca_min_const_items,
9615    gca_const_items,
9616    gca_macroless_args,
9617    gca_macroless_items,
9618    generic_const_items,
9619)]
9620
9621trait Trait {
9622    const ASSOC<const N: usize>: usize;
9623}
9624
9625impl Trait for () {
9626    const ASSOC<const N: usize>: usize = N;
9627}
9628
9629fn foo<const N: usize>() {
9630    let a: [(); <() as Trait>::ASSOC::<N>]
9631        = [(); N];
9632}
9633```
9634"##,
9635        default_severity: Severity::Allow,
9636        warn_since: None,
9637        deny_since: None,
9638    },
9639    Lint {
9640        label: "gca_min_const_items",
9641        description: r##"# gca_min_const_items
9642
9643Enables the generic const args MVP (paths to direct const items and primitives).
9644
9645The tracking issue for this feature is: [#132980]
9646
9647[#132980]: https://github.com/rust-lang/rust/issues/132980
9648
9649------------------------
9650
9651Warning: This feature is incomplete; its design and syntax may change.
9652
9653This feature acts as a minimal alternative to [generic_const_exprs] that allows a smaller subset of functionality,
9654and uses a different approach for implementation. It is intentionally more restrictive, which helps with avoiding edge
9655cases that make the `generic_const_exprs` hard to implement properly. See [Feature background][feature_background]
9656for more details.
9657
9658Related features: [gca_macroless_args], [gca_const_items], [generic_const_items].
9659
9660[feature_background]: https://github.com/rust-lang/project-const-generics/blob/main/documents/min_const_generics_plan.md
9661[generic_const_exprs]: generic-const-exprs.md
9662[gca_macroless_args]: gca-macroless-args.md
9663[gca_const_items]: gca-const-items.md
9664[generic_const_items]: generic-const-items.md
9665
9666## `gca!` macro
9667
9668This feature introduces a new macro: `gca!`.
9669
9670When an expression is used as a generic argument, it is typically lowered as an "anon const", which is an expression
9671that is opaque to the type system and cannot contain generics. Using `gca!` instead represents the
9672expression "directly", i.e. without an anon const, in a way that is visible to the type system.
9673
9674(Note that plain paths to generic parameters are always represented directly, without `gca!`, as this
9675already works on stable)
9676
9677See [gca_macroless_args] as a feature to disable the requirement of writing `gca!`.
9678
9679[gca_macroless_args]: gca-macroless-args.md
9680
9681## direct const items
9682
9683This feature introduces a new item kind: consts with a `gca!` right-hand side.
9684Constants with a direct right-hand side are allowed to be used in type contexts, e.g.:
9685
9686```compile_fail
9687#![allow(incomplete_features)]
9688#![feature(gca_min_const_items)]
9689
9690const X: usize = core::gca!(1);
9691const Y: usize = 1;
9692
9693struct Foo {
9694    good_arr: [(); core::gca!(X)], // Allowed
9695    bad_arr: [(); core::gca!(Y)], // Will not compile
9696}
9697```
9698
9699## Examples
9700
9701```rust
9702#![allow(incomplete_features)]
9703#![feature(gca_min_const_items)]
9704
9705trait Bar {
9706    #[rustc_always_gca]
9707    const VAL: usize;
9708    #[rustc_always_gca]
9709    const VAL2: usize;
9710}
9711
9712struct Baz;
9713
9714impl Bar for Baz {
9715    const VAL: usize = core::gca!(2);
9716    const VAL2: usize = core::gca!(const { Self::VAL * 2 });
9717}
9718
9719struct Foo<B: Bar> {
9720    arr1: [usize; core::gca!(B::VAL)],
9721    arr2: [usize; core::gca!(B::VAL2)],
9722}
9723```
9724
9725Note that with [generic_const_exprs] the same example would look as follows:
9726
9727```rust
9728#![allow(incomplete_features)]
9729#![feature(generic_const_exprs)]
9730
9731trait Bar {
9732    const VAL: usize;
9733    const VAL2: usize;
9734}
9735
9736struct Baz;
9737
9738impl Bar for Baz {
9739    const VAL: usize = 2;
9740    const VAL2: usize = const { Self::VAL * 2 };
9741}
9742
9743struct Foo<B: Bar>
9744where
9745    [(); B::VAL]:,
9746    [(); B::VAL2]:,
9747{
9748    arr1: [usize; B::VAL],
9749    arr2: [usize; B::VAL2],
9750}
9751```
9752
9753Use of const functions is allowed:
9754
9755```rust
9756#![allow(incomplete_features)]
9757#![feature(gca_min_const_items)]
9758
9759const VAL: usize = 1;
9760
9761const fn inc(val: usize) -> usize {
9762    val + 1
9763}
9764
9765const INC: usize = core::gca!(const { inc(VAL) });
9766
9767const ARR: [usize; INC] = [0; INC];
9768```
9769"##,
9770        default_severity: Severity::Allow,
9771        warn_since: None,
9772        deny_since: None,
9773    },
9774    Lint {
9775        label: "gen_blocks",
9776        description: r##"# `gen_blocks`
9777
9778Allows defining gen blocks and `gen fn`.
9779
9780The tracking issue for this feature is: [#117078]
9781
9782[#117078]: https://github.com/rust-lang/rust/issues/117078
9783
9784------------------------
9785"##,
9786        default_severity: Severity::Allow,
9787        warn_since: None,
9788        deny_since: None,
9789    },
9790    Lint {
9791        label: "gen_future",
9792        description: r##"# `gen_future`
9793
9794
9795
9796This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
9797
9798------------------------
9799"##,
9800        default_severity: Severity::Allow,
9801        warn_since: None,
9802        deny_since: None,
9803    },
9804    Lint {
9805        label: "generic_assert",
9806        description: r##"# `generic_assert`
9807
9808Outputs useful `assert!` messages
9809
9810This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
9811
9812------------------------
9813"##,
9814        default_severity: Severity::Allow,
9815        warn_since: None,
9816        deny_since: None,
9817    },
9818    Lint {
9819        label: "generic_assert_internals",
9820        description: r##"# `generic_assert_internals`
9821
9822
9823
9824The tracking issue for this feature is: [#44838]
9825
9826[#44838]: https://github.com/rust-lang/rust/issues/44838
9827
9828------------------------
9829"##,
9830        default_severity: Severity::Allow,
9831        warn_since: None,
9832        deny_since: None,
9833    },
9834    Lint {
9835        label: "generic_atomic",
9836        description: r##"# `generic_atomic`
9837
9838
9839
9840The tracking issue for this feature is: [#130539]
9841
9842[#130539]: https://github.com/rust-lang/rust/issues/130539
9843
9844------------------------
9845"##,
9846        default_severity: Severity::Allow,
9847        warn_since: None,
9848        deny_since: None,
9849    },
9850    Lint {
9851        label: "generic_const_exprs",
9852        description: r##"# generic_const_exprs
9853
9854Allows non-trivial generic constants which have to be shown to successfully evaluate
9855to a value by being part of an item signature.
9856
9857The tracking issue for this feature is: [#76560]
9858
9859
9860[#76560]: https://github.com/rust-lang/rust/issues/76560
9861
9862------------------------
9863
9864Warning: This feature is incomplete; its design and syntax may change.
9865
9866See also: [gca_min_const_items], [gca_const_items]
9867
9868[gca_min_const_items]: gca-min-const-items.md
9869[gca_const_items]: gca-const-items.md
9870
9871## Examples
9872
9873```rust
9874#![allow(incomplete_features)]
9875#![feature(generic_const_exprs)]
9876
9877// Use parameters that depend on a generic argument.
9878struct Foo<const N: usize>
9879where
9880    [(); N + 1]:,
9881{
9882    array: [usize; N + 1],
9883}
9884
9885// Use generic parameters in const operations.
9886trait Bar {
9887    const X: usize;
9888    const Y: usize;
9889}
9890
9891// Note `B::X * B::Y`.
9892const fn baz<B: Bar>(x: [usize; B::X], y: [usize; B::Y]) -> [usize; B::X * B::Y] {
9893    let mut out = [0; B::X * B::Y];
9894    let mut i = 0;
9895    while i < B::Y {
9896        let mut j = 0;
9897        while j < B::X {
9898            out[i * B::X + j] = y[i].saturating_mul(x[j]);
9899            j += 1;
9900        }
9901        i += 1;
9902    }
9903    out
9904}
9905
9906
9907// Create a new type based on a generic argument.
9908pub struct Grow<const N: usize> {
9909    arr: [usize; N],
9910}
9911
9912impl<const N: usize> Grow<N> {
9913    pub const fn grow(self, val: usize) -> Grow<{ N + 1 }> {
9914        let mut new_arr = [0; { N + 1 }];
9915        let mut idx = 0;
9916        while idx < N {
9917            new_arr[idx] = self.arr[idx];
9918            idx += 1;
9919        }
9920        new_arr[N] = val;
9921        Grow { arr: new_arr }
9922    }
9923}
9924```
9925"##,
9926        default_severity: Severity::Allow,
9927        warn_since: None,
9928        deny_since: None,
9929    },
9930    Lint {
9931        label: "generic_const_items",
9932        description: r##"# generic_const_items
9933
9934Allows generic parameters and where-clauses on free & associated const items.
9935
9936The tracking issue for this feature is: [#113521]
9937
9938[#113521]: https://github.com/rust-lang/rust/issues/113521
9939
9940------------------------
9941
9942Warning: This feature is an [experiment] and lacks an RFC.
9943There are no guarantees that it will ever be stabilized.
9944
9945See also: [generic_const_exprs], [gca_min_const_items].
9946
9947[experiment]: https://lang-team.rust-lang.org/how_to/experiment.html
9948[generic_const_exprs]: generic-const-exprs.md
9949[gca_min_const_items]: gca-min-const-items.md
9950
9951## Examples
9952
9953### Generic constant values
9954
9955```rust
9956#![allow(incomplete_features)]
9957#![feature(generic_const_items)]
9958
9959const GENERIC_VAL<const ARG: usize>: usize = ARG + 1;
9960
9961#[test]
9962fn generic_const_arg() {
9963    assert_eq!(GENERIC_VAL::<1>, 2);
9964    assert_eq!(GENERIC_VAL::<2>, 3);
9965}
9966```
9967
9968### Conditional constants
9969
9970```rust
9971#![allow(incomplete_features)]
9972#![feature(generic_const_items)]
9973
9974// `GENERIC_VAL::<0>` will fail to compile
9975const GENERIC_VAL<const ARG: usize>: usize = if ARG > 0 { ARG + 1 } else { panic!("0 value") };
9976
9977// Will fail to compile if the `Copy` derive is removed.
9978const COPY_MARKER<C: Copy>: () = ();
9979
9980#[derive(Clone, Copy)]
9981struct Foo;
9982
9983const FOO_IS_COPY: () = COPY_MARKER::<Foo>;
9984```
9985"##,
9986        default_severity: Severity::Allow,
9987        warn_since: None,
9988        deny_since: None,
9989    },
9990    Lint {
9991        label: "generic_const_parameter_types",
9992        description: r##"# `generic_const_parameter_types`
9993
9994Allows the type of const generics to depend on generic parameters
9995
9996The tracking issue for this feature is: [#137626]
9997
9998[#137626]: https://github.com/rust-lang/rust/issues/137626
9999
10000------------------------
10001"##,
10002        default_severity: Severity::Allow,
10003        warn_since: None,
10004        deny_since: None,
10005    },
10006    Lint {
10007        label: "generic_pattern_types",
10008        description: r##"# `generic_pattern_types`
10009
10010Allows any generic constants being used as pattern type range ends
10011
10012The tracking issue for this feature is: [#136574]
10013
10014[#136574]: https://github.com/rust-lang/rust/issues/136574
10015
10016------------------------
10017"##,
10018        default_severity: Severity::Allow,
10019        warn_since: None,
10020        deny_since: None,
10021    },
10022    Lint {
10023        label: "get_disjoint_mut_helpers",
10024        description: r##"# `get_disjoint_mut_helpers`
10025
10026
10027
10028This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
10029
10030------------------------
10031"##,
10032        default_severity: Severity::Allow,
10033        warn_since: None,
10034        deny_since: None,
10035    },
10036    Lint {
10037        label: "get_mut_unchecked",
10038        description: r##"# `get_mut_unchecked`
10039
10040
10041
10042The tracking issue for this feature is: [#63292]
10043
10044[#63292]: https://github.com/rust-lang/rust/issues/63292
10045
10046------------------------
10047"##,
10048        default_severity: Severity::Allow,
10049        warn_since: None,
10050        deny_since: None,
10051    },
10052    Lint {
10053        label: "gethostname",
10054        description: r##"# `gethostname`
10055
10056
10057
10058The tracking issue for this feature is: [#135142]
10059
10060[#135142]: https://github.com/rust-lang/rust/issues/135142
10061
10062------------------------
10063"##,
10064        default_severity: Severity::Allow,
10065        warn_since: None,
10066        deny_since: None,
10067    },
10068    Lint {
10069        label: "global_registration",
10070        description: r##"# `global_registration`
10071
10072Allows registering static items globally, possibly across crates, to iterate over at runtime.
10073
10074The tracking issue for this feature is: [#125119]
10075
10076[#125119]: https://github.com/rust-lang/rust/issues/125119
10077
10078------------------------
10079"##,
10080        default_severity: Severity::Allow,
10081        warn_since: None,
10082        deny_since: None,
10083    },
10084    Lint {
10085        label: "gpu_intrinsics",
10086        description: r##"# `gpu_intrinsics`
10087
10088
10089
10090This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
10091
10092------------------------
10093"##,
10094        default_severity: Severity::Allow,
10095        warn_since: None,
10096        deny_since: None,
10097    },
10098    Lint {
10099        label: "gpu_launch_sized_workgroup_mem",
10100        description: r##"# `gpu_launch_sized_workgroup_mem`
10101
10102
10103
10104The tracking issue for this feature is: [#135513]
10105
10106[#135513]: https://github.com/rust-lang/rust/issues/135513
10107
10108------------------------
10109"##,
10110        default_severity: Severity::Allow,
10111        warn_since: None,
10112        deny_since: None,
10113    },
10114    Lint {
10115        label: "gpu_offload",
10116        description: r##"# `gpu_offload`
10117
10118
10119
10120The tracking issue for this feature is: [#131513]
10121
10122[#131513]: https://github.com/rust-lang/rust/issues/131513
10123
10124------------------------
10125"##,
10126        default_severity: Severity::Allow,
10127        warn_since: None,
10128        deny_since: None,
10129    },
10130    Lint {
10131        label: "guard_patterns",
10132        description: r##"# `guard_patterns`
10133
10134Allows using guards in patterns.
10135
10136The tracking issue for this feature is: [#129967]
10137
10138[#129967]: https://github.com/rust-lang/rust/issues/129967
10139
10140------------------------
10141"##,
10142        default_severity: Severity::Allow,
10143        warn_since: None,
10144        deny_since: None,
10145    },
10146    Lint {
10147        label: "half_open_range_patterns_in_slices",
10148        description: r##"# `half_open_range_patterns_in_slices`
10149
10150The tracking issue for this feature is: [#67264]
10151It is a future part of the `exclusive_range_pattern` feature,
10152tracked at [#37854].
10153
10154[#67264]: https://github.com/rust-lang/rust/issues/67264
10155[#37854]: https://github.com/rust-lang/rust/issues/37854
10156-----
10157
10158This feature allow using top-level half-open range patterns in slices.
10159
10160```rust
10161#![feature(half_open_range_patterns_in_slices)]
10162
10163fn main() {
10164    let xs = [13, 1, 5, 2, 3, 1, 21, 8];
10165    let [a @ 3.., b @ ..3, c @ 4..6, ..] = xs else { return; };
10166}
10167```
10168
10169Note that this feature is not required if the patterns are wrapped between parenthesis.
10170
10171```rust
10172fn main() {
10173    let xs = [13, 1];
10174    let [(a @ 3..), c] = xs else { return; };
10175}
10176```
10177"##,
10178        default_severity: Severity::Allow,
10179        warn_since: None,
10180        deny_since: None,
10181    },
10182    Lint {
10183        label: "hash_map_internals",
10184        description: r##"# `hash_map_internals`
10185
10186
10187
10188This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
10189
10190------------------------
10191"##,
10192        default_severity: Severity::Allow,
10193        warn_since: None,
10194        deny_since: None,
10195    },
10196    Lint {
10197        label: "hash_map_macro",
10198        description: r##"# `hash_map_macro`
10199
10200
10201
10202The tracking issue for this feature is: [#144032]
10203
10204[#144032]: https://github.com/rust-lang/rust/issues/144032
10205
10206------------------------
10207"##,
10208        default_severity: Severity::Allow,
10209        warn_since: None,
10210        deny_since: None,
10211    },
10212    Lint {
10213        label: "hash_set_entry",
10214        description: r##"# `hash_set_entry`
10215
10216
10217
10218The tracking issue for this feature is: [#60896]
10219
10220[#60896]: https://github.com/rust-lang/rust/issues/60896
10221
10222------------------------
10223"##,
10224        default_severity: Severity::Allow,
10225        warn_since: None,
10226        deny_since: None,
10227    },
10228    Lint {
10229        label: "hasher_prefixfree_extras",
10230        description: r##"# `hasher_prefixfree_extras`
10231
10232
10233
10234The tracking issue for this feature is: [#96762]
10235
10236[#96762]: https://github.com/rust-lang/rust/issues/96762
10237
10238------------------------
10239"##,
10240        default_severity: Severity::Allow,
10241        warn_since: None,
10242        deny_since: None,
10243    },
10244    Lint {
10245        label: "hashmap_internals",
10246        description: r##"# `hashmap_internals`
10247
10248
10249
10250This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
10251
10252------------------------
10253"##,
10254        default_severity: Severity::Allow,
10255        warn_since: None,
10256        deny_since: None,
10257    },
10258    Lint {
10259        label: "hexagon_target_feature",
10260        description: r##"# `hexagon_target_feature`
10261
10262Target features on hexagon.
10263
10264The tracking issue for this feature is: [#150250]
10265
10266[#150250]: https://github.com/rust-lang/rust/issues/150250
10267
10268------------------------
10269"##,
10270        default_severity: Severity::Allow,
10271        warn_since: None,
10272        deny_since: None,
10273    },
10274    Lint {
10275        label: "hint_must_use",
10276        description: r##"# `hint_must_use`
10277
10278
10279
10280The tracking issue for this feature is: [#94745]
10281
10282[#94745]: https://github.com/rust-lang/rust/issues/94745
10283
10284------------------------
10285"##,
10286        default_severity: Severity::Allow,
10287        warn_since: None,
10288        deny_since: None,
10289    },
10290    Lint {
10291        label: "hint_prefetch",
10292        description: r##"# `hint_prefetch`
10293
10294
10295
10296The tracking issue for this feature is: [#146941]
10297
10298[#146941]: https://github.com/rust-lang/rust/issues/146941
10299
10300------------------------
10301"##,
10302        default_severity: Severity::Allow,
10303        warn_since: None,
10304        deny_since: None,
10305    },
10306    Lint {
10307        label: "impl_restriction",
10308        description: r##"# `impl_restriction`
10309
10310Allows `impl(crate) trait Foo` restrictions.
10311
10312The tracking issue for this feature is: [#105077]
10313
10314[#105077]: https://github.com/rust-lang/rust/issues/105077
10315
10316------------------------
10317"##,
10318        default_severity: Severity::Allow,
10319        warn_since: None,
10320        deny_since: None,
10321    },
10322    Lint {
10323        label: "impl_trait_in_assoc_type",
10324        description: r##"# `impl_trait_in_assoc_type`
10325
10326Allows `impl Trait` to be used inside associated types (RFC 2515).
10327
10328The tracking issue for this feature is: [#63063]
10329
10330[#63063]: https://github.com/rust-lang/rust/issues/63063
10331
10332------------------------
10333"##,
10334        default_severity: Severity::Allow,
10335        warn_since: None,
10336        deny_since: None,
10337    },
10338    Lint {
10339        label: "impl_trait_in_bindings",
10340        description: r##"# `impl_trait_in_bindings`
10341
10342Allows `impl Trait` in bindings (`let`).
10343
10344The tracking issue for this feature is: [#63065]
10345
10346[#63065]: https://github.com/rust-lang/rust/issues/63065
10347
10348------------------------
10349"##,
10350        default_severity: Severity::Allow,
10351        warn_since: None,
10352        deny_since: None,
10353    },
10354    Lint {
10355        label: "impl_trait_in_fn_trait_return",
10356        description: r##"# `impl_trait_in_fn_trait_return`
10357
10358Allows `impl Trait` as output type in `Fn` traits in return position of functions.
10359
10360The tracking issue for this feature is: [#99697]
10361
10362[#99697]: https://github.com/rust-lang/rust/issues/99697
10363
10364------------------------
10365"##,
10366        default_severity: Severity::Allow,
10367        warn_since: None,
10368        deny_since: None,
10369    },
10370    Lint {
10371        label: "import_trait_associated_functions",
10372        description: r##"# import_trait_associated_functions
10373
10374The tracking issue for this feature is: [#134691]
10375
10376[#134691]: https://github.com/rust-lang/rust/issues/134691
10377
10378------------------------
10379
10380This feature allows importing associated functions and constants from traits and then using them like regular items.
10381
10382```rust
10383#![feature(import_trait_associated_functions)]
10384
10385use std::ops::Add::add;
10386
10387fn main() {
10388    let numbers = vec![1, 2, 3, 4, 5, 6];
10389    let sum = numbers.into_iter().reduce(add); // instead of `.reduce(Add:add)`
10390
10391    assert_eq!(sum, Some(21));
10392}
10393```
10394"##,
10395        default_severity: Severity::Allow,
10396        warn_since: None,
10397        deny_since: None,
10398    },
10399    Lint {
10400        label: "inherent_associated_types",
10401        description: r##"# `inherent_associated_types`
10402
10403Allows associated types in inherent impls.
10404
10405The tracking issue for this feature is: [#8995]
10406
10407[#8995]: https://github.com/rust-lang/rust/issues/8995
10408
10409------------------------
10410"##,
10411        default_severity: Severity::Allow,
10412        warn_since: None,
10413        deny_since: None,
10414    },
10415    Lint {
10416        label: "inplace_iteration",
10417        description: r##"# `inplace_iteration`
10418
10419
10420
10421This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
10422
10423------------------------
10424"##,
10425        default_severity: Severity::Allow,
10426        warn_since: None,
10427        deny_since: None,
10428    },
10429    Lint {
10430        label: "instrument_fn",
10431        description: r##"# `instrument_fn`
10432
10433Enable #[instrument_fn] on function.
10434
10435The tracking issue for this feature is: [#157081]
10436
10437[#157081]: https://github.com/rust-lang/rust/issues/157081
10438
10439------------------------
10440"##,
10441        default_severity: Severity::Allow,
10442        warn_since: None,
10443        deny_since: None,
10444    },
10445    Lint {
10446        label: "int_from_ascii",
10447        description: r##"# `int_from_ascii`
10448
10449
10450
10451The tracking issue for this feature is: [#134821]
10452
10453[#134821]: https://github.com/rust-lang/rust/issues/134821
10454
10455------------------------
10456"##,
10457        default_severity: Severity::Allow,
10458        warn_since: None,
10459        deny_since: None,
10460    },
10461    Lint {
10462        label: "int_roundings",
10463        description: r##"# `int_roundings`
10464
10465
10466
10467The tracking issue for this feature is: [#88581]
10468
10469[#88581]: https://github.com/rust-lang/rust/issues/88581
10470
10471------------------------
10472"##,
10473        default_severity: Severity::Allow,
10474        warn_since: None,
10475        deny_since: None,
10476    },
10477    Lint {
10478        label: "integer_atomics",
10479        description: r##"# `integer_atomics`
10480
10481
10482
10483The tracking issue for this feature is: [#99069]
10484
10485[#99069]: https://github.com/rust-lang/rust/issues/99069
10486
10487------------------------
10488"##,
10489        default_severity: Severity::Allow,
10490        warn_since: None,
10491        deny_since: None,
10492    },
10493    Lint {
10494        label: "integer_cast_extras",
10495        description: r##"# `integer_cast_extras`
10496
10497
10498
10499The tracking issue for this feature is: [#154650]
10500
10501[#154650]: https://github.com/rust-lang/rust/issues/154650
10502
10503------------------------
10504"##,
10505        default_severity: Severity::Allow,
10506        warn_since: None,
10507        deny_since: None,
10508    },
10509    Lint {
10510        label: "integer_casts",
10511        description: r##"# `integer_casts`
10512
10513
10514
10515The tracking issue for this feature is: [#157388]
10516
10517[#157388]: https://github.com/rust-lang/rust/issues/157388
10518
10519------------------------
10520"##,
10521        default_severity: Severity::Allow,
10522        warn_since: None,
10523        deny_since: None,
10524    },
10525    Lint {
10526        label: "integer_widen_truncate",
10527        description: r##"# `integer_widen_truncate`
10528
10529
10530
10531The tracking issue for this feature is: [#154330]
10532
10533[#154330]: https://github.com/rust-lang/rust/issues/154330
10534
10535------------------------
10536"##,
10537        default_severity: Severity::Allow,
10538        warn_since: None,
10539        deny_since: None,
10540    },
10541    Lint {
10542        label: "internal_output_capture",
10543        description: r##"# `internal_output_capture`
10544
10545This feature is internal to the Rust compiler and is not intended for general use.
10546
10547------------------------
10548"##,
10549        default_severity: Severity::Allow,
10550        warn_since: None,
10551        deny_since: None,
10552    },
10553    Lint {
10554        label: "intra_doc_pointers",
10555        description: r##"# `intra-doc-pointers`
10556
10557The tracking issue for this feature is: [#80896]
10558
10559[#80896]: https://github.com/rust-lang/rust/issues/80896
10560
10561------------------------
10562
10563Rustdoc does not currently allow disambiguating between `*const` and `*mut`, and
10564raw pointers in intra-doc links are unstable until it does.
10565
10566```rust
10567#![feature(intra_doc_pointers)]
10568//! [pointer::add]
10569```
10570"##,
10571        default_severity: Severity::Allow,
10572        warn_since: None,
10573        deny_since: None,
10574    },
10575    Lint {
10576        label: "intrinsics",
10577        description: r##"# `intrinsics`
10578
10579The tracking issue for this feature is: None.
10580
10581Intrinsics are rarely intended to be stable directly, but are usually
10582exported in some sort of stable manner. Prefer using the stable interfaces to
10583the intrinsic directly when you can.
10584
10585------------------------
10586
10587
10588## Intrinsics with fallback logic
10589
10590Many intrinsics can be written in pure rust, albeit inefficiently or without supporting
10591some features that only exist on some backends. Backends can simply not implement those
10592intrinsics without causing any code miscompilations or failures to compile.
10593All intrinsic fallback bodies are automatically made cross-crate inlineable (like `#[inline]`)
10594by the codegen backend, but not the MIR inliner.
10595
10596```rust
10597#![feature(intrinsics)]
10598#![allow(internal_features)]
10599
10600#[rustc_intrinsic]
10601const unsafe fn const_deallocate(_ptr: *mut u8, _size: usize, _align: usize) {}
10602```
10603
10604Since these are just regular functions, it is perfectly ok to create the intrinsic twice:
10605
10606```rust
10607#![feature(intrinsics)]
10608#![allow(internal_features)]
10609
10610#[rustc_intrinsic]
10611const unsafe fn const_deallocate(_ptr: *mut u8, _size: usize, _align: usize) {}
10612
10613mod foo {
10614    #[rustc_intrinsic]
10615    const unsafe fn const_deallocate(_ptr: *mut u8, _size: usize, _align: usize) {
10616        panic!("noisy const dealloc")
10617    }
10618}
10619
10620```
10621
10622The behaviour on backends that override the intrinsic is exactly the same. On other
10623backends, the intrinsic behaviour depends on which implementation is called, just like
10624with any regular function.
10625
10626## Intrinsics lowered to MIR instructions
10627
10628Various intrinsics have native MIR operations that they correspond to. Instead of requiring
10629backends to implement both the intrinsic and the MIR operation, the `lower_intrinsics` pass
10630will convert the calls to the MIR operation. Backends do not need to know about these intrinsics
10631at all. These intrinsics only make sense without a body, and can be declared as a `#[rustc_intrinsic]`.
10632The body is never used as the lowering pass implements support for all backends, so we never have to
10633use the fallback logic.
10634
10635## Intrinsics without fallback logic
10636
10637These must be implemented by all backends.
10638
10639### `#[rustc_intrinsic]` declarations
10640
10641These are written without a body:
10642```rust
10643#![feature(intrinsics)]
10644#![allow(internal_features)]
10645
10646#[rustc_intrinsic]
10647pub fn abort_immediate() -> !;
10648```
10649"##,
10650        default_severity: Severity::Allow,
10651        warn_since: None,
10652        deny_since: None,
10653    },
10654    Lint {
10655        label: "io_const_error",
10656        description: r##"# `io_const_error`
10657
10658
10659
10660The tracking issue for this feature is: [#133448]
10661
10662[#133448]: https://github.com/rust-lang/rust/issues/133448
10663
10664------------------------
10665"##,
10666        default_severity: Severity::Allow,
10667        warn_since: None,
10668        deny_since: None,
10669    },
10670    Lint {
10671        label: "io_const_error_internals",
10672        description: r##"# `io_const_error_internals`
10673
10674
10675
10676This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
10677
10678------------------------
10679"##,
10680        default_severity: Severity::Allow,
10681        warn_since: None,
10682        deny_since: None,
10683    },
10684    Lint {
10685        label: "io_copy_internals",
10686        description: r##"# `io_copy_internals`
10687
10688
10689
10690This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
10691
10692------------------------
10693"##,
10694        default_severity: Severity::Allow,
10695        warn_since: None,
10696        deny_since: None,
10697    },
10698    Lint {
10699        label: "io_error_inprogress",
10700        description: r##"# `io_error_inprogress`
10701
10702
10703
10704The tracking issue for this feature is: [#130840]
10705
10706[#130840]: https://github.com/rust-lang/rust/issues/130840
10707
10708------------------------
10709"##,
10710        default_severity: Severity::Allow,
10711        warn_since: None,
10712        deny_since: None,
10713    },
10714    Lint {
10715        label: "io_error_input_output_error",
10716        description: r##"# `io_error_input_output_error`
10717
10718
10719
10720The tracking issue for this feature is: [#159066]
10721
10722[#159066]: https://github.com/rust-lang/rust/issues/159066
10723
10724------------------------
10725"##,
10726        default_severity: Severity::Allow,
10727        warn_since: None,
10728        deny_since: None,
10729    },
10730    Lint {
10731        label: "io_error_more",
10732        description: r##"# `io_error_more`
10733
10734
10735
10736The tracking issue for this feature is: [#86442]
10737
10738[#86442]: https://github.com/rust-lang/rust/issues/86442
10739
10740------------------------
10741"##,
10742        default_severity: Severity::Allow,
10743        warn_since: None,
10744        deny_since: None,
10745    },
10746    Lint {
10747        label: "io_error_too_many_open_files",
10748        description: r##"# `io_error_too_many_open_files`
10749
10750
10751
10752The tracking issue for this feature is: [#158319]
10753
10754[#158319]: https://github.com/rust-lang/rust/issues/158319
10755
10756------------------------
10757"##,
10758        default_severity: Severity::Allow,
10759        warn_since: None,
10760        deny_since: None,
10761    },
10762    Lint {
10763        label: "io_error_uncategorized",
10764        description: r##"# `io_error_uncategorized`
10765
10766
10767
10768This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
10769
10770------------------------
10771"##,
10772        default_severity: Severity::Allow,
10773        warn_since: None,
10774        deny_since: None,
10775    },
10776    Lint {
10777        label: "io_slice_as_bytes",
10778        description: r##"# `io_slice_as_bytes`
10779
10780
10781
10782The tracking issue for this feature is: [#132818]
10783
10784[#132818]: https://github.com/rust-lang/rust/issues/132818
10785
10786------------------------
10787"##,
10788        default_severity: Severity::Allow,
10789        warn_since: None,
10790        deny_since: None,
10791    },
10792    Lint {
10793        label: "ip",
10794        description: r##"# `ip`
10795
10796
10797
10798The tracking issue for this feature is: [#27709]
10799
10800[#27709]: https://github.com/rust-lang/rust/issues/27709
10801
10802------------------------
10803"##,
10804        default_severity: Severity::Allow,
10805        warn_since: None,
10806        deny_since: None,
10807    },
10808    Lint {
10809        label: "ip_as_octets",
10810        description: r##"# `ip_as_octets`
10811
10812
10813
10814The tracking issue for this feature is: [#137259]
10815
10816[#137259]: https://github.com/rust-lang/rust/issues/137259
10817
10818------------------------
10819"##,
10820        default_severity: Severity::Allow,
10821        warn_since: None,
10822        deny_since: None,
10823    },
10824    Lint {
10825        label: "ip_multicast_reserved",
10826        description: r##"# `ip_multicast_reserved`
10827
10828
10829
10830This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
10831
10832------------------------
10833"##,
10834        default_severity: Severity::Allow,
10835        warn_since: None,
10836        deny_since: None,
10837    },
10838    Lint {
10839        label: "ipv6_hop_limit",
10840        description: r##"# `ipv6_hop_limit`
10841
10842
10843
10844The tracking issue for this feature is: [#139166]
10845
10846[#139166]: https://github.com/rust-lang/rust/issues/139166
10847
10848------------------------
10849"##,
10850        default_severity: Severity::Allow,
10851        warn_since: None,
10852        deny_since: None,
10853    },
10854    Lint {
10855        label: "is_ascii_octdigit",
10856        description: r##"# `is_ascii_octdigit`
10857
10858
10859
10860The tracking issue for this feature is: [#101288]
10861
10862[#101288]: https://github.com/rust-lang/rust/issues/101288
10863
10864------------------------
10865"##,
10866        default_severity: Severity::Allow,
10867        warn_since: None,
10868        deny_since: None,
10869    },
10870    Lint {
10871        label: "iter_advance_by",
10872        description: r##"# `iter_advance_by`
10873
10874
10875
10876The tracking issue for this feature is: [#77404]
10877
10878[#77404]: https://github.com/rust-lang/rust/issues/77404
10879
10880------------------------
10881"##,
10882        default_severity: Severity::Allow,
10883        warn_since: None,
10884        deny_since: None,
10885    },
10886    Lint {
10887        label: "iter_array_chunks",
10888        description: r##"# `iter_array_chunks`
10889
10890
10891
10892The tracking issue for this feature is: [#100450]
10893
10894[#100450]: https://github.com/rust-lang/rust/issues/100450
10895
10896------------------------
10897"##,
10898        default_severity: Severity::Allow,
10899        warn_since: None,
10900        deny_since: None,
10901    },
10902    Lint {
10903        label: "iter_collect_into",
10904        description: r##"# `iter_collect_into`
10905
10906
10907
10908The tracking issue for this feature is: [#94780]
10909
10910[#94780]: https://github.com/rust-lang/rust/issues/94780
10911
10912------------------------
10913"##,
10914        default_severity: Severity::Allow,
10915        warn_since: None,
10916        deny_since: None,
10917    },
10918    Lint {
10919        label: "iter_from_coroutine",
10920        description: r##"# `iter_from_coroutine`
10921
10922
10923
10924The tracking issue for this feature is: [#43122]
10925
10926[#43122]: https://github.com/rust-lang/rust/issues/43122
10927
10928------------------------
10929"##,
10930        default_severity: Severity::Allow,
10931        warn_since: None,
10932        deny_since: None,
10933    },
10934    Lint {
10935        label: "iter_intersperse",
10936        description: r##"# `iter_intersperse`
10937
10938
10939
10940The tracking issue for this feature is: [#79524]
10941
10942[#79524]: https://github.com/rust-lang/rust/issues/79524
10943
10944------------------------
10945"##,
10946        default_severity: Severity::Allow,
10947        warn_since: None,
10948        deny_since: None,
10949    },
10950    Lint {
10951        label: "iter_is_partitioned",
10952        description: r##"# `iter_is_partitioned`
10953
10954
10955
10956The tracking issue for this feature is: [#62544]
10957
10958[#62544]: https://github.com/rust-lang/rust/issues/62544
10959
10960------------------------
10961"##,
10962        default_severity: Severity::Allow,
10963        warn_since: None,
10964        deny_since: None,
10965    },
10966    Lint {
10967        label: "iter_macro",
10968        description: r##"# `iter_macro`
10969
10970
10971
10972The tracking issue for this feature is: [#142269]
10973
10974[#142269]: https://github.com/rust-lang/rust/issues/142269
10975
10976------------------------
10977"##,
10978        default_severity: Severity::Allow,
10979        warn_since: None,
10980        deny_since: None,
10981    },
10982    Lint {
10983        label: "iter_map_windows",
10984        description: r##"# `iter_map_windows`
10985
10986
10987
10988The tracking issue for this feature is: [#87155]
10989
10990[#87155]: https://github.com/rust-lang/rust/issues/87155
10991
10992------------------------
10993"##,
10994        default_severity: Severity::Allow,
10995        warn_since: None,
10996        deny_since: None,
10997    },
10998    Lint {
10999        label: "iter_next_chunk",
11000        description: r##"# `iter_next_chunk`
11001
11002
11003
11004The tracking issue for this feature is: [#98326]
11005
11006[#98326]: https://github.com/rust-lang/rust/issues/98326
11007
11008------------------------
11009"##,
11010        default_severity: Severity::Allow,
11011        warn_since: None,
11012        deny_since: None,
11013    },
11014    Lint {
11015        label: "iter_order_by",
11016        description: r##"# `iter_order_by`
11017
11018
11019
11020The tracking issue for this feature is: [#64295]
11021
11022[#64295]: https://github.com/rust-lang/rust/issues/64295
11023
11024------------------------
11025"##,
11026        default_severity: Severity::Allow,
11027        warn_since: None,
11028        deny_since: None,
11029    },
11030    Lint {
11031        label: "iter_partition_in_place",
11032        description: r##"# `iter_partition_in_place`
11033
11034
11035
11036The tracking issue for this feature is: [#62543]
11037
11038[#62543]: https://github.com/rust-lang/rust/issues/62543
11039
11040------------------------
11041"##,
11042        default_severity: Severity::Allow,
11043        warn_since: None,
11044        deny_since: None,
11045    },
11046    Lint {
11047        label: "iterator_try_collect",
11048        description: r##"# `iterator_try_collect`
11049
11050
11051
11052The tracking issue for this feature is: [#94047]
11053
11054[#94047]: https://github.com/rust-lang/rust/issues/94047
11055
11056------------------------
11057"##,
11058        default_severity: Severity::Allow,
11059        warn_since: None,
11060        deny_since: None,
11061    },
11062    Lint {
11063        label: "iterator_try_reduce",
11064        description: r##"# `iterator_try_reduce`
11065
11066
11067
11068The tracking issue for this feature is: [#87053]
11069
11070[#87053]: https://github.com/rust-lang/rust/issues/87053
11071
11072------------------------
11073"##,
11074        default_severity: Severity::Allow,
11075        warn_since: None,
11076        deny_since: None,
11077    },
11078    Lint {
11079        label: "junction_point",
11080        description: r##"# `junction_point`
11081
11082
11083
11084The tracking issue for this feature is: [#121709]
11085
11086[#121709]: https://github.com/rust-lang/rust/issues/121709
11087
11088------------------------
11089"##,
11090        default_severity: Severity::Allow,
11091        warn_since: None,
11092        deny_since: None,
11093    },
11094    Lint {
11095        label: "lahfsahf_target_feature",
11096        description: r##"# `lahfsahf_target_feature`
11097
11098lahfsahf target feature on x86.
11099
11100The tracking issue for this feature is: [#150251]
11101
11102[#150251]: https://github.com/rust-lang/rust/issues/150251
11103
11104------------------------
11105"##,
11106        default_severity: Severity::Allow,
11107        warn_since: None,
11108        deny_since: None,
11109    },
11110    Lint {
11111        label: "lang_items",
11112        description: r##"# `lang_items`
11113
11114The tracking issue for this feature is: None.
11115
11116------------------------
11117
11118The `rustc` compiler has certain pluggable operations, that is,
11119functionality that isn't hard-coded into the language, but is
11120implemented in libraries, with a special marker to tell the compiler
11121it exists. The marker is the attribute `#[lang = "..."]` and there are
11122various different values of `...`, i.e. various different 'lang
11123items'. Most of them can only be defined once.
11124
11125Lang items are loaded lazily by the compiler; e.g. if one never uses `Box`
11126then there is no need to define a function for `exchange_malloc`.
11127`rustc` will emit an error when an item is needed but not found in the current
11128crate or any that it depends on.
11129
11130Some features provided by lang items:
11131
11132- overloadable operators via traits: the traits corresponding to the
11133  `==`, `<`, dereferencing (`*`) and `+` (etc.) operators are all
11134  marked with lang items; those specific four are `eq`, `partial_ord`,
11135  `deref`/`deref_mut`, and `add` respectively.
11136- panicking: the `panic` and `panic_impl` lang items, among others.
11137- stack unwinding: the lang item `eh_personality` is a function used by the
11138  failure mechanisms of the compiler. This is often mapped to GCC's personality
11139  function (see the [`std` implementation][personality] for more information),
11140  but programs which don't trigger a panic can be assured that this function is
11141  never called.
11142- the traits in `core::marker` used to indicate types of
11143  various kinds; e.g. lang items `sized`, `sync` and `copy`.
11144- memory allocation, see below.
11145
11146Most lang items are defined by `core`, but if you're trying to build
11147an executable without the `std` crate, you might run into the need
11148for lang item definitions.
11149
11150[personality]: https://github.com/rust-lang/rust/blob/HEAD/library/std/src/sys/personality/gcc.rs
11151
11152## Example: Implementing a `Box`
11153
11154`Box` pointers require two lang items: one for the type itself and one for
11155allocation. A freestanding program that uses the `Box` sugar for dynamic
11156allocations via `malloc` and `free`:
11157
11158```rust,ignore (libc-is-finicky)
11159#![feature(lang_items, core_intrinsics, rustc_private, panic_unwind, rustc_attrs)]
11160#![allow(internal_features)]
11161#![no_std]
11162#![no_main]
11163
11164extern crate libc;
11165extern crate unwind;
11166
11167use core::ffi::{c_int, c_void};
11168use core::intrinsics;
11169use core::panic::PanicInfo;
11170use core::ptr::NonNull;
11171
11172pub struct Global; // the global allocator
11173struct Unique<T>(NonNull<T>);
11174
11175#[lang = "owned_box"]
11176pub struct Box<T, A = Global>(Unique<T>, A);
11177
11178impl<T> Box<T> {
11179    pub fn new(x: T) -> Self {
11180        #[rustc_box]
11181        Box::new(x)
11182    }
11183}
11184
11185impl<T, A> Drop for Box<T, A> {
11186    fn drop(&mut self) {
11187        unsafe {
11188            libc::free(self.0.0.as_ptr() as *mut c_void);
11189        }
11190    }
11191}
11192
11193#[lang = "exchange_malloc"]
11194unsafe fn allocate(size: usize, _align: usize) -> *mut u8 {
11195    let p = libc::malloc(size) as *mut u8;
11196
11197    // Check if `malloc` failed:
11198    if p.is_null() {
11199        intrinsics::abort_immediate();
11200    }
11201
11202    p
11203}
11204
11205#[no_mangle]
11206extern "C" fn main(_argc: c_int, _argv: *const *const u8) -> c_int {
11207    let _x = Box::new(1);
11208
11209    0
11210}
11211
11212#[lang = "eh_personality"]
11213fn rust_eh_personality() {}
11214
11215#[panic_handler]
11216fn panic_handler(_info: &PanicInfo) -> ! { intrinsics::abort_immediate() }
11217```
11218
11219Note the use of `abort`: the `exchange_malloc` lang item is assumed to
11220return a valid pointer, and so needs to do the check internally.
11221
11222## List of all language items
11223
11224An up-to-date list of all language items can be found [here] in the compiler code.
11225
11226[here]: https://github.com/rust-lang/rust/blob/ac62df9b49f9b9036af2a4957db70bf3850785e1/compiler/rustc_attr_ir/src/lang_items.rs#L158
11227"##,
11228        default_severity: Severity::Allow,
11229        warn_since: None,
11230        deny_since: None,
11231    },
11232    Lint {
11233        label: "large_assignments",
11234        description: r##"# `large_assignments`
11235
11236Allows setting the threshold for the `large_assignments` lint.
11237
11238The tracking issue for this feature is: [#83518]
11239
11240[#83518]: https://github.com/rust-lang/rust/issues/83518
11241
11242------------------------
11243"##,
11244        default_severity: Severity::Allow,
11245        warn_since: None,
11246        deny_since: None,
11247    },
11248    Lint {
11249        label: "lazy_cell_into_inner",
11250        description: r##"# `lazy_cell_into_inner`
11251
11252
11253
11254The tracking issue for this feature is: [#125623]
11255
11256[#125623]: https://github.com/rust-lang/rust/issues/125623
11257
11258------------------------
11259"##,
11260        default_severity: Severity::Allow,
11261        warn_since: None,
11262        deny_since: None,
11263    },
11264    Lint {
11265        label: "legacy_receiver_trait",
11266        description: r##"# `legacy_receiver_trait`
11267
11268
11269
11270This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
11271
11272------------------------
11273"##,
11274        default_severity: Severity::Allow,
11275        warn_since: None,
11276        deny_since: None,
11277    },
11278    Lint {
11279        label: "liballoc_internals",
11280        description: r##"# `liballoc_internals`
11281
11282
11283
11284This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
11285
11286------------------------
11287"##,
11288        default_severity: Severity::Allow,
11289        warn_since: None,
11290        deny_since: None,
11291    },
11292    Lint {
11293        label: "libstd_sys_internals",
11294        description: r##"# `libstd_sys_internals`
11295
11296This feature is internal to the Rust compiler and is not intended for general use.
11297
11298------------------------
11299"##,
11300        default_severity: Severity::Allow,
11301        warn_since: None,
11302        deny_since: None,
11303    },
11304    Lint {
11305        label: "likely_unlikely",
11306        description: r##"# `likely_unlikely`
11307
11308
11309
11310The tracking issue for this feature is: [#151619]
11311
11312[#151619]: https://github.com/rust-lang/rust/issues/151619
11313
11314------------------------
11315"##,
11316        default_severity: Severity::Allow,
11317        warn_since: None,
11318        deny_since: None,
11319    },
11320    Lint {
11321        label: "link_arg_attribute",
11322        description: r##"# `link_arg_attribute`
11323
11324The tracking issue for this feature is: [#99427]
11325
11326------
11327
11328The `link_arg_attribute` feature allows passing arguments into the linker
11329from inside of the source code. Order is preserved for link attributes as
11330they were defined on a single extern block:
11331
11332```rust,no_run
11333#![feature(link_arg_attribute)]
11334
11335#[link(kind = "link-arg", name = "--start-group")]
11336#[link(kind = "static", name = "c")]
11337#[link(kind = "static", name = "gcc")]
11338#[link(kind = "link-arg", name = "--end-group")]
11339extern "C" {}
11340```
11341
11342[#99427]: https://github.com/rust-lang/rust/issues/99427
11343"##,
11344        default_severity: Severity::Allow,
11345        warn_since: None,
11346        deny_since: None,
11347    },
11348    Lint {
11349        label: "link_cfg",
11350        description: r##"# `link_cfg`
11351
11352This feature is internal to the Rust compiler and is not intended for general use.
11353
11354------------------------
11355"##,
11356        default_severity: Severity::Allow,
11357        warn_since: None,
11358        deny_since: None,
11359    },
11360    Lint {
11361        label: "link_enzyme_intrinsics",
11362        description: r##"# `link_enzyme_intrinsics`
11363
11364Allows using `#[link_name="__enzyme_*"]`.
11365
11366This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
11367
11368------------------------
11369"##,
11370        default_severity: Severity::Allow,
11371        warn_since: None,
11372        deny_since: None,
11373    },
11374    Lint {
11375        label: "link_llvm_intrinsics",
11376        description: r##"# `link_llvm_intrinsics`
11377
11378Allows using `#[link_name="llvm.*"]`.
11379
11380The tracking issue for this feature is: [#29602]
11381
11382[#29602]: https://github.com/rust-lang/rust/issues/29602
11383
11384------------------------
11385"##,
11386        default_severity: Severity::Allow,
11387        warn_since: None,
11388        deny_since: None,
11389    },
11390    Lint {
11391        label: "linkage",
11392        description: r##"# `linkage`
11393
11394Allows using the `#[linkage = ".."]` attribute.
11395
11396The tracking issue for this feature is: [#29603]
11397
11398[#29603]: https://github.com/rust-lang/rust/issues/29603
11399
11400------------------------
11401"##,
11402        default_severity: Severity::Allow,
11403        warn_since: None,
11404        deny_since: None,
11405    },
11406    Lint {
11407        label: "linked_list_cursors",
11408        description: r##"# `linked_list_cursors`
11409
11410
11411
11412The tracking issue for this feature is: [#58533]
11413
11414[#58533]: https://github.com/rust-lang/rust/issues/58533
11415
11416------------------------
11417"##,
11418        default_severity: Severity::Allow,
11419        warn_since: None,
11420        deny_since: None,
11421    },
11422    Lint {
11423        label: "linked_list_remove",
11424        description: r##"# `linked_list_remove`
11425
11426
11427
11428The tracking issue for this feature is: [#69210]
11429
11430[#69210]: https://github.com/rust-lang/rust/issues/69210
11431
11432------------------------
11433"##,
11434        default_severity: Severity::Allow,
11435        warn_since: None,
11436        deny_since: None,
11437    },
11438    Lint {
11439        label: "linked_list_retain",
11440        description: r##"# `linked_list_retain`
11441
11442
11443
11444The tracking issue for this feature is: [#114135]
11445
11446[#114135]: https://github.com/rust-lang/rust/issues/114135
11447
11448------------------------
11449"##,
11450        default_severity: Severity::Allow,
11451        warn_since: None,
11452        deny_since: None,
11453    },
11454    Lint {
11455        label: "linux_pidfd",
11456        description: r##"# `linux_pidfd`
11457
11458
11459
11460The tracking issue for this feature is: [#82971]
11461
11462[#82971]: https://github.com/rust-lang/rust/issues/82971
11463
11464------------------------
11465"##,
11466        default_severity: Severity::Allow,
11467        warn_since: None,
11468        deny_since: None,
11469    },
11470    Lint {
11471        label: "local_waker",
11472        description: r##"# `local_waker`
11473
11474
11475
11476The tracking issue for this feature is: [#118959]
11477
11478[#118959]: https://github.com/rust-lang/rust/issues/118959
11479
11480------------------------
11481"##,
11482        default_severity: Severity::Allow,
11483        warn_since: None,
11484        deny_since: None,
11485    },
11486    Lint {
11487        label: "lock_value_accessors",
11488        description: r##"# `lock_value_accessors`
11489
11490
11491
11492The tracking issue for this feature is: [#133407]
11493
11494[#133407]: https://github.com/rust-lang/rust/issues/133407
11495
11496------------------------
11497"##,
11498        default_severity: Severity::Allow,
11499        warn_since: None,
11500        deny_since: None,
11501    },
11502    Lint {
11503        label: "log_syntax",
11504        description: r##"# `log_syntax`
11505
11506
11507
11508The tracking issue for this feature is: [#29598]
11509
11510[#29598]: https://github.com/rust-lang/rust/issues/29598
11511
11512------------------------
11513"##,
11514        default_severity: Severity::Allow,
11515        warn_since: None,
11516        deny_since: None,
11517    },
11518    Lint {
11519        label: "loongarch_target_feature",
11520        description: r##"# `loongarch_target_feature`
11521
11522Target features on loongarch.
11523
11524The tracking issue for this feature is: [#150252]
11525
11526[#150252]: https://github.com/rust-lang/rust/issues/150252
11527
11528------------------------
11529"##,
11530        default_severity: Severity::Allow,
11531        warn_since: None,
11532        deny_since: None,
11533    },
11534    Lint {
11535        label: "loop_hints",
11536        description: r##"# `loop_hints`
11537
11538The tracking issue for this feature is: [#156874]
11539
11540[#156874]: https://github.com/rust-lang/rust/issues/156874
11541
11542------
11543
11544<!--
11545FIXME(#159429): temporarily renamed `#[unroll]` to mitigate a nameres ambiguity
11546-->
11547
11548Loop unrolling can be a powerful optimization but like inlining, it is sometimes useful to
11549manually provide hints to optimizations.
11550
11551`#[rustc_unroll]` will encourage unrolling of a loop.
11552
11553`#[rustc_unroll(full)]` is a stronger hint and can cause optimizations to completely ignore the code
11554side growth from repeating a loop body.
11555
11556`#[rustc_unroll(never)]` is a strong hint to not unroll the loop at all. Note that other loop
11557optimizations may still be applied.
11558
11559`#[rustc_unroll(N)]` is a hint to unroll `N` iterations of the loop.
11560
11561In all cases these are just hints and may be ignored. But unlike function inlining hints,
11562loops tend to be heavily modified during compilation, which can make obeying hints challenging.
11563If the attribute doesn't do what you want, please file an issue.
11564"##,
11565        default_severity: Severity::Allow,
11566        warn_since: None,
11567        deny_since: None,
11568    },
11569    Lint {
11570        label: "loop_match",
11571        description: r##"# `loop_match`
11572
11573The tracking issue for this feature is: [#132306]
11574
11575[#132306]: https://github.com/rust-lang/rust/issues/132306
11576
11577------
11578
11579The `#[loop_match]` and `#[const_continue]` attributes can be used to improve the code
11580generation of logic that fits this shape:
11581
11582```ignore (pseudo-rust)
11583loop {
11584    state = 'blk: {
11585        match state {
11586            State::A => {
11587                break 'blk State::B
11588            }
11589            State::B => { /* ... */ }
11590            /* ... */
11591        }
11592    }
11593}
11594```
11595
11596Here the loop itself can be annotated with `#[loop_match]`, and any `break 'blk` with
11597`#[const_continue]` if the value is know at compile time:
11598
11599```ignore (pseudo-rust)
11600#[loop_match]
11601loop {
11602    state = 'blk: {
11603        match state {
11604            State::A => {
11605                #[const_continue]
11606                break 'blk State::B
11607            }
11608            State::B => { /* ... */ }
11609            /* ... */
11610        }
11611    }
11612}
11613```
11614
11615The observable behavior of this loop is exactly the same as without the extra attributes.
11616The difference is in the generated output: normally, when the state is `A`, control flow
11617moves from the `A` branch, back to the top of the loop, then to the `B` branch. With the
11618attributes, The `A` branch will immediately jump to the `B` branch.
11619
11620Removing the indirection can be beneficial for stack usage and branch prediction, and
11621enables other optimizations by clearly splitting out the control flow paths that your
11622program will actually use.
11623"##,
11624        default_severity: Severity::Allow,
11625        warn_since: None,
11626        deny_since: None,
11627    },
11628    Lint {
11629        label: "m68k_target_feature",
11630        description: r##"# `m68k_target_feature`
11631
11632Target features on m68k.
11633
11634The tracking issue for this feature is: [#134328]
11635
11636[#134328]: https://github.com/rust-lang/rust/issues/134328
11637
11638------------------------
11639"##,
11640        default_severity: Severity::Allow,
11641        warn_since: None,
11642        deny_since: None,
11643    },
11644    Lint {
11645        label: "macro_attr",
11646        description: r##"# `macro_attr`
11647
11648Allow `macro_rules!` attribute rules
11649
11650The tracking issue for this feature is: [#143547]
11651
11652[#143547]: https://github.com/rust-lang/rust/issues/143547
11653
11654------------------------
11655"##,
11656        default_severity: Severity::Allow,
11657        warn_since: None,
11658        deny_since: None,
11659    },
11660    Lint {
11661        label: "macro_derive",
11662        description: r##"# `macro_derive`
11663
11664Allow `macro_rules!` derive rules
11665
11666The tracking issue for this feature is: [#143549]
11667
11668[#143549]: https://github.com/rust-lang/rust/issues/143549
11669
11670------------------------
11671"##,
11672        default_severity: Severity::Allow,
11673        warn_since: None,
11674        deny_since: None,
11675    },
11676    Lint {
11677        label: "macro_guard_matcher",
11678        description: r##"# `macro_guard_matcher`
11679
11680Allow `$x:guard` matcher in macros
11681
11682The tracking issue for this feature is: [#153104]
11683
11684[#153104]: https://github.com/rust-lang/rust/issues/153104
11685
11686------------------------
11687"##,
11688        default_severity: Severity::Allow,
11689        warn_since: None,
11690        deny_since: None,
11691    },
11692    Lint {
11693        label: "macro_metavar_expr",
11694        description: r##"# `macro_metavar_expr`
11695
11696The tracking issue for this feature is: [#83527]
11697
11698------------------------
11699
11700> This feature is not to be confused with [`macro_metavar_expr_concat`].
11701
11702[`macro_metavar_expr_concat`]: ./macro-metavar-expr-concat.md
11703[#83527]: https://github.com/rust-lang/rust/issues/83527
11704"##,
11705        default_severity: Severity::Allow,
11706        warn_since: None,
11707        deny_since: None,
11708    },
11709    Lint {
11710        label: "macro_metavar_expr_concat",
11711        description: r##"# `macro_metavar_expr_concat`
11712
11713The tracking issue for this feature is: [#124225]
11714
11715------------------------
11716
11717In stable Rust, there is no way to create new identifiers by joining identifiers to literals or other identifiers without using procedural macros such as [`paste`].
11718 `#![feature(macro_metavar_expr_concat)]` introduces a way to do this, using the concat metavariable expression.
11719
11720> This feature uses the syntax from [`macro_metavar_expr`] but is otherwise
11721> independent. It replaces the since-removed unstable feature
11722> [`concat_idents`].
11723
11724> This is an experimental feature; it and its syntax will require a RFC before stabilization.
11725
11726
11727### Overview
11728
11729`#![feature(macro_metavar_expr_concat)]` provides the `concat` metavariable expression for creating new identifiers:
11730
11731```rust
11732#![feature(macro_metavar_expr_concat)]
11733
11734macro_rules! create_some_structs {
11735    ($name:ident) => {
11736        pub struct ${ concat(First, $name) };
11737        pub struct ${ concat(Second, $name) };
11738        pub struct ${ concat(Third, $name) };
11739    }
11740}
11741
11742create_some_structs!(Thing);
11743```
11744
11745This macro invocation expands to:
11746
11747```rust
11748pub struct FirstThing;
11749pub struct SecondThing;
11750pub struct ThirdThing;
11751```
11752
11753### Syntax
11754
11755This feature builds upon the metavariable expression syntax `${ .. }` as specified in [RFC 3086] ([`macro_metavar_expr`]).
11756 `concat` is available like `${ concat(items) }`, where `items` is a comma separated sequence of idents and/or literals.
11757
11758### Examples
11759
11760#### Create a function or method with a concatenated name
11761
11762```rust
11763#![feature(macro_metavar_expr_concat)]
11764
11765macro_rules! make_getter {
11766    ($name:ident, $field: ident, $ret:ty) => {
11767        impl $name {
11768            pub fn ${ concat(get_, $field) }(&self) -> &$ret {
11769                &self.$field
11770            }
11771        }
11772    }
11773}
11774
11775pub struct Thing {
11776    description: String,
11777}
11778
11779make_getter!(Thing, description, String);
11780```
11781
11782This expands to:
11783
11784```rust
11785pub struct Thing {
11786    description: String,
11787}
11788
11789impl Thing {
11790    pub fn get_description(&self) -> &String {
11791        &self.description
11792    }
11793}
11794```
11795
11796#### Create names for macro generated tests
11797
11798```rust
11799#![feature(macro_metavar_expr_concat)]
11800
11801macro_rules! test_math {
11802    ($integer:ident) => {
11803        #[test]
11804        fn ${ concat(test_, $integer, _, addition) } () {
11805            let a: $integer = 73;
11806            let b: $integer = 42;
11807            assert_eq!(a + b, 115)
11808        }
11809
11810        #[test]
11811        fn ${ concat(test_, $integer, _, subtraction) } () {
11812            let a: $integer = 73;
11813            let b: $integer = 42;
11814            assert_eq!(a - b, 31)
11815        }
11816    }
11817}
11818
11819test_math!(i32);
11820test_math!(u64);
11821test_math!(u128);
11822```
11823
11824Running this returns the following output:
11825
11826```text
11827running 6 tests
11828test test_i32_subtraction ... ok
11829test test_i32_addition ... ok
11830test test_u128_addition ... ok
11831test test_u128_subtraction ... ok
11832test test_u64_addition ... ok
11833test test_u64_subtraction ... ok
11834
11835test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
11836```
11837
11838[`paste`]: https://crates.io/crates/paste
11839[RFC 3086]: https://rust-lang.github.io/rfcs/3086-macro-metavar-expr.html
11840[`macro_metavar_expr`]: ../language-features/macro-metavar-expr.md
11841[`concat_idents`]: https://github.com/rust-lang/rust/issues/29599
11842[#124225]: https://github.com/rust-lang/rust/issues/124225
11843[declarative macros]: https://doc.rust-lang.org/stable/reference/macros-by-example.html
11844"##,
11845        default_severity: Severity::Allow,
11846        warn_since: None,
11847        deny_since: None,
11848    },
11849    Lint {
11850        label: "map_try_insert",
11851        description: r##"# `map_try_insert`
11852
11853
11854
11855The tracking issue for this feature is: [#82766]
11856
11857[#82766]: https://github.com/rust-lang/rust/issues/82766
11858
11859------------------------
11860"##,
11861        default_severity: Severity::Allow,
11862        warn_since: None,
11863        deny_since: None,
11864    },
11865    Lint {
11866        label: "mapped_lock_guards",
11867        description: r##"# `mapped_lock_guards`
11868
11869
11870
11871The tracking issue for this feature is: [#117108]
11872
11873[#117108]: https://github.com/rust-lang/rust/issues/117108
11874
11875------------------------
11876"##,
11877        default_severity: Severity::Allow,
11878        warn_since: None,
11879        deny_since: None,
11880    },
11881    Lint {
11882        label: "marker_trait_attr",
11883        description: r##"# `marker_trait_attr`
11884
11885The tracking issue for this feature is: [#29864]
11886
11887[#29864]: https://github.com/rust-lang/rust/issues/29864
11888
11889------------------------
11890
11891Normally, Rust keeps you from adding trait implementations that could
11892overlap with each other, as it would be ambiguous which to use.  This
11893feature, however, carves out an exception to that rule: a trait can
11894opt-in to having overlapping implementations, at the cost that those
11895implementations are not allowed to override anything (and thus the
11896trait itself cannot have any associated items, as they're pointless
11897when they'd need to do the same thing for every type anyway).
11898
11899```rust
11900#![feature(marker_trait_attr)]
11901
11902#[marker] trait CheapToClone: Clone {}
11903
11904impl<T: Copy> CheapToClone for T {}
11905
11906// These could potentially overlap with the blanket implementation above,
11907// so are only allowed because CheapToClone is a marker trait.
11908impl<T: CheapToClone, U: CheapToClone> CheapToClone for (T, U) {}
11909impl<T: CheapToClone> CheapToClone for std::ops::Range<T> {}
11910
11911fn cheap_clone<T: CheapToClone>(t: T) -> T {
11912    t.clone()
11913}
11914```
11915
11916This is expected to replace the unstable `overlapping_marker_traits`
11917feature, which applied to all empty traits (without needing an opt-in).
11918"##,
11919        default_severity: Severity::Allow,
11920        warn_since: None,
11921        deny_since: None,
11922    },
11923    Lint {
11924        label: "maybe_dangling",
11925        description: r##"# `maybe_dangling`
11926
11927
11928
11929The tracking issue for this feature is: [#118166]
11930
11931[#118166]: https://github.com/rust-lang/rust/issues/118166
11932
11933------------------------
11934"##,
11935        default_severity: Severity::Allow,
11936        warn_since: None,
11937        deny_since: None,
11938    },
11939    Lint {
11940        label: "maybe_uninit_array_assume_init",
11941        description: r##"# `maybe_uninit_array_assume_init`
11942
11943
11944
11945The tracking issue for this feature is: [#96097]
11946
11947[#96097]: https://github.com/rust-lang/rust/issues/96097
11948
11949------------------------
11950"##,
11951        default_severity: Severity::Allow,
11952        warn_since: None,
11953        deny_since: None,
11954    },
11955    Lint {
11956        label: "maybe_uninit_as_bytes",
11957        description: r##"# `maybe_uninit_as_bytes`
11958
11959
11960
11961The tracking issue for this feature is: [#93092]
11962
11963[#93092]: https://github.com/rust-lang/rust/issues/93092
11964
11965------------------------
11966"##,
11967        default_severity: Severity::Allow,
11968        warn_since: None,
11969        deny_since: None,
11970    },
11971    Lint {
11972        label: "maybe_uninit_fill",
11973        description: r##"# `maybe_uninit_fill`
11974
11975
11976
11977The tracking issue for this feature is: [#117428]
11978
11979[#117428]: https://github.com/rust-lang/rust/issues/117428
11980
11981------------------------
11982"##,
11983        default_severity: Severity::Allow,
11984        warn_since: None,
11985        deny_since: None,
11986    },
11987    Lint {
11988        label: "maybe_uninit_uninit_array_transpose",
11989        description: r##"# `maybe_uninit_uninit_array_transpose`
11990
11991
11992
11993The tracking issue for this feature is: [#96097]
11994
11995[#96097]: https://github.com/rust-lang/rust/issues/96097
11996
11997------------------------
11998"##,
11999        default_severity: Severity::Allow,
12000        warn_since: None,
12001        deny_since: None,
12002    },
12003    Lint {
12004        label: "mem_copy_fn",
12005        description: r##"# `mem_copy_fn`
12006
12007
12008
12009The tracking issue for this feature is: [#98262]
12010
12011[#98262]: https://github.com/rust-lang/rust/issues/98262
12012
12013------------------------
12014"##,
12015        default_severity: Severity::Allow,
12016        warn_since: None,
12017        deny_since: None,
12018    },
12019    Lint {
12020        label: "min_adt_const_params",
12021        description: r##"# `min_adt_const_params`
12022
12023Allows additional const parameter types, such as [u8; 10] or user defined types. User defined types must not have fields more private than the type itself.
12024
12025The tracking issue for this feature is: [#154042]
12026
12027[#154042]: https://github.com/rust-lang/rust/issues/154042
12028
12029------------------------
12030"##,
12031        default_severity: Severity::Allow,
12032        warn_since: None,
12033        deny_since: None,
12034    },
12035    Lint {
12036        label: "min_specialization",
12037        description: r##"# `min_specialization`
12038
12039A minimal, sound subset of specialization intended to be used by the standard library until the soundness issues with specialization are fixed.
12040
12041The tracking issue for this feature is: [#31844]
12042
12043[#31844]: https://github.com/rust-lang/rust/issues/31844
12044
12045------------------------
12046"##,
12047        default_severity: Severity::Allow,
12048        warn_since: None,
12049        deny_since: None,
12050    },
12051    Lint {
12052        label: "mips_target_feature",
12053        description: r##"# `mips_target_feature`
12054
12055Target features on mips.
12056
12057The tracking issue for this feature is: [#150253]
12058
12059[#150253]: https://github.com/rust-lang/rust/issues/150253
12060
12061------------------------
12062"##,
12063        default_severity: Severity::Allow,
12064        warn_since: None,
12065        deny_since: None,
12066    },
12067    Lint {
12068        label: "more_float_constants",
12069        description: r##"# `more_float_constants`
12070
12071
12072
12073The tracking issue for this feature is: [#146939]
12074
12075[#146939]: https://github.com/rust-lang/rust/issues/146939
12076
12077------------------------
12078"##,
12079        default_severity: Severity::Allow,
12080        warn_since: None,
12081        deny_since: None,
12082    },
12083    Lint {
12084        label: "more_maybe_bounds",
12085        description: r##"# `more_maybe_bounds`
12086
12087Allows using `?Trait` trait bounds in more contexts.
12088
12089This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
12090
12091------------------------
12092"##,
12093        default_severity: Severity::Allow,
12094        warn_since: None,
12095        deny_since: None,
12096    },
12097    Lint {
12098        label: "more_qualified_paths",
12099        description: r##"# `more_qualified_paths`
12100
12101The `more_qualified_paths` feature can be used in order to enable the
12102use of qualified paths in patterns.
12103
12104The tracking issue for this feature is: [#86935](https://github.com/rust-lang/rust/issues/86935).
12105
12106------------------------
12107
12108## Example
12109
12110```rust
12111#![feature(more_qualified_paths)]
12112
12113fn main() {
12114    // destructure through a qualified path
12115    let <Foo as A>::Assoc { br } = StructStruct { br: 2 };
12116}
12117
12118struct StructStruct {
12119    br: i8,
12120}
12121
12122struct Foo;
12123
12124trait A {
12125    type Assoc;
12126}
12127
12128impl A for Foo {
12129    type Assoc = StructStruct;
12130}
12131```
12132"##,
12133        default_severity: Severity::Allow,
12134        warn_since: None,
12135        deny_since: None,
12136    },
12137    Lint {
12138        label: "motor_ext",
12139        description: r##"# `motor_ext`
12140
12141
12142
12143The tracking issue for this feature is: [#147456]
12144
12145[#147456]: https://github.com/rust-lang/rust/issues/147456
12146
12147------------------------
12148"##,
12149        default_severity: Severity::Allow,
12150        warn_since: None,
12151        deny_since: None,
12152    },
12153    Lint {
12154        label: "movdir64b_target_feature",
12155        description: r##"# `movdir64b_target_feature`
12156
12157The `movdir64b` target feature on x86.
12158
12159The tracking issue for this feature is: [#163741]
12160
12161[#163741]: https://github.com/rust-lang/rust/issues/163741
12162
12163------------------------
12164"##,
12165        default_severity: Severity::Allow,
12166        warn_since: None,
12167        deny_since: None,
12168    },
12169    Lint {
12170        label: "movdiri_target_feature",
12171        description: r##"# `movdiri_target_feature`
12172
12173The `movdiri` target feature on x86.
12174
12175The tracking issue for this feature is: [#163741]
12176
12177[#163741]: https://github.com/rust-lang/rust/issues/163741
12178
12179------------------------
12180"##,
12181        default_severity: Severity::Allow,
12182        warn_since: None,
12183        deny_since: None,
12184    },
12185    Lint {
12186        label: "move_expr",
12187        description: r##"# `move_expr`
12188
12189Allows `move(expr)` in closures.
12190
12191The tracking issue for this feature is: [#155050]
12192
12193[#155050]: https://github.com/rust-lang/rust/issues/155050
12194
12195------------------------
12196"##,
12197        default_severity: Severity::Allow,
12198        warn_since: None,
12199        deny_since: None,
12200    },
12201    Lint {
12202        label: "movrs_target_feature",
12203        description: r##"# `movrs_target_feature`
12204
12205The `movrs` target feature on x86.
12206
12207The tracking issue for this feature is: [#137976]
12208
12209[#137976]: https://github.com/rust-lang/rust/issues/137976
12210
12211------------------------
12212"##,
12213        default_severity: Severity::Allow,
12214        warn_since: None,
12215        deny_since: None,
12216    },
12217    Lint {
12218        label: "mpmc_channel",
12219        description: r##"# `mpmc_channel`
12220
12221
12222
12223The tracking issue for this feature is: [#126840]
12224
12225[#126840]: https://github.com/rust-lang/rust/issues/126840
12226
12227------------------------
12228"##,
12229        default_severity: Severity::Allow,
12230        warn_since: None,
12231        deny_since: None,
12232    },
12233    Lint {
12234        label: "mpsc_is_disconnected",
12235        description: r##"# `mpsc_is_disconnected`
12236
12237
12238
12239The tracking issue for this feature is: [#153668]
12240
12241[#153668]: https://github.com/rust-lang/rust/issues/153668
12242
12243------------------------
12244"##,
12245        default_severity: Severity::Allow,
12246        warn_since: None,
12247        deny_since: None,
12248    },
12249    Lint {
12250        label: "multiple_supertrait_upcastable",
12251        description: r##"# `multiple_supertrait_upcastable`
12252
12253Allows the `multiple_supertrait_upcastable` lint.
12254
12255The tracking issue for this feature is: [#150833]
12256
12257[#150833]: https://github.com/rust-lang/rust/issues/150833
12258
12259------------------------
12260"##,
12261        default_severity: Severity::Allow,
12262        warn_since: None,
12263        deny_since: None,
12264    },
12265    Lint {
12266        label: "must_not_suspend",
12267        description: r##"# `must_not_suspend`
12268
12269Allows the `#[must_not_suspend]` attribute.
12270
12271The tracking issue for this feature is: [#83310]
12272
12273[#83310]: https://github.com/rust-lang/rust/issues/83310
12274
12275------------------------
12276"##,
12277        default_severity: Severity::Allow,
12278        warn_since: None,
12279        deny_since: None,
12280    },
12281    Lint {
12282        label: "mut_ref",
12283        description: r##"# `mut_ref`
12284
12285Allows `mut ref` and `mut ref mut` identifier patterns.
12286
12287The tracking issue for this feature is: [#123076]
12288
12289[#123076]: https://github.com/rust-lang/rust/issues/123076
12290
12291------------------------
12292"##,
12293        default_severity: Severity::Allow,
12294        warn_since: None,
12295        deny_since: None,
12296    },
12297    Lint {
12298        label: "mut_restriction",
12299        description: r##"# `mut_restriction`
12300
12301Allows `mut(crate) field: Type` restrictions.
12302
12303The tracking issue for this feature is: [#105077]
12304
12305[#105077]: https://github.com/rust-lang/rust/issues/105077
12306
12307------------------------
12308"##,
12309        default_severity: Severity::Allow,
12310        warn_since: None,
12311        deny_since: None,
12312    },
12313    Lint {
12314        label: "mutex_data_ptr",
12315        description: r##"# `mutex_data_ptr`
12316
12317
12318
12319The tracking issue for this feature is: [#140368]
12320
12321[#140368]: https://github.com/rust-lang/rust/issues/140368
12322
12323------------------------
12324"##,
12325        default_severity: Severity::Allow,
12326        warn_since: None,
12327        deny_since: None,
12328    },
12329    Lint {
12330        label: "naked_functions_rustic_abi",
12331        description: r##"# `naked_functions_rustic_abi`
12332
12333Allows using `#[naked]` on `extern "Rust"` functions.
12334
12335The tracking issue for this feature is: [#138997]
12336
12337[#138997]: https://github.com/rust-lang/rust/issues/138997
12338
12339------------------------
12340"##,
12341        default_severity: Severity::Allow,
12342        warn_since: None,
12343        deny_since: None,
12344    },
12345    Lint {
12346        label: "naked_functions_target_feature",
12347        description: r##"# `naked_functions_target_feature`
12348
12349Allows using `#[target_feature(enable = "...")]` on `#[naked]` on functions.
12350
12351The tracking issue for this feature is: [#138568]
12352
12353[#138568]: https://github.com/rust-lang/rust/issues/138568
12354
12355------------------------
12356"##,
12357        default_severity: Severity::Allow,
12358        warn_since: None,
12359        deny_since: None,
12360    },
12361    Lint {
12362        label: "named_fn_trait_parameters",
12363        description: r##"# `named_fn_trait_parameters`
12364
12365Allows providing names to parameters of `impl Fn` etc
12366
12367The tracking issue for this feature is: [#158499]
12368
12369[#158499]: https://github.com/rust-lang/rust/issues/158499
12370
12371------------------------
12372"##,
12373        default_severity: Severity::Allow,
12374        warn_since: None,
12375        deny_since: None,
12376    },
12377    Lint {
12378        label: "native_link_modifiers_as_needed",
12379        description: r##"# `native_link_modifiers_as_needed`
12380
12381The tracking issue for this feature is: [#81490]
12382
12383[#81490]: https://github.com/rust-lang/rust/issues/81490
12384
12385------------------------
12386
12387The `native_link_modifiers_as_needed` feature allows you to use the `as-needed` modifier.
12388
12389`as-needed` is only compatible with the `dynamic` and `framework` linking kinds. Using any other kind will result in a compiler error.
12390
12391`+as-needed` means that the library will be actually linked only if it satisfies some undefined symbols at the point at which it is specified on the command line, making it similar to static libraries in this regard.
12392
12393This modifier translates to `--as-needed` for ld-like linkers, and to `-dead_strip_dylibs` / `-needed_library` / `-needed_framework` for ld64.
12394The modifier does nothing for linkers that don't support it (e.g. `link.exe`).
12395
12396The default for this modifier is unclear, some targets currently specify it as `+as-needed`, some do not. We may want to try making `+as-needed` a default for all targets.
12397"##,
12398        default_severity: Severity::Allow,
12399        warn_since: None,
12400        deny_since: None,
12401    },
12402    Lint {
12403        label: "needs_panic_runtime",
12404        description: r##"# `needs_panic_runtime`
12405
12406Allows declaring with `#![needs_panic_runtime]` that a panic runtime is needed.
12407
12408The tracking issue for this feature is: [#32837]
12409
12410[#32837]: https://github.com/rust-lang/rust/issues/32837
12411
12412------------------------
12413"##,
12414        default_severity: Severity::Allow,
12415        warn_since: None,
12416        deny_since: None,
12417    },
12418    Lint {
12419        label: "negative_bounds",
12420        description: r##"# `negative_bounds`
12421
12422Allow negative trait bounds. This is an internal-only feature for testing the trait solver!
12423
12424This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
12425
12426------------------------
12427"##,
12428        default_severity: Severity::Allow,
12429        warn_since: None,
12430        deny_since: None,
12431    },
12432    Lint {
12433        label: "negative_impls",
12434        description: r##"# `negative_impls`
12435
12436The tracking issue for this feature is [#68318].
12437
12438[#68318]: https://github.com/rust-lang/rust/issues/68318
12439
12440----
12441
12442With the feature gate `negative_impls`, you can write negative impls as well as positive ones:
12443
12444```rust
12445#![feature(negative_impls)]
12446trait DerefMut { }
12447impl<T: ?Sized> !DerefMut for &T { }
12448```
12449
12450Negative impls indicate a semver guarantee that the given trait will not be implemented for the given types. Negative impls play an additional purpose for auto traits, described below.
12451
12452Negative impls have the following characteristics:
12453
12454* They do not have any items.
12455* They must obey the orphan rules as if they were a positive impl.
12456* They cannot "overlap" with any positive impls.
12457
12458## Semver interaction
12459
12460It is a breaking change to remove a negative impl. Negative impls are a commitment not to implement the given trait for the named types.
12461
12462## Orphan and overlap rules
12463
12464Negative impls must obey the same orphan rules as a positive impl. This implies you cannot add a negative impl for types defined in upstream crates and so forth.
12465
12466Similarly, negative impls cannot overlap with positive impls, again using the same "overlap" check that we ordinarily use to determine if two impls overlap. (Note that positive impls typically cannot overlap with one another either, except as permitted by specialization.)
12467
12468## Interaction with auto traits
12469
12470Declaring a negative impl `impl !SomeAutoTrait for SomeType` for an
12471auto-trait serves two purposes:
12472
12473* as with any trait, it declares that `SomeType` will never implement `SomeAutoTrait`;
12474* it disables the automatic `SomeType: SomeAutoTrait` impl that would otherwise have been generated.
12475
12476Note that, at present, there is no way to indicate that a given type
12477does not implement an auto trait *but that it may do so in the
12478future*. For ordinary types, this is done by simply not declaring any
12479impl at all, but that is not an option for auto traits. A workaround
12480is that one could embed a marker type as one of the fields, where the
12481marker type is `!AutoTrait`.
12482
12483## Immediate uses
12484
12485Negative impls are used to declare that `&T: !DerefMut`  and `&mut T: !Clone`, as required to fix the soundness of `Pin` described in [#66544](https://github.com/rust-lang/rust/issues/66544).
12486
12487This serves two purposes:
12488
12489* For proving the correctness of unsafe code, we can use that impl as evidence that no `DerefMut` or `Clone` impl exists.
12490* It prevents downstream crates from creating such impls.
12491"##,
12492        default_severity: Severity::Allow,
12493        warn_since: None,
12494        deny_since: None,
12495    },
12496    Lint {
12497        label: "never_patterns",
12498        description: r##"# `never_patterns`
12499
12500Allows the `!` pattern.
12501
12502The tracking issue for this feature is: [#118155]
12503
12504[#118155]: https://github.com/rust-lang/rust/issues/118155
12505
12506------------------------
12507"##,
12508        default_severity: Severity::Allow,
12509        warn_since: None,
12510        deny_since: None,
12511    },
12512    Lint {
12513        label: "new_range",
12514        description: r##"# `new_range`
12515
12516The tracking issue for this feature is: [#123741]
12517
12518[#123741]: https://github.com/rust-lang/rust/issues/123741
12519
12520---
12521
12522Switch the syntaxes `a..`, `a..b`, and `a..=b` to resolve the new range types.
12523"##,
12524        default_severity: Severity::Allow,
12525        warn_since: None,
12526        deny_since: None,
12527    },
12528    Lint {
12529        label: "new_range_remainder",
12530        description: r##"# `new_range_remainder`
12531
12532
12533
12534The tracking issue for this feature is: [#154458]
12535
12536[#154458]: https://github.com/rust-lang/rust/issues/154458
12537
12538------------------------
12539"##,
12540        default_severity: Severity::Allow,
12541        warn_since: None,
12542        deny_since: None,
12543    },
12544    Lint {
12545        label: "next_index",
12546        description: r##"# `next_index`
12547
12548
12549
12550The tracking issue for this feature is: [#130711]
12551
12552[#130711]: https://github.com/rust-lang/rust/issues/130711
12553
12554------------------------
12555"##,
12556        default_severity: Severity::Allow,
12557        warn_since: None,
12558        deny_since: None,
12559    },
12560    Lint {
12561        label: "no_core",
12562        description: r##"# `no_core`
12563
12564Allows `#![no_core]`.
12565
12566The tracking issue for this feature is: [#29639]
12567
12568[#29639]: https://github.com/rust-lang/rust/issues/29639
12569
12570------------------------
12571"##,
12572        default_severity: Severity::Allow,
12573        warn_since: None,
12574        deny_since: None,
12575    },
12576    Lint {
12577        label: "non_exhaustive_omitted_patterns_lint",
12578        description: r##"# `non_exhaustive_omitted_patterns_lint`
12579
12580Allows using the `non_exhaustive_omitted_patterns` lint.
12581
12582The tracking issue for this feature is: [#89554]
12583
12584[#89554]: https://github.com/rust-lang/rust/issues/89554
12585
12586------------------------
12587"##,
12588        default_severity: Severity::Allow,
12589        warn_since: None,
12590        deny_since: None,
12591    },
12592    Lint {
12593        label: "non_lifetime_binders",
12594        description: r##"# `non_lifetime_binders`
12595
12596Allows `for<T>` binders in where-clauses
12597
12598The tracking issue for this feature is: [#108185]
12599
12600[#108185]: https://github.com/rust-lang/rust/issues/108185
12601
12602------------------------
12603"##,
12604        default_severity: Severity::Allow,
12605        warn_since: None,
12606        deny_since: None,
12607    },
12608    Lint {
12609        label: "nonpoison_condvar",
12610        description: r##"# `nonpoison_condvar`
12611
12612
12613
12614The tracking issue for this feature is: [#134645]
12615
12616[#134645]: https://github.com/rust-lang/rust/issues/134645
12617
12618------------------------
12619"##,
12620        default_severity: Severity::Allow,
12621        warn_since: None,
12622        deny_since: None,
12623    },
12624    Lint {
12625        label: "nonpoison_mutex",
12626        description: r##"# `nonpoison_mutex`
12627
12628
12629
12630The tracking issue for this feature is: [#134645]
12631
12632[#134645]: https://github.com/rust-lang/rust/issues/134645
12633
12634------------------------
12635"##,
12636        default_severity: Severity::Allow,
12637        warn_since: None,
12638        deny_since: None,
12639    },
12640    Lint {
12641        label: "nonpoison_rwlock",
12642        description: r##"# `nonpoison_rwlock`
12643
12644
12645
12646The tracking issue for this feature is: [#134645]
12647
12648[#134645]: https://github.com/rust-lang/rust/issues/134645
12649
12650------------------------
12651"##,
12652        default_severity: Severity::Allow,
12653        warn_since: None,
12654        deny_since: None,
12655    },
12656    Lint {
12657        label: "nonzero_bitwise",
12658        description: r##"# `nonzero_bitwise`
12659
12660
12661
12662The tracking issue for this feature is: [#128281]
12663
12664[#128281]: https://github.com/rust-lang/rust/issues/128281
12665
12666------------------------
12667"##,
12668        default_severity: Severity::Allow,
12669        warn_since: None,
12670        deny_since: None,
12671    },
12672    Lint {
12673        label: "nonzero_from_mut",
12674        description: r##"# `nonzero_from_mut`
12675
12676
12677
12678The tracking issue for this feature is: [#106290]
12679
12680[#106290]: https://github.com/rust-lang/rust/issues/106290
12681
12682------------------------
12683"##,
12684        default_severity: Severity::Allow,
12685        warn_since: None,
12686        deny_since: None,
12687    },
12688    Lint {
12689        label: "nonzero_internals",
12690        description: r##"# `nonzero_internals`
12691
12692
12693
12694This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
12695
12696------------------------
12697"##,
12698        default_severity: Severity::Allow,
12699        warn_since: None,
12700        deny_since: None,
12701    },
12702    Lint {
12703        label: "nonzero_ops",
12704        description: r##"# `nonzero_ops`
12705
12706
12707
12708The tracking issue for this feature is: [#84186]
12709
12710[#84186]: https://github.com/rust-lang/rust/issues/84186
12711
12712------------------------
12713"##,
12714        default_severity: Severity::Allow,
12715        warn_since: None,
12716        deny_since: None,
12717    },
12718    Lint {
12719        label: "normalize_lexically",
12720        description: r##"# `normalize_lexically`
12721
12722
12723
12724The tracking issue for this feature is: [#134694]
12725
12726[#134694]: https://github.com/rust-lang/rust/issues/134694
12727
12728------------------------
12729"##,
12730        default_severity: Severity::Allow,
12731        warn_since: None,
12732        deny_since: None,
12733    },
12734    Lint {
12735        label: "num_internals",
12736        description: r##"# `num_internals`
12737
12738
12739
12740This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
12741
12742------------------------
12743"##,
12744        default_severity: Severity::Allow,
12745        warn_since: None,
12746        deny_since: None,
12747    },
12748    Lint {
12749        label: "numfmt",
12750        description: r##"# `numfmt`
12751
12752
12753
12754This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
12755
12756------------------------
12757"##,
12758        default_severity: Severity::Allow,
12759        warn_since: None,
12760        deny_since: None,
12761    },
12762    Lint {
12763        label: "nvptx_target_feature",
12764        description: r##"# `nvptx_target_feature`
12765
12766Target features on nvptx.
12767
12768The tracking issue for this feature is: [#150254]
12769
12770[#150254]: https://github.com/rust-lang/rust/issues/150254
12771
12772------------------------
12773"##,
12774        default_severity: Severity::Allow,
12775        warn_since: None,
12776        deny_since: None,
12777    },
12778    Lint {
12779        label: "objc_class_variant",
12780        description: r##"# `objc_class_variant`
12781
12782
12783
12784This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
12785
12786------------------------
12787"##,
12788        default_severity: Severity::Allow,
12789        warn_since: None,
12790        deny_since: None,
12791    },
12792    Lint {
12793        label: "objc_selector_variant",
12794        description: r##"# `objc_selector_variant`
12795
12796
12797
12798This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
12799
12800------------------------
12801"##,
12802        default_severity: Severity::Allow,
12803        warn_since: None,
12804        deny_since: None,
12805    },
12806    Lint {
12807        label: "offset_of_enum",
12808        description: r##"# `offset_of_enum`
12809
12810The tracking issue for this feature is: [#120141]
12811
12812[#120141]: https://github.com/rust-lang/rust/issues/120141
12813
12814------------------------
12815
12816When the `offset_of_enum` feature is enabled, the [`offset_of!`] macro may be used to obtain the
12817offsets of fields of `enum`s; to express this, `enum` variants may be traversed as if they were
12818fields. Variants themselves do not have an offset, so they cannot appear as the last path component.
12819
12820```rust
12821#![feature(offset_of_enum)]
12822use std::mem;
12823
12824#[repr(u8)]
12825enum Enum {
12826    A(u8, u16),
12827    B { one: u8, two: u16 },
12828}
12829
12830assert_eq!(mem::offset_of!(Enum, A.0), 1);
12831assert_eq!(mem::offset_of!(Enum, B.two), 2);
12832
12833assert_eq!(mem::offset_of!(Option<&u8>, Some.0), 0);
12834```
12835
12836[`offset_of!`]: ../../std/mem/macro.offset_of.html
12837"##,
12838        default_severity: Severity::Allow,
12839        warn_since: None,
12840        deny_since: None,
12841    },
12842    Lint {
12843        label: "offset_of_slice",
12844        description: r##"# `offset_of_slice`
12845
12846The tracking issue for this feature is: [#126151]
12847
12848[#126151]: https://github.com/rust-lang/rust/issues/126151
12849
12850------------------------
12851
12852When the `offset_of_slice` feature is enabled, the [`offset_of!`] macro may be used to determine
12853the offset of fields whose type is `[T]`, that is, a slice of dynamic size.
12854
12855In general, fields whose type is dynamically sized do not have statically known offsets because
12856they do not have statically known alignments. However, `[T]` has the same alignment as `T`, so
12857it specifically may be allowed.
12858
12859```rust
12860#![feature(offset_of_slice)]
12861
12862#[repr(C)]
12863pub struct Struct {
12864    head: u32,
12865    tail: [u8],
12866}
12867
12868fn main() {
12869    assert_eq!(std::mem::offset_of!(Struct, tail), 4);
12870}
12871```
12872
12873[`offset_of!`]: ../../std/mem/macro.offset_of.html
12874"##,
12875        default_severity: Severity::Allow,
12876        warn_since: None,
12877        deny_since: None,
12878    },
12879    Lint {
12880        label: "once_cell_get_mut",
12881        description: r##"# `once_cell_get_mut`
12882
12883
12884
12885The tracking issue for this feature is: [#121641]
12886
12887[#121641]: https://github.com/rust-lang/rust/issues/121641
12888
12889------------------------
12890"##,
12891        default_severity: Severity::Allow,
12892        warn_since: None,
12893        deny_since: None,
12894    },
12895    Lint {
12896        label: "once_cell_new_init",
12897        description: r##"# `once_cell_new_init`
12898
12899
12900
12901The tracking issue for this feature is: [#159859]
12902
12903[#159859]: https://github.com/rust-lang/rust/issues/159859
12904
12905------------------------
12906"##,
12907        default_severity: Severity::Allow,
12908        warn_since: None,
12909        deny_since: None,
12910    },
12911    Lint {
12912        label: "once_cell_try",
12913        description: r##"# `once_cell_try`
12914
12915
12916
12917The tracking issue for this feature is: [#109737]
12918
12919[#109737]: https://github.com/rust-lang/rust/issues/109737
12920
12921------------------------
12922"##,
12923        default_severity: Severity::Allow,
12924        warn_since: None,
12925        deny_since: None,
12926    },
12927    Lint {
12928        label: "once_cell_try_insert",
12929        description: r##"# `once_cell_try_insert`
12930
12931
12932
12933The tracking issue for this feature is: [#116693]
12934
12935[#116693]: https://github.com/rust-lang/rust/issues/116693
12936
12937------------------------
12938"##,
12939        default_severity: Severity::Allow,
12940        warn_since: None,
12941        deny_since: None,
12942    },
12943    Lint {
12944        label: "once_lazy_lock_get_unchecked",
12945        description: r##"# `once_lazy_lock_get_unchecked`
12946
12947
12948
12949The tracking issue for this feature is: [#162716]
12950
12951[#162716]: https://github.com/rust-lang/rust/issues/162716
12952
12953------------------------
12954"##,
12955        default_severity: Severity::Allow,
12956        warn_since: None,
12957        deny_since: None,
12958    },
12959    Lint {
12960        label: "once_lock_new_init",
12961        description: r##"# `once_lock_new_init`
12962
12963
12964
12965The tracking issue for this feature is: [#159860]
12966
12967[#159860]: https://github.com/rust-lang/rust/issues/159860
12968
12969------------------------
12970"##,
12971        default_severity: Severity::Allow,
12972        warn_since: None,
12973        deny_since: None,
12974    },
12975    Lint {
12976        label: "one_sided_range",
12977        description: r##"# `one_sided_range`
12978
12979
12980
12981The tracking issue for this feature is: [#69780]
12982
12983[#69780]: https://github.com/rust-lang/rust/issues/69780
12984
12985------------------------
12986"##,
12987        default_severity: Severity::Allow,
12988        warn_since: None,
12989        deny_since: None,
12990    },
12991    Lint {
12992        label: "oneshot_channel",
12993        description: r##"# `oneshot_channel`
12994
12995
12996
12997The tracking issue for this feature is: [#143674]
12998
12999[#143674]: https://github.com/rust-lang/rust/issues/143674
13000
13001------------------------
13002"##,
13003        default_severity: Severity::Allow,
13004        warn_since: None,
13005        deny_since: None,
13006    },
13007    Lint {
13008        label: "option_array_transpose",
13009        description: r##"# `option_array_transpose`
13010
13011
13012
13013The tracking issue for this feature is: [#130828]
13014
13015[#130828]: https://github.com/rust-lang/rust/issues/130828
13016
13017------------------------
13018"##,
13019        default_severity: Severity::Allow,
13020        warn_since: None,
13021        deny_since: None,
13022    },
13023    Lint {
13024        label: "option_get_or_try_insert_with",
13025        description: r##"# `option_get_or_try_insert_with`
13026
13027
13028
13029The tracking issue for this feature is: [#143648]
13030
13031[#143648]: https://github.com/rust-lang/rust/issues/143648
13032
13033------------------------
13034"##,
13035        default_severity: Severity::Allow,
13036        warn_since: None,
13037        deny_since: None,
13038    },
13039    Lint {
13040        label: "option_into_flat_iter",
13041        description: r##"# `option_into_flat_iter`
13042
13043
13044
13045The tracking issue for this feature is: [#148441]
13046
13047[#148441]: https://github.com/rust-lang/rust/issues/148441
13048
13049------------------------
13050"##,
13051        default_severity: Severity::Allow,
13052        warn_since: None,
13053        deny_since: None,
13054    },
13055    Lint {
13056        label: "option_reduce",
13057        description: r##"# `option_reduce`
13058
13059
13060
13061The tracking issue for this feature is: [#144273]
13062
13063[#144273]: https://github.com/rust-lang/rust/issues/144273
13064
13065------------------------
13066"##,
13067        default_severity: Severity::Allow,
13068        warn_since: None,
13069        deny_since: None,
13070    },
13071    Lint {
13072        label: "option_reference_flattening",
13073        description: r##"# `option_reference_flattening`
13074
13075
13076
13077The tracking issue for this feature is: [#149221]
13078
13079[#149221]: https://github.com/rust-lang/rust/issues/149221
13080
13081------------------------
13082"##,
13083        default_severity: Severity::Allow,
13084        warn_since: None,
13085        deny_since: None,
13086    },
13087    Lint {
13088        label: "option_zip",
13089        description: r##"# `option_zip`
13090
13091
13092
13093The tracking issue for this feature is: [#70086]
13094
13095[#70086]: https://github.com/rust-lang/rust/issues/70086
13096
13097------------------------
13098"##,
13099        default_severity: Severity::Allow,
13100        warn_since: None,
13101        deny_since: None,
13102    },
13103    Lint {
13104        label: "os_str_slice",
13105        description: r##"# `os_str_slice`
13106
13107
13108
13109The tracking issue for this feature is: [#118485]
13110
13111[#118485]: https://github.com/rust-lang/rust/issues/118485
13112
13113------------------------
13114"##,
13115        default_severity: Severity::Allow,
13116        warn_since: None,
13117        deny_since: None,
13118    },
13119    Lint {
13120        label: "os_str_split_at",
13121        description: r##"# `os_str_split_at`
13122
13123
13124
13125This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
13126
13127------------------------
13128"##,
13129        default_severity: Severity::Allow,
13130        warn_since: None,
13131        deny_since: None,
13132    },
13133    Lint {
13134        label: "os_string_truncate",
13135        description: r##"# `os_string_truncate`
13136
13137
13138
13139The tracking issue for this feature is: [#133262]
13140
13141[#133262]: https://github.com/rust-lang/rust/issues/133262
13142
13143------------------------
13144"##,
13145        default_severity: Severity::Allow,
13146        warn_since: None,
13147        deny_since: None,
13148    },
13149    Lint {
13150        label: "panic_abort",
13151        description: r##"# `panic_abort`
13152
13153
13154
13155The tracking issue for this feature is: [#32837]
13156
13157[#32837]: https://github.com/rust-lang/rust/issues/32837
13158
13159------------------------
13160"##,
13161        default_severity: Severity::Allow,
13162        warn_since: None,
13163        deny_since: None,
13164    },
13165    Lint {
13166        label: "panic_always_abort",
13167        description: r##"# `panic_always_abort`
13168
13169
13170
13171The tracking issue for this feature is: [#84438]
13172
13173[#84438]: https://github.com/rust-lang/rust/issues/84438
13174
13175------------------------
13176"##,
13177        default_severity: Severity::Allow,
13178        warn_since: None,
13179        deny_since: None,
13180    },
13181    Lint {
13182        label: "panic_backtrace_config",
13183        description: r##"# `panic_backtrace_config`
13184
13185
13186
13187The tracking issue for this feature is: [#93346]
13188
13189[#93346]: https://github.com/rust-lang/rust/issues/93346
13190
13191------------------------
13192"##,
13193        default_severity: Severity::Allow,
13194        warn_since: None,
13195        deny_since: None,
13196    },
13197    Lint {
13198        label: "panic_can_unwind",
13199        description: r##"# `panic_can_unwind`
13200
13201
13202
13203The tracking issue for this feature is: [#92988]
13204
13205[#92988]: https://github.com/rust-lang/rust/issues/92988
13206
13207------------------------
13208"##,
13209        default_severity: Severity::Allow,
13210        warn_since: None,
13211        deny_since: None,
13212    },
13213    Lint {
13214        label: "panic_internals",
13215        description: r##"# `panic_internals`
13216
13217
13218
13219This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
13220
13221------------------------
13222"##,
13223        default_severity: Severity::Allow,
13224        warn_since: None,
13225        deny_since: None,
13226    },
13227    Lint {
13228        label: "panic_runtime",
13229        description: r##"# `panic_runtime`
13230
13231Allows using the `#![panic_runtime]` attribute.
13232
13233The tracking issue for this feature is: [#32837]
13234
13235[#32837]: https://github.com/rust-lang/rust/issues/32837
13236
13237------------------------
13238"##,
13239        default_severity: Severity::Allow,
13240        warn_since: None,
13241        deny_since: None,
13242    },
13243    Lint {
13244        label: "panic_unwind",
13245        description: r##"# `panic_unwind`
13246
13247
13248
13249The tracking issue for this feature is: [#32837]
13250
13251[#32837]: https://github.com/rust-lang/rust/issues/32837
13252
13253------------------------
13254"##,
13255        default_severity: Severity::Allow,
13256        warn_since: None,
13257        deny_since: None,
13258    },
13259    Lint {
13260        label: "panic_update_hook",
13261        description: r##"# `panic_update_hook`
13262
13263
13264
13265The tracking issue for this feature is: [#92649]
13266
13267[#92649]: https://github.com/rust-lang/rust/issues/92649
13268
13269------------------------
13270"##,
13271        default_severity: Severity::Allow,
13272        warn_since: None,
13273        deny_since: None,
13274    },
13275    Lint {
13276        label: "partial_ord_chaining_methods",
13277        description: r##"# `partial_ord_chaining_methods`
13278
13279
13280
13281This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
13282
13283------------------------
13284"##,
13285        default_severity: Severity::Allow,
13286        warn_since: None,
13287        deny_since: None,
13288    },
13289    Lint {
13290        label: "patchable_function_entry",
13291        description: r##"# `patchable_function_entry`
13292
13293Allows specifying nop padding on functions for dynamic patching.
13294
13295The tracking issue for this feature is: [#123115]
13296
13297[#123115]: https://github.com/rust-lang/rust/issues/123115
13298
13299------------------------
13300"##,
13301        default_severity: Severity::Allow,
13302        warn_since: None,
13303        deny_since: None,
13304    },
13305    Lint {
13306        label: "path_absolute_method",
13307        description: r##"# `path_absolute_method`
13308
13309
13310
13311The tracking issue for this feature is: [#153328]
13312
13313[#153328]: https://github.com/rust-lang/rust/issues/153328
13314
13315------------------------
13316"##,
13317        default_severity: Severity::Allow,
13318        warn_since: None,
13319        deny_since: None,
13320    },
13321    Lint {
13322        label: "path_trailing_sep",
13323        description: r##"# `path_trailing_sep`
13324
13325
13326
13327The tracking issue for this feature is: [#142503]
13328
13329[#142503]: https://github.com/rust-lang/rust/issues/142503
13330
13331------------------------
13332"##,
13333        default_severity: Severity::Allow,
13334        warn_since: None,
13335        deny_since: None,
13336    },
13337    Lint {
13338        label: "pattern",
13339        description: r##"# `pattern`
13340
13341
13342
13343The tracking issue for this feature is: [#27721]
13344
13345[#27721]: https://github.com/rust-lang/rust/issues/27721
13346
13347------------------------
13348"##,
13349        default_severity: Severity::Allow,
13350        warn_since: None,
13351        deny_since: None,
13352    },
13353    Lint {
13354        label: "pattern_complexity_limit",
13355        description: r##"# `pattern_complexity_limit`
13356
13357Set the maximum pattern complexity allowed (not limited by default).
13358
13359This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
13360
13361------------------------
13362"##,
13363        default_severity: Severity::Allow,
13364        warn_since: None,
13365        deny_since: None,
13366    },
13367    Lint {
13368        label: "pattern_type_macro",
13369        description: r##"# `pattern_type_macro`
13370
13371
13372
13373The tracking issue for this feature is: [#123646]
13374
13375[#123646]: https://github.com/rust-lang/rust/issues/123646
13376
13377------------------------
13378"##,
13379        default_severity: Severity::Allow,
13380        warn_since: None,
13381        deny_since: None,
13382    },
13383    Lint {
13384        label: "pattern_type_range_trait",
13385        description: r##"# `pattern_type_range_trait`
13386
13387
13388
13389The tracking issue for this feature is: [#123646]
13390
13391[#123646]: https://github.com/rust-lang/rust/issues/123646
13392
13393------------------------
13394"##,
13395        default_severity: Severity::Allow,
13396        warn_since: None,
13397        deny_since: None,
13398    },
13399    Lint {
13400        label: "pattern_types",
13401        description: r##"# `pattern_types`
13402
13403Allows using pattern types.
13404
13405The tracking issue for this feature is: [#123646]
13406
13407[#123646]: https://github.com/rust-lang/rust/issues/123646
13408
13409------------------------
13410"##,
13411        default_severity: Severity::Allow,
13412        warn_since: None,
13413        deny_since: None,
13414    },
13415    Lint {
13416        label: "peer_credentials_unix_socket",
13417        description: r##"# `peer_credentials_unix_socket`
13418
13419
13420
13421The tracking issue for this feature is: [#42839]
13422
13423[#42839]: https://github.com/rust-lang/rust/issues/42839
13424
13425------------------------
13426"##,
13427        default_severity: Severity::Allow,
13428        warn_since: None,
13429        deny_since: None,
13430    },
13431    Lint {
13432        label: "phantom_variance_markers",
13433        description: r##"# `phantom_variance_markers`
13434
13435
13436
13437The tracking issue for this feature is: [#135806]
13438
13439[#135806]: https://github.com/rust-lang/rust/issues/135806
13440
13441------------------------
13442"##,
13443        default_severity: Severity::Allow,
13444        warn_since: None,
13445        deny_since: None,
13446    },
13447    Lint {
13448        label: "pin_coerce_unsized_trait",
13449        description: r##"# `pin_coerce_unsized_trait`
13450
13451
13452
13453The tracking issue for this feature is: [#150112]
13454
13455[#150112]: https://github.com/rust-lang/rust/issues/150112
13456
13457------------------------
13458"##,
13459        default_severity: Severity::Allow,
13460        warn_since: None,
13461        deny_since: None,
13462    },
13463    Lint {
13464        label: "pin_derefmut_internals",
13465        description: r##"# `pin_derefmut_internals`
13466
13467
13468
13469This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
13470
13471------------------------
13472"##,
13473        default_severity: Severity::Allow,
13474        warn_since: None,
13475        deny_since: None,
13476    },
13477    Lint {
13478        label: "pin_ergonomics",
13479        description: r##"# `pin_ergonomics`
13480
13481Experimental features that make `Pin` more ergonomic.
13482
13483The tracking issue for this feature is: [#130494]
13484
13485[#130494]: https://github.com/rust-lang/rust/issues/130494
13486
13487------------------------
13488"##,
13489        default_severity: Severity::Allow,
13490        warn_since: None,
13491        deny_since: None,
13492    },
13493    Lint {
13494        label: "pin_macro_internals",
13495        description: r##"# `pin_macro_internals`
13496
13497
13498
13499This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
13500
13501------------------------
13502"##,
13503        default_severity: Severity::Allow,
13504        warn_since: None,
13505        deny_since: None,
13506    },
13507    Lint {
13508        label: "pointer_is_aligned_to",
13509        description: r##"# `pointer_is_aligned_to`
13510
13511
13512
13513The tracking issue for this feature is: [#96284]
13514
13515[#96284]: https://github.com/rust-lang/rust/issues/96284
13516
13517------------------------
13518"##,
13519        default_severity: Severity::Allow,
13520        warn_since: None,
13521        deny_since: None,
13522    },
13523    Lint {
13524        label: "portable_simd",
13525        description: r##"# `portable_simd`
13526
13527
13528
13529The tracking issue for this feature is: [#86656]
13530
13531[#86656]: https://github.com/rust-lang/rust/issues/86656
13532
13533------------------------
13534"##,
13535        default_severity: Severity::Allow,
13536        warn_since: None,
13537        deny_since: None,
13538    },
13539    Lint {
13540        label: "postfix_match",
13541        description: r##"# `postfix-match`
13542
13543`postfix-match` adds the feature for matching upon values postfix
13544the expressions that generate the values.
13545
13546The tracking issue for this feature is: [#121618](https://github.com/rust-lang/rust/issues/121618).
13547
13548------------------------
13549
13550```rust,edition2021
13551#![feature(postfix_match)]
13552
13553enum Foo {
13554    Bar,
13555    Baz
13556}
13557
13558fn get_foo() -> Foo {
13559    Foo::Bar
13560}
13561
13562get_foo().match {
13563    Foo::Bar => {},
13564    Foo::Baz => panic!(),
13565}
13566```
13567"##,
13568        default_severity: Severity::Allow,
13569        warn_since: None,
13570        deny_since: None,
13571    },
13572    Lint {
13573        label: "powerpc_ppcf128",
13574        description: r##"# `powerpc_ppcf128`
13575
13576
13577
13578The tracking issue for this feature is: [#163323]
13579
13580[#163323]: https://github.com/rust-lang/rust/issues/163323
13581
13582------------------------
13583"##,
13584        default_severity: Severity::Allow,
13585        warn_since: None,
13586        deny_since: None,
13587    },
13588    Lint {
13589        label: "powerpc_target_feature",
13590        description: r##"# `powerpc_target_feature`
13591
13592Target features on powerpc.
13593
13594The tracking issue for this feature is: [#150255]
13595
13596[#150255]: https://github.com/rust-lang/rust/issues/150255
13597
13598------------------------
13599"##,
13600        default_severity: Severity::Allow,
13601        warn_since: None,
13602        deny_since: None,
13603    },
13604    Lint {
13605        label: "prelude_future",
13606        description: r##"# `prelude_future`
13607
13608
13609
13610This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
13611
13612------------------------
13613"##,
13614        default_severity: Severity::Allow,
13615        warn_since: None,
13616        deny_since: None,
13617    },
13618    Lint {
13619        label: "prelude_import",
13620        description: r##"# `prelude_import`
13621
13622Allows using `#[prelude_import]` on glob `use` items.
13623
13624This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
13625
13626------------------------
13627"##,
13628        default_severity: Severity::Allow,
13629        warn_since: None,
13630        deny_since: None,
13631    },
13632    Lint {
13633        label: "prelude_next",
13634        description: r##"# `prelude_next`
13635
13636
13637
13638This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
13639
13640------------------------
13641"##,
13642        default_severity: Severity::Allow,
13643        warn_since: None,
13644        deny_since: None,
13645    },
13646    Lint {
13647        label: "prfchw_target_feature",
13648        description: r##"# `prfchw_target_feature`
13649
13650The prfchw target feature on x86.
13651
13652The tracking issue for this feature is: [#150256]
13653
13654[#150256]: https://github.com/rust-lang/rust/issues/150256
13655
13656------------------------
13657"##,
13658        default_severity: Severity::Allow,
13659        warn_since: None,
13660        deny_since: None,
13661    },
13662    Lint {
13663        label: "print_internals",
13664        description: r##"# `print_internals`
13665
13666This feature is internal to the Rust compiler and is not intended for general use.
13667
13668------------------------
13669"##,
13670        default_severity: Severity::Allow,
13671        warn_since: None,
13672        deny_since: None,
13673    },
13674    Lint {
13675        label: "proc_macro_def_site",
13676        description: r##"# `proc_macro_def_site`
13677
13678
13679
13680The tracking issue for this feature is: [#54724]
13681
13682[#54724]: https://github.com/rust-lang/rust/issues/54724
13683
13684------------------------
13685"##,
13686        default_severity: Severity::Allow,
13687        warn_since: None,
13688        deny_since: None,
13689    },
13690    Lint {
13691        label: "proc_macro_diagnostic",
13692        description: r##"# `proc_macro_diagnostic`
13693
13694
13695
13696The tracking issue for this feature is: [#54140]
13697
13698[#54140]: https://github.com/rust-lang/rust/issues/54140
13699
13700------------------------
13701"##,
13702        default_severity: Severity::Allow,
13703        warn_since: None,
13704        deny_since: None,
13705    },
13706    Lint {
13707        label: "proc_macro_expand",
13708        description: r##"# `proc_macro_expand`
13709
13710
13711
13712The tracking issue for this feature is: [#90765]
13713
13714[#90765]: https://github.com/rust-lang/rust/issues/90765
13715
13716------------------------
13717"##,
13718        default_severity: Severity::Allow,
13719        warn_since: None,
13720        deny_since: None,
13721    },
13722    Lint {
13723        label: "proc_macro_hygiene",
13724        description: r##"# `proc_macro_hygiene`
13725
13726Allows macro attributes on expressions and statements.
13727
13728The tracking issue for this feature is: [#54727]
13729
13730[#54727]: https://github.com/rust-lang/rust/issues/54727
13731
13732------------------------
13733"##,
13734        default_severity: Severity::Allow,
13735        warn_since: None,
13736        deny_since: None,
13737    },
13738    Lint {
13739        label: "proc_macro_internals",
13740        description: r##"# `proc_macro_internals`
13741
13742
13743
13744This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
13745
13746------------------------
13747"##,
13748        default_severity: Severity::Allow,
13749        warn_since: None,
13750        deny_since: None,
13751    },
13752    Lint {
13753        label: "proc_macro_quote",
13754        description: r##"# `proc_macro_quote`
13755
13756
13757
13758The tracking issue for this feature is: [#54722]
13759
13760[#54722]: https://github.com/rust-lang/rust/issues/54722
13761
13762------------------------
13763"##,
13764        default_severity: Severity::Allow,
13765        warn_since: None,
13766        deny_since: None,
13767    },
13768    Lint {
13769        label: "proc_macro_span",
13770        description: r##"# `proc_macro_span`
13771
13772
13773
13774The tracking issue for this feature is: [#54725]
13775
13776[#54725]: https://github.com/rust-lang/rust/issues/54725
13777
13778------------------------
13779"##,
13780        default_severity: Severity::Allow,
13781        warn_since: None,
13782        deny_since: None,
13783    },
13784    Lint {
13785        label: "proc_macro_totokens",
13786        description: r##"# `proc_macro_totokens`
13787
13788
13789
13790The tracking issue for this feature is: [#130977]
13791
13792[#130977]: https://github.com/rust-lang/rust/issues/130977
13793
13794------------------------
13795"##,
13796        default_severity: Severity::Allow,
13797        warn_since: None,
13798        deny_since: None,
13799    },
13800    Lint {
13801        label: "proc_macro_tracked_env",
13802        description: r##"# `proc_macro_tracked_env`
13803
13804
13805
13806The tracking issue for this feature is: [#99515]
13807
13808[#99515]: https://github.com/rust-lang/rust/issues/99515
13809
13810------------------------
13811"##,
13812        default_severity: Severity::Allow,
13813        warn_since: None,
13814        deny_since: None,
13815    },
13816    Lint {
13817        label: "proc_macro_tracked_path",
13818        description: r##"# `proc_macro_tracked_path`
13819
13820
13821
13822The tracking issue for this feature is: [#99515]
13823
13824[#99515]: https://github.com/rust-lang/rust/issues/99515
13825
13826------------------------
13827"##,
13828        default_severity: Severity::Allow,
13829        warn_since: None,
13830        deny_since: None,
13831    },
13832    Lint {
13833        label: "proc_macro_value",
13834        description: r##"# `proc_macro_value`
13835
13836
13837
13838The tracking issue for this feature is: [#136652]
13839
13840[#136652]: https://github.com/rust-lang/rust/issues/136652
13841
13842------------------------
13843"##,
13844        default_severity: Severity::Allow,
13845        warn_since: None,
13846        deny_since: None,
13847    },
13848    Lint {
13849        label: "process_chroot",
13850        description: r##"# `process_chroot`
13851
13852
13853
13854The tracking issue for this feature is: [#141298]
13855
13856[#141298]: https://github.com/rust-lang/rust/issues/141298
13857
13858------------------------
13859"##,
13860        default_severity: Severity::Allow,
13861        warn_since: None,
13862        deny_since: None,
13863    },
13864    Lint {
13865        label: "process_exitcode_internals",
13866        description: r##"# `process_exitcode_internals`
13867
13868
13869
13870This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
13871
13872------------------------
13873"##,
13874        default_severity: Severity::Allow,
13875        warn_since: None,
13876        deny_since: None,
13877    },
13878    Lint {
13879        label: "process_internals",
13880        description: r##"# `process_internals`
13881
13882
13883
13884This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
13885
13886------------------------
13887"##,
13888        default_severity: Severity::Allow,
13889        warn_since: None,
13890        deny_since: None,
13891    },
13892    Lint {
13893        label: "process_setsid",
13894        description: r##"# `process_setsid`
13895
13896
13897
13898The tracking issue for this feature is: [#105376]
13899
13900[#105376]: https://github.com/rust-lang/rust/issues/105376
13901
13902------------------------
13903"##,
13904        default_severity: Severity::Allow,
13905        warn_since: None,
13906        deny_since: None,
13907    },
13908    Lint {
13909        label: "profiler_runtime",
13910        description: r##"# `profiler_runtime`
13911
13912The tracking issue for this feature is: [#42524](https://github.com/rust-lang/rust/issues/42524).
13913
13914------------------------
13915"##,
13916        default_severity: Severity::Allow,
13917        warn_since: None,
13918        deny_since: None,
13919    },
13920    Lint {
13921        label: "profiler_runtime_lib",
13922        description: r##"# `profiler_runtime_lib`
13923
13924This feature is internal to the Rust compiler and is not intended for general use.
13925
13926------------------------
13927"##,
13928        default_severity: Severity::Allow,
13929        warn_since: None,
13930        deny_since: None,
13931    },
13932    Lint {
13933        label: "profiling_marker_api",
13934        description: r##"# `profiling_marker_api`
13935
13936
13937
13938The tracking issue for this feature is: [#148197]
13939
13940[#148197]: https://github.com/rust-lang/rust/issues/148197
13941
13942------------------------
13943"##,
13944        default_severity: Severity::Allow,
13945        warn_since: None,
13946        deny_since: None,
13947    },
13948    Lint {
13949        label: "ptr_alignment_type",
13950        description: r##"# `ptr_alignment_type`
13951
13952
13953
13954The tracking issue for this feature is: [#102070]
13955
13956[#102070]: https://github.com/rust-lang/rust/issues/102070
13957
13958------------------------
13959"##,
13960        default_severity: Severity::Allow,
13961        warn_since: None,
13962        deny_since: None,
13963    },
13964    Lint {
13965        label: "ptr_as_uninit",
13966        description: r##"# `ptr_as_uninit`
13967
13968
13969
13970The tracking issue for this feature is: [#75402]
13971
13972[#75402]: https://github.com/rust-lang/rust/issues/75402
13973
13974------------------------
13975"##,
13976        default_severity: Severity::Allow,
13977        warn_since: None,
13978        deny_since: None,
13979    },
13980    Lint {
13981        label: "ptr_cast_array",
13982        description: r##"# `ptr_cast_array`
13983
13984
13985
13986The tracking issue for this feature is: [#144514]
13987
13988[#144514]: https://github.com/rust-lang/rust/issues/144514
13989
13990------------------------
13991"##,
13992        default_severity: Severity::Allow,
13993        warn_since: None,
13994        deny_since: None,
13995    },
13996    Lint {
13997        label: "ptr_cast_slice",
13998        description: r##"# `ptr_cast_slice`
13999
14000
14001
14002The tracking issue for this feature is: [#149103]
14003
14004[#149103]: https://github.com/rust-lang/rust/issues/149103
14005
14006------------------------
14007"##,
14008        default_severity: Severity::Allow,
14009        warn_since: None,
14010        deny_since: None,
14011    },
14012    Lint {
14013        label: "ptr_mask",
14014        description: r##"# `ptr_mask`
14015
14016
14017
14018The tracking issue for this feature is: [#98290]
14019
14020[#98290]: https://github.com/rust-lang/rust/issues/98290
14021
14022------------------------
14023"##,
14024        default_severity: Severity::Allow,
14025        warn_since: None,
14026        deny_since: None,
14027    },
14028    Lint {
14029        label: "ptr_metadata",
14030        description: r##"# `ptr_metadata`
14031
14032
14033
14034The tracking issue for this feature is: [#81513]
14035
14036[#81513]: https://github.com/rust-lang/rust/issues/81513
14037
14038------------------------
14039"##,
14040        default_severity: Severity::Allow,
14041        warn_since: None,
14042        deny_since: None,
14043    },
14044    Lint {
14045        label: "pub_crate_should_not_need_unstable_attr",
14046        description: r##"# `pub_crate_should_not_need_unstable_attr`
14047
14048
14049
14050This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
14051
14052------------------------
14053"##,
14054        default_severity: Severity::Allow,
14055        warn_since: None,
14056        deny_since: None,
14057    },
14058    Lint {
14059        label: "random",
14060        description: r##"# `random`
14061
14062
14063
14064The tracking issue for this feature is: [#130703]
14065
14066[#130703]: https://github.com/rust-lang/rust/issues/130703
14067
14068------------------------
14069"##,
14070        default_severity: Severity::Allow,
14071        warn_since: None,
14072        deny_since: None,
14073    },
14074    Lint {
14075        label: "range_bounds_is_empty",
14076        description: r##"# `range_bounds_is_empty`
14077
14078
14079
14080The tracking issue for this feature is: [#137300]
14081
14082[#137300]: https://github.com/rust-lang/rust/issues/137300
14083
14084------------------------
14085"##,
14086        default_severity: Severity::Allow,
14087        warn_since: None,
14088        deny_since: None,
14089    },
14090    Lint {
14091        label: "range_into_bounds",
14092        description: r##"# `range_into_bounds`
14093
14094
14095
14096The tracking issue for this feature is: [#136903]
14097
14098[#136903]: https://github.com/rust-lang/rust/issues/136903
14099
14100------------------------
14101"##,
14102        default_severity: Severity::Allow,
14103        warn_since: None,
14104        deny_since: None,
14105    },
14106    Lint {
14107        label: "raw_dylib_elf",
14108        description: r##"# `raw_dylib_elf`
14109
14110Allows the use of raw-dylibs on ELF platforms
14111
14112The tracking issue for this feature is: [#135694]
14113
14114[#135694]: https://github.com/rust-lang/rust/issues/135694
14115
14116------------------------
14117"##,
14118        default_severity: Severity::Allow,
14119        warn_since: None,
14120        deny_since: None,
14121    },
14122    Lint {
14123        label: "raw_os_error_ty",
14124        description: r##"# `raw_os_error_ty`
14125
14126
14127
14128The tracking issue for this feature is: [#107792]
14129
14130[#107792]: https://github.com/rust-lang/rust/issues/107792
14131
14132------------------------
14133"##,
14134        default_severity: Severity::Allow,
14135        warn_since: None,
14136        deny_since: None,
14137    },
14138    Lint {
14139        label: "raw_slice_split",
14140        description: r##"# `raw_slice_split`
14141
14142
14143
14144The tracking issue for this feature is: [#95595]
14145
14146[#95595]: https://github.com/rust-lang/rust/issues/95595
14147
14148------------------------
14149"##,
14150        default_severity: Severity::Allow,
14151        warn_since: None,
14152        deny_since: None,
14153    },
14154    Lint {
14155        label: "raw_vec_internals",
14156        description: r##"# `raw_vec_internals`
14157
14158
14159
14160This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
14161
14162------------------------
14163"##,
14164        default_severity: Severity::Allow,
14165        warn_since: None,
14166        deny_since: None,
14167    },
14168    Lint {
14169        label: "read_array",
14170        description: r##"# `read_array`
14171
14172
14173
14174The tracking issue for this feature is: [#148848]
14175
14176[#148848]: https://github.com/rust-lang/rust/issues/148848
14177
14178------------------------
14179"##,
14180        default_severity: Severity::Allow,
14181        warn_since: None,
14182        deny_since: None,
14183    },
14184    Lint {
14185        label: "read_buf",
14186        description: r##"# `read_buf`
14187
14188
14189
14190The tracking issue for this feature is: [#78485]
14191
14192[#78485]: https://github.com/rust-lang/rust/issues/78485
14193
14194------------------------
14195"##,
14196        default_severity: Severity::Allow,
14197        warn_since: None,
14198        deny_since: None,
14199    },
14200    Lint {
14201        label: "read_buf_at",
14202        description: r##"# `read_buf_at`
14203
14204
14205
14206The tracking issue for this feature is: [#140771]
14207
14208[#140771]: https://github.com/rust-lang/rust/issues/140771
14209
14210------------------------
14211"##,
14212        default_severity: Severity::Allow,
14213        warn_since: None,
14214        deny_since: None,
14215    },
14216    Lint {
14217        label: "read_le",
14218        description: r##"# `read_le`
14219
14220
14221
14222The tracking issue for this feature is: [#156984]
14223
14224[#156984]: https://github.com/rust-lang/rust/issues/156984
14225
14226------------------------
14227"##,
14228        default_severity: Severity::Allow,
14229        warn_since: None,
14230        deny_since: None,
14231    },
14232    Lint {
14233        label: "read_le_be_internals",
14234        description: r##"# `read_le_be_internals`
14235
14236
14237
14238This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
14239
14240------------------------
14241"##,
14242        default_severity: Severity::Allow,
14243        warn_since: None,
14244        deny_since: None,
14245    },
14246    Lint {
14247        label: "reborrow",
14248        description: r##"# `reborrow`
14249
14250Allows the `Reborrow` and `CoerceShared` traits.
14251
14252The tracking issue for this feature is: [#145612]
14253
14254[#145612]: https://github.com/rust-lang/rust/issues/145612
14255
14256------------------------
14257"##,
14258        default_severity: Severity::Allow,
14259        warn_since: None,
14260        deny_since: None,
14261    },
14262    Lint {
14263        label: "reentrant_lock",
14264        description: r##"# `reentrant_lock`
14265
14266
14267
14268The tracking issue for this feature is: [#121440]
14269
14270[#121440]: https://github.com/rust-lang/rust/issues/121440
14271
14272------------------------
14273"##,
14274        default_severity: Severity::Allow,
14275        warn_since: None,
14276        deny_since: None,
14277    },
14278    Lint {
14279        label: "reentrant_lock_data_ptr",
14280        description: r##"# `reentrant_lock_data_ptr`
14281
14282
14283
14284The tracking issue for this feature is: [#140368]
14285
14286[#140368]: https://github.com/rust-lang/rust/issues/140368
14287
14288------------------------
14289"##,
14290        default_severity: Severity::Allow,
14291        warn_since: None,
14292        deny_since: None,
14293    },
14294    Lint {
14295        label: "ref_pat_eat_one_layer_2024",
14296        description: r##"# `ref_pat_eat_one_layer_2024`
14297
14298The tracking issue for this feature is: [#123076]
14299
14300[#123076]: https://github.com/rust-lang/rust/issues/123076
14301
14302---
14303
14304This feature is incomplete and not yet intended for general use.
14305
14306This implements experimental, Edition-dependent match ergonomics under consideration for inclusion
14307in Rust, allowing `&` patterns in more places. For example:
14308
14309```rust,edition2024
14310#![feature(ref_pat_eat_one_layer_2024)]
14311#![allow(incomplete_features)]
14312#
14313# // Tests type equality in a way that avoids coercing `&&T` or `&mut T` to `&T`.
14314# trait Eq<T> {}
14315# impl<T> Eq<T> for T {}
14316# fn has_type<T>(_: impl Eq<T>) {}
14317
14318// `&` can match against a `ref` binding mode instead of a reference type:
14319let (x, &y) = &(0, 1);
14320has_type::<&u8>(x);
14321has_type::<u8>(y);
14322
14323// `&` can match against `&mut` references:
14324let &z = &mut 2;
14325has_type::<u8>(z);
14326```
14327
14328For specifics, see the corresponding typing rules for [Editions 2021 and earlier] and for
14329[Editions 2024 and later]. For more information on binding modes, see [The Rust Reference].
14330
14331For alternative experimental match ergonomics, see the feature
14332[`ref_pat_eat_one_layer_2024_structural`](./ref-pat-eat-one-layer-2024-structural.md).
14333
14334[Editions 2021 and earlier]: https://nadrieril.github.io/typing-rust-patterns/?compare=false&opts1=AQEBAQIBAQABAAAAAQEBAAEBAAABAAA%3D&mode=rules&do_cmp=false
14335[Editions 2024 and later]: https://nadrieril.github.io/typing-rust-patterns/?compare=false&opts1=AQEBAAABAQABAgIAAQEBAAEBAAABAAA%3D&mode=rules&do_cmp=false
14336[The Rust Reference]: https://doc.rust-lang.org/reference/patterns.html#binding-modes
14337"##,
14338        default_severity: Severity::Allow,
14339        warn_since: None,
14340        deny_since: None,
14341    },
14342    Lint {
14343        label: "ref_pat_eat_one_layer_2024_structural",
14344        description: r##"# `ref_pat_eat_one_layer_2024_structural`
14345
14346The tracking issue for this feature is: [#123076]
14347
14348[#123076]: https://github.com/rust-lang/rust/issues/123076
14349
14350---
14351
14352This feature is incomplete and not yet intended for general use.
14353
14354This implements experimental, Edition-dependent match ergonomics under consideration for inclusion
14355in Rust, allowing `&` patterns in more places. For example:
14356```rust,edition2024
14357#![feature(ref_pat_eat_one_layer_2024_structural)]
14358#![allow(incomplete_features)]
14359#
14360# // Tests type equality in a way that avoids coercing `&&T` or `&mut T` to `&T`.
14361# trait Eq<T> {}
14362# impl<T> Eq<T> for T {}
14363# fn has_type<T>(_: impl Eq<T>) {}
14364
14365// `&` can match against a `ref` binding mode instead of a reference type:
14366let (x, &y) = &(0, 1);
14367has_type::<&u8>(x);
14368has_type::<u8>(y);
14369
14370// `&` can match against `&mut` references:
14371let &z = &mut 2;
14372has_type::<u8>(z);
14373```
14374
14375For specifics, see the corresponding typing rules for [Editions 2021 and earlier] and for
14376[Editions 2024 and later]. For more information on binding modes, see [The Rust Reference].
14377
14378For alternative experimental match ergonomics, see the feature
14379[`ref_pat_eat_one_layer_2024`](./ref-pat-eat-one-layer-2024.md).
14380
14381[Editions 2021 and earlier]: https://nadrieril.github.io/typing-rust-patterns/?compare=false&opts1=AQEBAQIBAQEBAAAAAAAAAAAAAAAAAAA%3D&mode=rules&do_cmp=false
14382[Editions 2024 and later]: https://nadrieril.github.io/typing-rust-patterns/?compare=false&opts1=AQEBAgEBAQEBAgIAAAAAAAAAAAAAAAA%3D&mode=rules&do_cmp=false
14383[The Rust Reference]: https://doc.rust-lang.org/reference/patterns.html#binding-modes
14384"##,
14385        default_severity: Severity::Allow,
14386        warn_since: None,
14387        deny_since: None,
14388    },
14389    Lint {
14390        label: "refcell_try_map",
14391        description: r##"# `refcell_try_map`
14392
14393
14394
14395The tracking issue for this feature is: [#143801]
14396
14397[#143801]: https://github.com/rust-lang/rust/issues/143801
14398
14399------------------------
14400"##,
14401        default_severity: Severity::Allow,
14402        warn_since: None,
14403        deny_since: None,
14404    },
14405    Lint {
14406        label: "register_tool",
14407        description: r##"# `register_tool`
14408
14409The tracking issue for this feature is: [#66079]
14410
14411[#66079]: https://github.com/rust-lang/rust/issues/66079
14412
14413------------------------
14414
14415The `register_tool` language feature informs the compiler that attributes in your code are meant to be used with tools other than the compiler itself. This can be useful if your code has semantic meaning without the external tool, but enables additional features when the tool is present.
14416
14417`register_tool` also allows configuring lint levels for external tools.
14418
14419Tool attributes are only meant for ignorable attributes. If your code *changes* meaning when the attribute is present, it should not use a tool attribute (because it cannot be compiled with anything other than the external tool, and in a sense is a fork of the language).
14420
14421------------------------
14422
14423`#![register_tool(tool)]` is an attribute, and is only valid at the crate root.
14424Attributes using the registered tool are checked for valid syntax, and lint attributes are checked to be in a valid format. However, the compiler cannot validate the semantics of the attribute, nor can it tell whether the configured lint is present in the external tool.
14425
14426Semantically, `clippy::*`, `rustdoc::*`, and `rustfmt::*` lints and attributes all behave as if `#![register_tool(clippy, rustdoc, rustfmt)]` were injected into the crate root, except that the `rustdoc` namespace can only be used for lints, not for attributes.
14427When compiling with `-Z unstable-features`, `rustc::*` lints can also be used. Like `rustdoc`, the `rustc` namespace can only be used with lints, not attributes.
14428
14429The compiler will emit an error if it encounters a lint/attribute whose namespace isn't a registered tool.
14430
14431Tool namespaces cannot be nested; `register_tool(main_tool::subtool)` is an error.
14432
14433## Examples
14434
14435Tool attributes:
14436
14437```rust
14438#![feature(register_tool)]
14439#![register_tool(c2rust)]
14440
14441// Mark which C header file this module was generated from.
14442#[c2rust::header_src = "operations.h"]
14443pub mod operations_h {
14444    use std::ffi::c_int;
14445
14446    // Mark which source line this struct was generated from.
14447    #[c2rust::src_loc = "11:0"]
14448    pub struct Point {
14449        pub x: c_int,
14450        pub y: c_int,
14451    }
14452}
14453```
14454
14455Tool lints:
14456
14457```
14458#![feature(register_tool)]
14459#![register_tool(bevy)]
14460#![deny(bevy::duplicate_bevy_dependencies)]
14461```
14462"##,
14463        default_severity: Severity::Allow,
14464        warn_since: None,
14465        deny_since: None,
14466    },
14467    Lint {
14468        label: "rename_noreplace",
14469        description: r##"# `rename_noreplace`
14470
14471
14472
14473The tracking issue for this feature is: [#161427]
14474
14475[#161427]: https://github.com/rust-lang/rust/issues/161427
14476
14477------------------------
14478"##,
14479        default_severity: Severity::Allow,
14480        warn_since: None,
14481        deny_since: None,
14482    },
14483    Lint {
14484        label: "repr_simd",
14485        description: r##"# `repr_simd`
14486
14487Allows `repr(simd)` and importing the various simd intrinsics.
14488
14489The tracking issue for this feature is: [#27731]
14490
14491[#27731]: https://github.com/rust-lang/rust/issues/27731
14492
14493------------------------
14494"##,
14495        default_severity: Severity::Allow,
14496        warn_since: None,
14497        deny_since: None,
14498    },
14499    Lint {
14500        label: "restricted_std",
14501        description: r##"# `restricted_std`
14502
14503
14504
14505This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
14506
14507------------------------
14508"##,
14509        default_severity: Severity::Allow,
14510        warn_since: None,
14511        deny_since: None,
14512    },
14513    Lint {
14514        label: "return_address",
14515        description: r##"# `return_address`
14516
14517
14518
14519The tracking issue for this feature is: [#154966]
14520
14521[#154966]: https://github.com/rust-lang/rust/issues/154966
14522
14523------------------------
14524"##,
14525        default_severity: Severity::Allow,
14526        warn_since: None,
14527        deny_since: None,
14528    },
14529    Lint {
14530        label: "return_type_notation",
14531        description: r##"# `return_type_notation`
14532
14533Allows bounding the return type of AFIT/RPITIT.
14534
14535The tracking issue for this feature is: [#109417]
14536
14537[#109417]: https://github.com/rust-lang/rust/issues/109417
14538
14539------------------------
14540"##,
14541        default_severity: Severity::Allow,
14542        warn_since: None,
14543        deny_since: None,
14544    },
14545    Lint {
14546        label: "rev_into_inner",
14547        description: r##"# `rev_into_inner`
14548
14549
14550
14551The tracking issue for this feature is: [#144277]
14552
14553[#144277]: https://github.com/rust-lang/rust/issues/144277
14554
14555------------------------
14556"##,
14557        default_severity: Severity::Allow,
14558        warn_since: None,
14559        deny_since: None,
14560    },
14561    Lint {
14562        label: "riscv_target_feature",
14563        description: r##"# `riscv_target_feature`
14564
14565Target features on riscv.
14566
14567The tracking issue for this feature is: [#150257]
14568
14569[#150257]: https://github.com/rust-lang/rust/issues/150257
14570
14571------------------------
14572"##,
14573        default_severity: Severity::Allow,
14574        warn_since: None,
14575        deny_since: None,
14576    },
14577    Lint {
14578        label: "rt",
14579        description: r##"# `rt`
14580
14581This feature is internal to the Rust compiler and is not intended for general use.
14582
14583------------------------
14584"##,
14585        default_severity: Severity::Allow,
14586        warn_since: None,
14587        deny_since: None,
14588    },
14589    Lint {
14590        label: "rtm_target_feature",
14591        description: r##"# `rtm_target_feature`
14592
14593The rtm target feature on x86.
14594
14595The tracking issue for this feature is: [#150258]
14596
14597[#150258]: https://github.com/rust-lang/rust/issues/150258
14598
14599------------------------
14600"##,
14601        default_severity: Severity::Allow,
14602        warn_since: None,
14603        deny_since: None,
14604    },
14605    Lint {
14606        label: "rust_cold_cc",
14607        description: r##"# `rust_cold_cc`
14608
14609Allows `extern "rust-cold"`.
14610
14611The tracking issue for this feature is: [#97544]
14612
14613[#97544]: https://github.com/rust-lang/rust/issues/97544
14614
14615------------------------
14616"##,
14617        default_severity: Severity::Allow,
14618        warn_since: None,
14619        deny_since: None,
14620    },
14621    Lint {
14622        label: "rust_preserve_none_cc",
14623        description: r##"# `rust_preserve_none_cc`
14624
14625Allows `extern "rust-preserve-none"`.
14626
14627The tracking issue for this feature is: [#151401]
14628
14629[#151401]: https://github.com/rust-lang/rust/issues/151401
14630
14631------------------------
14632"##,
14633        default_severity: Severity::Allow,
14634        warn_since: None,
14635        deny_since: None,
14636    },
14637    Lint {
14638        label: "rust_tail_cc",
14639        description: r##"# `rust_tail_cc`
14640
14641Allows `extern "tail"`.
14642
14643The tracking issue for this feature is: [#157427]
14644
14645[#157427]: https://github.com/rust-lang/rust/issues/157427
14646
14647------------------------
14648"##,
14649        default_severity: Severity::Allow,
14650        warn_since: None,
14651        deny_since: None,
14652    },
14653    Lint {
14654        label: "rustc_attrs",
14655        description: r##"# `rustc_attrs`
14656
14657This feature has no tracking issue, and is therefore internal to
14658the compiler, not being intended for general use.
14659
14660Note: `rustc_attrs` enables many rustc-internal attributes and this page
14661only discuss a few of them.
14662
14663------------------------
14664
14665The `rustc_attrs` feature allows debugging rustc type layouts by using
14666`#[rustc_dump_layout(...)]` to debug layout at compile time (it even works
14667with `cargo check`) as an alternative to `rustc -Z print-type-sizes`
14668that is way more verbose.
14669
14670Options provided by `#[rustc_dump_layout(...)]` are `backend_repr`, `align`,
14671`debug`, `homogeneous_aggregate` and `size`.
14672Note that it only works on sized types without generics.
14673
14674## Examples
14675
14676```rust,compile_fail
14677#![feature(rustc_attrs)]
14678
14679#[rustc_dump_layout(backend_repr, size)]
14680pub enum X {
14681    Y(u8, u8, u8),
14682    Z(isize),
14683}
14684```
14685
14686When that is compiled, the compiler will error with something like
14687
14688```text
14689error: backend_repr: Aggregate { sized: true }
14690 --> src/lib.rs:4:1
14691  |
146924 | / pub enum T {
146935 | |     Y(u8, u8, u8),
146946 | |     Z(isize),
146957 | | }
14696  | |_^
14697
14698error: size: Size { raw: 16 }
14699 --> src/lib.rs:4:1
14700  |
147014 | / pub enum T {
147025 | |     Y(u8, u8, u8),
147036 | |     Z(isize),
147047 | | }
14705  | |_^
14706
14707error: aborting due to 2 previous errors
14708```
14709"##,
14710        default_severity: Severity::Allow,
14711        warn_since: None,
14712        deny_since: None,
14713    },
14714    Lint {
14715        label: "rustc_private",
14716        description: r##"# `rustc_private`
14717
14718The tracking issue for this feature is: [#27812]
14719
14720[#27812]: https://github.com/rust-lang/rust/issues/27812
14721
14722------------------------
14723
14724This feature allows access to unstable internal compiler crates such as `rustc_driver`.
14725
14726The presence of this feature changes the way the linkage format for dylibs is calculated in a way
14727that is necessary for linking against dylibs that statically link `std` (such as `rustc_driver`).
14728This makes this feature "viral" in linkage; its use in a given crate makes its use required in
14729dependent crates which link to it (including integration tests, which are built as separate crates).
14730
14731## Common linker failures related to missing LLVM libraries
14732
14733### When using `rustc-private` with Official Toolchains
14734
14735When using the `rustc_private` feature with official toolchains distributed via rustup, you'll need to install:
14736
147371. The `rustc-dev` component (provides compiler libraries)
147382. The `llvm-tools` component (provides LLVM libraries needed for linking)
14739
14740You can install these components using `rustup`:
14741
14742```text
14743rustup component add rustc-dev llvm-tools
14744```
14745
14746Without the `llvm-tools` component, you may encounter linking errors like:
14747
14748```text
14749error: linking with `cc` failed: exit status: 1
14750  |
14751  = note: rust-lld: error: unable to find library -lLLVM-{version}
14752```
14753
14754### When using `rustc-private` with Custom Toolchains
14755
14756For custom-built toolchains or environments not using rustup, different configuration may be required:
14757
14758- Ensure LLVM libraries are available in your library search paths
14759- You might need to configure library paths explicitly depending on your LLVM installation
14760"##,
14761        default_severity: Severity::Allow,
14762        warn_since: None,
14763        deny_since: None,
14764    },
14765    Lint {
14766        label: "rustdoc_internals",
14767        description: r##"# `rustdoc_internals`
14768
14769Allows using internal rustdoc features like `doc(keyword)`.
14770
14771The tracking issue for this feature is: [#90418]
14772
14773[#90418]: https://github.com/rust-lang/rust/issues/90418
14774
14775------------------------
14776"##,
14777        default_severity: Severity::Allow,
14778        warn_since: None,
14779        deny_since: None,
14780    },
14781    Lint {
14782        label: "rustdoc_missing_doc_code_examples",
14783        description: r##"# `rustdoc_missing_doc_code_examples`
14784
14785Allows using the `rustdoc::missing_doc_code_examples` lint
14786
14787The tracking issue for this feature is: [#101730]
14788
14789[#101730]: https://github.com/rust-lang/rust/issues/101730
14790
14791------------------------
14792"##,
14793        default_severity: Severity::Allow,
14794        warn_since: None,
14795        deny_since: None,
14796    },
14797    Lint {
14798        label: "rwlock_data_ptr",
14799        description: r##"# `rwlock_data_ptr`
14800
14801
14802
14803The tracking issue for this feature is: [#140368]
14804
14805[#140368]: https://github.com/rust-lang/rust/issues/140368
14806
14807------------------------
14808"##,
14809        default_severity: Severity::Allow,
14810        warn_since: None,
14811        deny_since: None,
14812    },
14813    Lint {
14814        label: "s390x_target_feature",
14815        description: r##"# `s390x_target_feature`
14816
14817Target features on s390x.
14818
14819The tracking issue for this feature is: [#150259]
14820
14821[#150259]: https://github.com/rust-lang/rust/issues/150259
14822
14823------------------------
14824"##,
14825        default_severity: Severity::Allow,
14826        warn_since: None,
14827        deny_since: None,
14828    },
14829    Lint {
14830        label: "sanitize",
14831        description: r##"# `sanitize`
14832
14833The tracking issue for this feature is: [#39699]
14834
14835[#39699]: https://github.com/rust-lang/rust/issues/39699
14836
14837------------------------
14838
14839The `sanitize` attribute can be used to selectively disable or enable sanitizer
14840instrumentation in an annotated function. This might be useful to: avoid
14841instrumentation overhead in a performance critical function, or avoid
14842instrumenting code that contains constructs unsupported by given sanitizer.
14843
14844The precise effect of this annotation depends on particular sanitizer in use.
14845For example, with `sanitize(thread = "off")`, the thread sanitizer will no
14846longer instrument non-atomic store / load operations, but it will instrument
14847atomic operations to avoid reporting false positives and provide meaning full
14848stack traces.
14849
14850This attribute was previously named `no_sanitize`.
14851
14852## Examples
14853
14854``` rust
14855#![feature(sanitize)]
14856
14857#[sanitize(address = "off")]
14858fn foo() {
14859  // ...
14860}
14861```
14862
14863It is also possible to disable sanitizers for entire modules and enable them
14864for single items or functions.
14865
14866```rust
14867#![feature(sanitize)]
14868
14869#[sanitize(address = "off")]
14870mod foo {
14871  fn unsanitized() {
14872    // ...
14873  }
14874
14875  #[sanitize(address = "on")]
14876  fn sanitized() {
14877    // ...
14878  }
14879}
14880```
14881
14882It's also applicable to impl blocks.
14883
14884```rust
14885#![feature(sanitize)]
14886
14887trait MyTrait {
14888  fn foo(&self);
14889  fn bar(&self);
14890}
14891
14892#[sanitize(address = "off")]
14893impl MyTrait for () {
14894  fn foo(&self) {
14895    // ...
14896  }
14897
14898  #[sanitize(address = "on")]
14899  fn bar(&self) {
14900    // ...
14901  }
14902}
14903```
14904"##,
14905        default_severity: Severity::Allow,
14906        warn_since: None,
14907        deny_since: None,
14908    },
14909    Lint {
14910        label: "seek_io_take_position",
14911        description: r##"# `seek_io_take_position`
14912
14913
14914
14915The tracking issue for this feature is: [#97227]
14916
14917[#97227]: https://github.com/rust-lang/rust/issues/97227
14918
14919------------------------
14920"##,
14921        default_severity: Severity::Allow,
14922        warn_since: None,
14923        deny_since: None,
14924    },
14925    Lint {
14926        label: "seek_read_exact_seek_write_all",
14927        description: r##"# `seek_read_exact_seek_write_all`
14928
14929
14930
14931The tracking issue for this feature is: [#162868]
14932
14933[#162868]: https://github.com/rust-lang/rust/issues/162868
14934
14935------------------------
14936"##,
14937        default_severity: Severity::Allow,
14938        warn_since: None,
14939        deny_since: None,
14940    },
14941    Lint {
14942        label: "seek_stream_len",
14943        description: r##"# `seek_stream_len`
14944
14945
14946
14947The tracking issue for this feature is: [#59359]
14948
14949[#59359]: https://github.com/rust-lang/rust/issues/59359
14950
14951------------------------
14952"##,
14953        default_severity: Severity::Allow,
14954        warn_since: None,
14955        deny_since: None,
14956    },
14957    Lint {
14958        label: "set_permissions_nofollow",
14959        description: r##"# `set_permissions_nofollow`
14960
14961
14962
14963The tracking issue for this feature is: [#141607]
14964
14965[#141607]: https://github.com/rust-lang/rust/issues/141607
14966
14967------------------------
14968"##,
14969        default_severity: Severity::Allow,
14970        warn_since: None,
14971        deny_since: None,
14972    },
14973    Lint {
14974        label: "set_ptr_value",
14975        description: r##"# `set_ptr_value`
14976
14977
14978
14979The tracking issue for this feature is: [#75091]
14980
14981[#75091]: https://github.com/rust-lang/rust/issues/75091
14982
14983------------------------
14984"##,
14985        default_severity: Severity::Allow,
14986        warn_since: None,
14987        deny_since: None,
14988    },
14989    Lint {
14990        label: "setgroups",
14991        description: r##"# `setgroups`
14992
14993
14994
14995The tracking issue for this feature is: [#90747]
14996
14997[#90747]: https://github.com/rust-lang/rust/issues/90747
14998
14999------------------------
15000"##,
15001        default_severity: Severity::Allow,
15002        warn_since: None,
15003        deny_since: None,
15004    },
15005    Lint {
15006        label: "sgx_platform",
15007        description: r##"# `sgx_platform`
15008
15009
15010
15011The tracking issue for this feature is: [#56975]
15012
15013[#56975]: https://github.com/rust-lang/rust/issues/56975
15014
15015------------------------
15016"##,
15017        default_severity: Severity::Allow,
15018        warn_since: None,
15019        deny_since: None,
15020    },
15021    Lint {
15022        label: "share_trait",
15023        description: r##"# `share_trait`
15024
15025
15026
15027The tracking issue for this feature is: [#156756]
15028
15029[#156756]: https://github.com/rust-lang/rust/issues/156756
15030
15031------------------------
15032"##,
15033        default_severity: Severity::Allow,
15034        warn_since: None,
15035        deny_since: None,
15036    },
15037    Lint {
15038        label: "signed_bigint_helpers",
15039        description: r##"# `signed_bigint_helpers`
15040
15041
15042
15043The tracking issue for this feature is: [#151989]
15044
15045[#151989]: https://github.com/rust-lang/rust/issues/151989
15046
15047------------------------
15048"##,
15049        default_severity: Severity::Allow,
15050        warn_since: None,
15051        deny_since: None,
15052    },
15053    Lint {
15054        label: "simd_ffi",
15055        description: r##"# `simd_ffi`
15056
15057Allows the use of SIMD types in functions declared in `extern` blocks.
15058
15059The tracking issue for this feature is: [#27731]
15060
15061[#27731]: https://github.com/rust-lang/rust/issues/27731
15062
15063------------------------
15064"##,
15065        default_severity: Severity::Allow,
15066        warn_since: None,
15067        deny_since: None,
15068    },
15069    Lint {
15070        label: "sized_hierarchy",
15071        description: r##"# `sized_hierarchy`
15072
15073Introduces a hierarchy of `Sized` traits (RFC 3729).
15074
15075The tracking issue for this feature is: [#144404]
15076
15077[#144404]: https://github.com/rust-lang/rust/issues/144404
15078
15079------------------------
15080"##,
15081        default_severity: Severity::Allow,
15082        warn_since: None,
15083        deny_since: None,
15084    },
15085    Lint {
15086        label: "sized_type_properties",
15087        description: r##"# `sized_type_properties`
15088
15089
15090
15091This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
15092
15093------------------------
15094"##,
15095        default_severity: Severity::Allow,
15096        warn_since: None,
15097        deny_since: None,
15098    },
15099    Lint {
15100        label: "slice_concat_ext",
15101        description: r##"# `slice_concat_ext`
15102
15103
15104
15105The tracking issue for this feature is: [#27747]
15106
15107[#27747]: https://github.com/rust-lang/rust/issues/27747
15108
15109------------------------
15110"##,
15111        default_severity: Severity::Allow,
15112        warn_since: None,
15113        deny_since: None,
15114    },
15115    Lint {
15116        label: "slice_concat_trait",
15117        description: r##"# `slice_concat_trait`
15118
15119
15120
15121The tracking issue for this feature is: [#27747]
15122
15123[#27747]: https://github.com/rust-lang/rust/issues/27747
15124
15125------------------------
15126"##,
15127        default_severity: Severity::Allow,
15128        warn_since: None,
15129        deny_since: None,
15130    },
15131    Lint {
15132        label: "slice_from_ptr_range",
15133        description: r##"# `slice_from_ptr_range`
15134
15135
15136
15137The tracking issue for this feature is: [#89792]
15138
15139[#89792]: https://github.com/rust-lang/rust/issues/89792
15140
15141------------------------
15142"##,
15143        default_severity: Severity::Allow,
15144        warn_since: None,
15145        deny_since: None,
15146    },
15147    Lint {
15148        label: "slice_index_methods",
15149        description: r##"# `slice_index_methods`
15150
15151
15152
15153This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
15154
15155------------------------
15156"##,
15157        default_severity: Severity::Allow,
15158        warn_since: None,
15159        deny_since: None,
15160    },
15161    Lint {
15162        label: "slice_internals",
15163        description: r##"# `slice_internals`
15164
15165
15166
15167This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
15168
15169------------------------
15170"##,
15171        default_severity: Severity::Allow,
15172        warn_since: None,
15173        deny_since: None,
15174    },
15175    Lint {
15176        label: "slice_iter_mut_as_mut_slice",
15177        description: r##"# `slice_iter_mut_as_mut_slice`
15178
15179
15180
15181The tracking issue for this feature is: [#93079]
15182
15183[#93079]: https://github.com/rust-lang/rust/issues/93079
15184
15185------------------------
15186"##,
15187        default_severity: Severity::Allow,
15188        warn_since: None,
15189        deny_since: None,
15190    },
15191    Lint {
15192        label: "slice_partial_sort_unstable",
15193        description: r##"# `slice_partial_sort_unstable`
15194
15195
15196
15197The tracking issue for this feature is: [#149046]
15198
15199[#149046]: https://github.com/rust-lang/rust/issues/149046
15200
15201------------------------
15202"##,
15203        default_severity: Severity::Allow,
15204        warn_since: None,
15205        deny_since: None,
15206    },
15207    Lint {
15208        label: "slice_partition_dedup",
15209        description: r##"# `slice_partition_dedup`
15210
15211
15212
15213The tracking issue for this feature is: [#54279]
15214
15215[#54279]: https://github.com/rust-lang/rust/issues/54279
15216
15217------------------------
15218"##,
15219        default_severity: Severity::Allow,
15220        warn_since: None,
15221        deny_since: None,
15222    },
15223    Lint {
15224        label: "slice_pattern",
15225        description: r##"# `slice_pattern`
15226
15227
15228
15229The tracking issue for this feature is: [#56345]
15230
15231[#56345]: https://github.com/rust-lang/rust/issues/56345
15232
15233------------------------
15234"##,
15235        default_severity: Severity::Allow,
15236        warn_since: None,
15237        deny_since: None,
15238    },
15239    Lint {
15240        label: "slice_ptr_get",
15241        description: r##"# `slice_ptr_get`
15242
15243
15244
15245The tracking issue for this feature is: [#74265]
15246
15247[#74265]: https://github.com/rust-lang/rust/issues/74265
15248
15249------------------------
15250"##,
15251        default_severity: Severity::Allow,
15252        warn_since: None,
15253        deny_since: None,
15254    },
15255    Lint {
15256        label: "slice_range",
15257        description: r##"# `slice_range`
15258
15259
15260
15261The tracking issue for this feature is: [#76393]
15262
15263[#76393]: https://github.com/rust-lang/rust/issues/76393
15264
15265------------------------
15266"##,
15267        default_severity: Severity::Allow,
15268        warn_since: None,
15269        deny_since: None,
15270    },
15271    Lint {
15272        label: "slice_shift",
15273        description: r##"# `slice_shift`
15274
15275
15276
15277The tracking issue for this feature is: [#151772]
15278
15279[#151772]: https://github.com/rust-lang/rust/issues/151772
15280
15281------------------------
15282"##,
15283        default_severity: Severity::Allow,
15284        warn_since: None,
15285        deny_since: None,
15286    },
15287    Lint {
15288        label: "slice_split_once",
15289        description: r##"# `slice_split_once`
15290
15291
15292
15293The tracking issue for this feature is: [#112811]
15294
15295[#112811]: https://github.com/rust-lang/rust/issues/112811
15296
15297------------------------
15298"##,
15299        default_severity: Severity::Allow,
15300        warn_since: None,
15301        deny_since: None,
15302    },
15303    Lint {
15304        label: "slice_swap_unchecked",
15305        description: r##"# `slice_swap_unchecked`
15306
15307
15308
15309The tracking issue for this feature is: [#88539]
15310
15311[#88539]: https://github.com/rust-lang/rust/issues/88539
15312
15313------------------------
15314"##,
15315        default_severity: Severity::Allow,
15316        warn_since: None,
15317        deny_since: None,
15318    },
15319    Lint {
15320        label: "sliceindex_wrappers",
15321        description: r##"# `sliceindex_wrappers`
15322
15323
15324
15325The tracking issue for this feature is: [#146179]
15326
15327[#146179]: https://github.com/rust-lang/rust/issues/146179
15328
15329------------------------
15330"##,
15331        default_severity: Severity::Allow,
15332        warn_since: None,
15333        deny_since: None,
15334    },
15335    Lint {
15336        label: "smart_pointer_try_map",
15337        description: r##"# `smart_pointer_try_map`
15338
15339
15340
15341The tracking issue for this feature is: [#144419]
15342
15343[#144419]: https://github.com/rust-lang/rust/issues/144419
15344
15345------------------------
15346"##,
15347        default_severity: Severity::Allow,
15348        warn_since: None,
15349        deny_since: None,
15350    },
15351    Lint {
15352        label: "solid_ext",
15353        description: r##"# `solid_ext`
15354
15355
15356
15357This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
15358
15359------------------------
15360"##,
15361        default_severity: Severity::Allow,
15362        warn_since: None,
15363        deny_since: None,
15364    },
15365    Lint {
15366        label: "sort_floats",
15367        description: r##"# `sort_floats`
15368
15369
15370
15371The tracking issue for this feature is: [#93396]
15372
15373[#93396]: https://github.com/rust-lang/rust/issues/93396
15374
15375------------------------
15376"##,
15377        default_severity: Severity::Allow,
15378        warn_since: None,
15379        deny_since: None,
15380    },
15381    Lint {
15382        label: "sparc_target_feature",
15383        description: r##"# `sparc_target_feature`
15384
15385Target features on sparc.
15386
15387The tracking issue for this feature is: [#132783]
15388
15389[#132783]: https://github.com/rust-lang/rust/issues/132783
15390
15391------------------------
15392"##,
15393        default_severity: Severity::Allow,
15394        warn_since: None,
15395        deny_since: None,
15396    },
15397    Lint {
15398        label: "specialization",
15399        description: r##"# `specialization`
15400
15401Allows specialization of implementations (RFC 1210).
15402
15403The tracking issue for this feature is: [#31844]
15404
15405[#31844]: https://github.com/rust-lang/rust/issues/31844
15406
15407------------------------
15408"##,
15409        default_severity: Severity::Allow,
15410        warn_since: None,
15411        deny_since: None,
15412    },
15413    Lint {
15414        label: "splat",
15415        description: r##"# `splat`
15416
15417Experimental "splatting" of function call arguments at the call site. e.g. `foo(a, b, c)` calls `#[rustc_splat] fn foo((a: A, b: B, c: C))`.
15418
15419The tracking issue for this feature is: [#153629]
15420
15421[#153629]: https://github.com/rust-lang/rust/issues/153629
15422
15423------------------------
15424"##,
15425        default_severity: Severity::Allow,
15426        warn_since: None,
15427        deny_since: None,
15428    },
15429    Lint {
15430        label: "split_array",
15431        description: r##"# `split_array`
15432
15433
15434
15435The tracking issue for this feature is: [#90091]
15436
15437[#90091]: https://github.com/rust-lang/rust/issues/90091
15438
15439------------------------
15440"##,
15441        default_severity: Severity::Allow,
15442        warn_since: None,
15443        deny_since: None,
15444    },
15445    Lint {
15446        label: "split_as_slice",
15447        description: r##"# `split_as_slice`
15448
15449
15450
15451The tracking issue for this feature is: [#96137]
15452
15453[#96137]: https://github.com/rust-lang/rust/issues/96137
15454
15455------------------------
15456"##,
15457        default_severity: Severity::Allow,
15458        warn_since: None,
15459        deny_since: None,
15460    },
15461    Lint {
15462        label: "staged_api",
15463        description: r##"# `staged_api`
15464
15465Allows using the `#[stable]` and `#[unstable]` attributes.
15466
15467This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
15468
15469------------------------
15470"##,
15471        default_severity: Severity::Allow,
15472        warn_since: None,
15473        deny_since: None,
15474    },
15475    Lint {
15476        label: "static_align",
15477        description: r##"# `static_align`
15478
15479Allows using `#[rustc_align_static(...)]` on static items.
15480
15481The tracking issue for this feature is: [#146177]
15482
15483[#146177]: https://github.com/rust-lang/rust/issues/146177
15484
15485------------------------
15486"##,
15487        default_severity: Severity::Allow,
15488        warn_since: None,
15489        deny_since: None,
15490    },
15491    Lint {
15492        label: "std_internals",
15493        description: r##"# `std_internals`
15494
15495
15496
15497This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
15498
15499------------------------
15500"##,
15501        default_severity: Severity::Allow,
15502        warn_since: None,
15503        deny_since: None,
15504    },
15505    Lint {
15506        label: "stdarch_aarch64_feature_detection",
15507        description: r##"# `stdarch_aarch64_feature_detection`
15508
15509
15510
15511The tracking issue for this feature is: [#127764]
15512
15513[#127764]: https://github.com/rust-lang/rust/issues/127764
15514
15515------------------------
15516"##,
15517        default_severity: Severity::Allow,
15518        warn_since: None,
15519        deny_since: None,
15520    },
15521    Lint {
15522        label: "stdarch_arm_feature_detection",
15523        description: r##"# `stdarch_arm_feature_detection`
15524
15525
15526
15527The tracking issue for this feature is: [#111190]
15528
15529[#111190]: https://github.com/rust-lang/rust/issues/111190
15530
15531------------------------
15532"##,
15533        default_severity: Severity::Allow,
15534        warn_since: None,
15535        deny_since: None,
15536    },
15537    Lint {
15538        label: "stdarch_internal",
15539        description: r##"# `stdarch_internal`
15540
15541
15542
15543This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
15544
15545------------------------
15546"##,
15547        default_severity: Severity::Allow,
15548        warn_since: None,
15549        deny_since: None,
15550    },
15551    Lint {
15552        label: "stdarch_loongarch_feature_detection",
15553        description: r##"# `stdarch_loongarch_feature_detection`
15554
15555
15556
15557The tracking issue for this feature is: [#117425]
15558
15559[#117425]: https://github.com/rust-lang/rust/issues/117425
15560
15561------------------------
15562"##,
15563        default_severity: Severity::Allow,
15564        warn_since: None,
15565        deny_since: None,
15566    },
15567    Lint {
15568        label: "stdarch_mips_feature_detection",
15569        description: r##"# `stdarch_mips_feature_detection`
15570
15571
15572
15573The tracking issue for this feature is: [#111188]
15574
15575[#111188]: https://github.com/rust-lang/rust/issues/111188
15576
15577------------------------
15578"##,
15579        default_severity: Severity::Allow,
15580        warn_since: None,
15581        deny_since: None,
15582    },
15583    Lint {
15584        label: "stdarch_powerpc_feature_detection",
15585        description: r##"# `stdarch_powerpc_feature_detection`
15586
15587
15588
15589The tracking issue for this feature is: [#111191]
15590
15591[#111191]: https://github.com/rust-lang/rust/issues/111191
15592
15593------------------------
15594"##,
15595        default_severity: Severity::Allow,
15596        warn_since: None,
15597        deny_since: None,
15598    },
15599    Lint {
15600        label: "stdarch_riscv_feature_detection",
15601        description: r##"# `stdarch_riscv_feature_detection`
15602
15603
15604
15605The tracking issue for this feature is: [#111192]
15606
15607[#111192]: https://github.com/rust-lang/rust/issues/111192
15608
15609------------------------
15610"##,
15611        default_severity: Severity::Allow,
15612        warn_since: None,
15613        deny_since: None,
15614    },
15615    Lint {
15616        label: "stdio_fd_consts",
15617        description: r##"# `stdio_fd_consts`
15618
15619
15620
15621The tracking issue for this feature is: [#150836]
15622
15623[#150836]: https://github.com/rust-lang/rust/issues/150836
15624
15625------------------------
15626"##,
15627        default_severity: Severity::Allow,
15628        warn_since: None,
15629        deny_since: None,
15630    },
15631    Lint {
15632        label: "stdio_makes_pipe",
15633        description: r##"# `stdio_makes_pipe`
15634
15635
15636
15637The tracking issue for this feature is: [#98288]
15638
15639[#98288]: https://github.com/rust-lang/rust/issues/98288
15640
15641------------------------
15642"##,
15643        default_severity: Severity::Allow,
15644        warn_since: None,
15645        deny_since: None,
15646    },
15647    Lint {
15648        label: "stdio_swap",
15649        description: r##"# `stdio_swap`
15650
15651
15652
15653The tracking issue for this feature is: [#150667]
15654
15655[#150667]: https://github.com/rust-lang/rust/issues/150667
15656
15657------------------------
15658"##,
15659        default_severity: Severity::Allow,
15660        warn_since: None,
15661        deny_since: None,
15662    },
15663    Lint {
15664        label: "step_trait",
15665        description: r##"# `step_trait`
15666
15667
15668
15669The tracking issue for this feature is: [#42168]
15670
15671[#42168]: https://github.com/rust-lang/rust/issues/42168
15672
15673------------------------
15674"##,
15675        default_severity: Severity::Allow,
15676        warn_since: None,
15677        deny_since: None,
15678    },
15679    Lint {
15680        label: "stmt_expr_attributes",
15681        description: r##"# `stmt_expr_attributes`
15682
15683Allows attributes on expressions and non-item statements.
15684
15685The tracking issue for this feature is: [#15701]
15686
15687[#15701]: https://github.com/rust-lang/rust/issues/15701
15688
15689------------------------
15690"##,
15691        default_severity: Severity::Allow,
15692        warn_since: None,
15693        deny_since: None,
15694    },
15695    Lint {
15696        label: "str_as_str",
15697        description: r##"# `str_as_str`
15698
15699
15700
15701The tracking issue for this feature is: [#130366]
15702
15703[#130366]: https://github.com/rust-lang/rust/issues/130366
15704
15705------------------------
15706"##,
15707        default_severity: Severity::Allow,
15708        warn_since: None,
15709        deny_since: None,
15710    },
15711    Lint {
15712        label: "str_copy_from_str",
15713        description: r##"# `str_copy_from_str`
15714
15715
15716
15717The tracking issue for this feature is: [#159841]
15718
15719[#159841]: https://github.com/rust-lang/rust/issues/159841
15720
15721------------------------
15722"##,
15723        default_severity: Severity::Allow,
15724        warn_since: None,
15725        deny_since: None,
15726    },
15727    Lint {
15728        label: "str_from_raw_parts",
15729        description: r##"# `str_from_raw_parts`
15730
15731
15732
15733The tracking issue for this feature is: [#119206]
15734
15735[#119206]: https://github.com/rust-lang/rust/issues/119206
15736
15737------------------------
15738"##,
15739        default_severity: Severity::Allow,
15740        warn_since: None,
15741        deny_since: None,
15742    },
15743    Lint {
15744        label: "str_internals",
15745        description: r##"# `str_internals`
15746
15747This feature is internal to the Rust compiler and is not intended for general use.
15748
15749------------------------
15750"##,
15751        default_severity: Severity::Allow,
15752        warn_since: None,
15753        deny_since: None,
15754    },
15755    Lint {
15756        label: "str_lines_remainder",
15757        description: r##"# `str_lines_remainder`
15758
15759
15760
15761The tracking issue for this feature is: [#77998]
15762
15763[#77998]: https://github.com/rust-lang/rust/issues/77998
15764
15765------------------------
15766"##,
15767        default_severity: Severity::Allow,
15768        warn_since: None,
15769        deny_since: None,
15770    },
15771    Lint {
15772        label: "str_split_inclusive_remainder",
15773        description: r##"# `str_split_inclusive_remainder`
15774
15775
15776
15777The tracking issue for this feature is: [#77998]
15778
15779[#77998]: https://github.com/rust-lang/rust/issues/77998
15780
15781------------------------
15782"##,
15783        default_severity: Severity::Allow,
15784        warn_since: None,
15785        deny_since: None,
15786    },
15787    Lint {
15788        label: "str_split_remainder",
15789        description: r##"# `str_split_remainder`
15790
15791
15792
15793The tracking issue for this feature is: [#77998]
15794
15795[#77998]: https://github.com/rust-lang/rust/issues/77998
15796
15797------------------------
15798"##,
15799        default_severity: Severity::Allow,
15800        warn_since: None,
15801        deny_since: None,
15802    },
15803    Lint {
15804        label: "str_split_whitespace_remainder",
15805        description: r##"# `str_split_whitespace_remainder`
15806
15807
15808
15809The tracking issue for this feature is: [#77998]
15810
15811[#77998]: https://github.com/rust-lang/rust/issues/77998
15812
15813------------------------
15814"##,
15815        default_severity: Severity::Allow,
15816        warn_since: None,
15817        deny_since: None,
15818    },
15819    Lint {
15820        label: "strict_provenance_lints",
15821        description: r##"# `strict_provenance_lints`
15822
15823The tracking issue for this feature is: [#130351]
15824
15825[#130351]: https://github.com/rust-lang/rust/issues/130351
15826-----
15827
15828The `strict_provenance_lints` feature allows to enable the `implicit_provenance_casts` lint.
15829
15830## Example
15831
15832```rust
15833#![feature(strict_provenance_lints)]
15834#![warn(implicit_provenance_casts)]
15835
15836fn main() {
15837    let dangling = 16_usize as *const u8;
15838    //~^ WARNING: cast from `usize` to `*const u8` implicitly relies on exposed provenance
15839    let _addr = dangling as usize;
15840    //~^ WARNING: cast from `*const u8` to `usize` implicitly exposes pointer provenance
15841}
15842```
15843"##,
15844        default_severity: Severity::Allow,
15845        warn_since: None,
15846        deny_since: None,
15847    },
15848    Lint {
15849        label: "string_into_chars",
15850        description: r##"# `string_into_chars`
15851
15852
15853
15854The tracking issue for this feature is: [#133125]
15855
15856[#133125]: https://github.com/rust-lang/rust/issues/133125
15857
15858------------------------
15859"##,
15860        default_severity: Severity::Allow,
15861        warn_since: None,
15862        deny_since: None,
15863    },
15864    Lint {
15865        label: "string_remove_matches",
15866        description: r##"# `string_remove_matches`
15867
15868
15869
15870The tracking issue for this feature is: [#72826]
15871
15872[#72826]: https://github.com/rust-lang/rust/issues/72826
15873
15874------------------------
15875"##,
15876        default_severity: Severity::Allow,
15877        warn_since: None,
15878        deny_since: None,
15879    },
15880    Lint {
15881        label: "string_replace_in_place",
15882        description: r##"# `string_replace_in_place`
15883
15884
15885
15886The tracking issue for this feature is: [#147949]
15887
15888[#147949]: https://github.com/rust-lang/rust/issues/147949
15889
15890------------------------
15891"##,
15892        default_severity: Severity::Allow,
15893        warn_since: None,
15894        deny_since: None,
15895    },
15896    Lint {
15897        label: "structural_match",
15898        description: r##"# `structural_match`
15899
15900Allows using `#[structural_match]` which indicates that a type is structurally matchable. FIXME: Subsumed by trait `StructuralPartialEq`, cannot move to removed until a library feature with the same name exists.
15901
15902The tracking issue for this feature is: [#31434]
15903
15904[#31434]: https://github.com/rust-lang/rust/issues/31434
15905
15906------------------------
15907"##,
15908        default_severity: Severity::Allow,
15909        warn_since: None,
15910        deny_since: None,
15911    },
15912    Lint {
15913        label: "super_let",
15914        description: r##"# `super_let`
15915
15916Allows `super let` statements.
15917
15918The tracking issue for this feature is: [#139076]
15919
15920[#139076]: https://github.com/rust-lang/rust/issues/139076
15921
15922------------------------
15923"##,
15924        default_severity: Severity::Allow,
15925        warn_since: None,
15926        deny_since: None,
15927    },
15928    Lint {
15929        label: "supertrait_item_shadowing",
15930        description: r##"# `supertrait_item_shadowing`
15931
15932Allows subtrait items to shadow supertrait items.
15933
15934The tracking issue for this feature is: [#89151]
15935
15936[#89151]: https://github.com/rust-lang/rust/issues/89151
15937
15938------------------------
15939"##,
15940        default_severity: Severity::Allow,
15941        warn_since: None,
15942        deny_since: None,
15943    },
15944    Lint {
15945        label: "sync_nonpoison",
15946        description: r##"# `sync_nonpoison`
15947
15948
15949
15950The tracking issue for this feature is: [#134645]
15951
15952[#134645]: https://github.com/rust-lang/rust/issues/134645
15953
15954------------------------
15955"##,
15956        default_severity: Severity::Allow,
15957        warn_since: None,
15958        deny_since: None,
15959    },
15960    Lint {
15961        label: "sync_poison_mod",
15962        description: r##"# `sync_poison_mod`
15963
15964
15965
15966The tracking issue for this feature is: [#134646]
15967
15968[#134646]: https://github.com/rust-lang/rust/issues/134646
15969
15970------------------------
15971"##,
15972        default_severity: Severity::Allow,
15973        warn_since: None,
15974        deny_since: None,
15975    },
15976    Lint {
15977        label: "sync_unsafe_cell",
15978        description: r##"# `sync_unsafe_cell`
15979
15980
15981
15982The tracking issue for this feature is: [#95439]
15983
15984[#95439]: https://github.com/rust-lang/rust/issues/95439
15985
15986------------------------
15987"##,
15988        default_severity: Severity::Allow,
15989        warn_since: None,
15990        deny_since: None,
15991    },
15992    Lint {
15993        label: "tcp_deferaccept",
15994        description: r##"# `tcp_deferaccept`
15995
15996
15997
15998The tracking issue for this feature is: [#119639]
15999
16000[#119639]: https://github.com/rust-lang/rust/issues/119639
16001
16002------------------------
16003"##,
16004        default_severity: Severity::Allow,
16005        warn_since: None,
16006        deny_since: None,
16007    },
16008    Lint {
16009        label: "tcp_keepalive",
16010        description: r##"# `tcp_keepalive`
16011
16012
16013
16014The tracking issue for this feature is: [#155889]
16015
16016[#155889]: https://github.com/rust-lang/rust/issues/155889
16017
16018------------------------
16019"##,
16020        default_severity: Severity::Allow,
16021        warn_since: None,
16022        deny_since: None,
16023    },
16024    Lint {
16025        label: "tcp_linger",
16026        description: r##"# `tcp_linger`
16027
16028
16029
16030The tracking issue for this feature is: [#88494]
16031
16032[#88494]: https://github.com/rust-lang/rust/issues/88494
16033
16034------------------------
16035"##,
16036        default_severity: Severity::Allow,
16037        warn_since: None,
16038        deny_since: None,
16039    },
16040    Lint {
16041        label: "tcplistener_into_incoming",
16042        description: r##"# `tcplistener_into_incoming`
16043
16044
16045
16046The tracking issue for this feature is: [#88373]
16047
16048[#88373]: https://github.com/rust-lang/rust/issues/88373
16049
16050------------------------
16051"##,
16052        default_severity: Severity::Allow,
16053        warn_since: None,
16054        deny_since: None,
16055    },
16056    Lint {
16057        label: "temporary_niche_types",
16058        description: r##"# `temporary_niche_types`
16059
16060
16061
16062This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
16063
16064------------------------
16065"##,
16066        default_severity: Severity::Allow,
16067        warn_since: None,
16068        deny_since: None,
16069    },
16070    Lint {
16071        label: "test",
16072        description: r##"# `test`
16073
16074The tracking issue for this feature is: None.
16075
16076------------------------
16077
16078The internals of the `test` crate are unstable, behind the `test` flag.  The
16079most widely used part of the `test` crate are benchmark tests, which can test
16080the performance of your code.  Let's make our `src/lib.rs` look like this
16081(comments elided):
16082
16083```rust,no_run
16084#![feature(test)]
16085
16086extern crate test;
16087
16088pub fn add_two(a: i32) -> i32 {
16089    a + 2
16090}
16091
16092#[cfg(test)]
16093mod tests {
16094    use super::*;
16095    use test::Bencher;
16096
16097    #[test]
16098    fn it_works() {
16099        assert_eq!(4, add_two(2));
16100    }
16101
16102    #[bench]
16103    fn bench_add_two(b: &mut Bencher) {
16104        b.iter(|| add_two(2));
16105    }
16106}
16107```
16108
16109Note the `test` feature gate, which enables this unstable feature.
16110
16111We've imported the `test` crate, which contains our benchmarking support.
16112We have a new function as well, with the `bench` attribute. Unlike regular
16113tests, which take no arguments, benchmark tests take a `&mut Bencher`. This
16114`Bencher` provides an `iter` method, which takes a closure. This closure
16115contains the code we'd like to benchmark.
16116
16117We can run benchmark tests with `cargo bench`:
16118
16119```bash
16120$ cargo bench
16121   Compiling adder v0.0.1 (file:///home/steve/tmp/adder)
16122     Running target/release/adder-91b3e234d4ed382a
16123
16124running 2 tests
16125test tests::it_works ... ignored
16126test tests::bench_add_two ... bench:         1 ns/iter (+/- 0)
16127
16128test result: ok. 0 passed; 0 failed; 1 ignored; 1 measured
16129```
16130
16131Our non-benchmark test was ignored. You may have noticed that `cargo bench`
16132takes a bit longer than `cargo test`. This is because Rust runs our benchmark
16133a number of times, and then takes the average. Because we're doing so little
16134work in this example, we have a `1 ns/iter (+/- 0)`, but this would show
16135the variance if there was one.
16136
16137Advice on writing benchmarks:
16138
16139
16140* Move setup code outside the `iter` loop; only put the part you want to measure inside
16141* Make the code do "the same thing" on each iteration; do not accumulate or change state
16142* Make the outer function idempotent too; the benchmark runner is likely to run
16143  it many times
16144*  Make the inner `iter` loop short and fast so benchmark runs are fast and the
16145   calibrator can adjust the run-length at fine resolution
16146* Make the code in the `iter` loop do something simple, to assist in pinpointing
16147  performance improvements (or regressions)
16148
16149## Gotcha: optimizations
16150
16151There's another tricky part to writing benchmarks: benchmarks compiled with
16152optimizations activated can be dramatically changed by the optimizer so that
16153the benchmark is no longer benchmarking what one expects. For example, the
16154compiler might recognize that some calculation has no external effects and
16155remove it entirely.
16156
16157```rust,no_run
16158#![feature(test)]
16159
16160extern crate test;
16161use test::Bencher;
16162
16163#[bench]
16164fn bench_xor_1000_ints(b: &mut Bencher) {
16165    b.iter(|| {
16166        (0..1000).fold(0, |old, new| old ^ new);
16167    });
16168}
16169```
16170
16171gives the following results
16172
16173```text
16174running 1 test
16175test bench_xor_1000_ints ... bench:         0 ns/iter (+/- 0)
16176
16177test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
16178```
16179
16180The benchmarking runner offers two ways to avoid this. Either, the closure that
16181the `iter` method receives can return an arbitrary value which forces the
16182optimizer to consider the result used and ensures it cannot remove the
16183computation entirely. This could be done for the example above by adjusting the
16184`b.iter` call to
16185
16186```rust
16187# struct X;
16188# impl X { fn iter<T, F>(&self, _: F) where F: FnMut() -> T {} } let b = X;
16189b.iter(|| {
16190    // Note lack of `;` (could also use an explicit `return`).
16191    (0..1000).fold(0, |old, new| old ^ new)
16192});
16193```
16194
16195Or, the other option is to call the generic `test::black_box` function, which
16196is an opaque "black box" to the optimizer and so forces it to consider any
16197argument as used.
16198
16199```rust
16200#![feature(test)]
16201
16202extern crate test;
16203
16204# fn main() {
16205# struct X;
16206# impl X { fn iter<T, F>(&self, _: F) where F: FnMut() -> T {} } let b = X;
16207b.iter(|| {
16208    let n = test::black_box(1000);
16209
16210    (0..n).fold(0, |a, b| a ^ b)
16211})
16212# }
16213```
16214
16215Neither of these read or modify the value, and are very cheap for small values.
16216Larger values can be passed indirectly to reduce overhead (e.g.
16217`black_box(&huge_struct)`).
16218
16219Performing either of the above changes gives the following benchmarking results
16220
16221```text
16222running 1 test
16223test bench_xor_1000_ints ... bench:       131 ns/iter (+/- 3)
16224
16225test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
16226```
16227
16228However, the optimizer can still modify a testcase in an undesirable manner
16229even when using either of the above.
16230"##,
16231        default_severity: Severity::Allow,
16232        warn_since: None,
16233        deny_since: None,
16234    },
16235    Lint {
16236        label: "test_binder_constraints",
16237        description: r##"# `test_binder_constraints`
16238
16239Perma-unstable, only used in the test suite for binders (`for<'a>`).
16240
16241This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
16242
16243------------------------
16244"##,
16245        default_severity: Severity::Allow,
16246        warn_since: None,
16247        deny_since: None,
16248    },
16249    Lint {
16250        label: "test_incomplete_feature",
16251        description: r##"# `test_incomplete_feature`
16252
16253Perma-unstable, only used to test the `incomplete_features` lint.
16254
16255This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
16256
16257------------------------
16258"##,
16259        default_severity: Severity::Allow,
16260        warn_since: None,
16261        deny_since: None,
16262    },
16263    Lint {
16264        label: "test_unstable_lint",
16265        description: r##"# `test_unstable_lint`
16266
16267Added for testing unstable lints; perma-unstable.
16268
16269This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
16270
16271------------------------
16272"##,
16273        default_severity: Severity::Allow,
16274        warn_since: None,
16275        deny_since: None,
16276    },
16277    Lint {
16278        label: "thin_box",
16279        description: r##"# `thin_box`
16280
16281
16282
16283The tracking issue for this feature is: [#92791]
16284
16285[#92791]: https://github.com/rust-lang/rust/issues/92791
16286
16287------------------------
16288"##,
16289        default_severity: Severity::Allow,
16290        warn_since: None,
16291        deny_since: None,
16292    },
16293    Lint {
16294        label: "thread_id_value",
16295        description: r##"# `thread_id_value`
16296
16297
16298
16299The tracking issue for this feature is: [#67939]
16300
16301[#67939]: https://github.com/rust-lang/rust/issues/67939
16302
16303------------------------
16304"##,
16305        default_severity: Severity::Allow,
16306        warn_since: None,
16307        deny_since: None,
16308    },
16309    Lint {
16310        label: "thread_local",
16311        description: r##"# `thread_local`
16312
16313Allows using `#[thread_local]` on `static` items.
16314
16315The tracking issue for this feature is: [#29594]
16316
16317[#29594]: https://github.com/rust-lang/rust/issues/29594
16318
16319------------------------
16320"##,
16321        default_severity: Severity::Allow,
16322        warn_since: None,
16323        deny_since: None,
16324    },
16325    Lint {
16326        label: "thread_local_internals",
16327        description: r##"# `thread_local_internals`
16328
16329This feature is internal to the Rust compiler and is not intended for general use.
16330
16331------------------------
16332"##,
16333        default_severity: Severity::Allow,
16334        warn_since: None,
16335        deny_since: None,
16336    },
16337    Lint {
16338        label: "thread_os_id",
16339        description: r##"# `thread_os_id`
16340
16341
16342
16343The tracking issue for this feature is: [#160215]
16344
16345[#160215]: https://github.com/rust-lang/rust/issues/160215
16346
16347------------------------
16348"##,
16349        default_severity: Severity::Allow,
16350        warn_since: None,
16351        deny_since: None,
16352    },
16353    Lint {
16354        label: "thread_raw",
16355        description: r##"# `thread_raw`
16356
16357
16358
16359The tracking issue for this feature is: [#97523]
16360
16361[#97523]: https://github.com/rust-lang/rust/issues/97523
16362
16363------------------------
16364"##,
16365        default_severity: Severity::Allow,
16366        warn_since: None,
16367        deny_since: None,
16368    },
16369    Lint {
16370        label: "thread_sleep_until",
16371        description: r##"# `thread_sleep_until`
16372
16373
16374
16375The tracking issue for this feature is: [#113752]
16376
16377[#113752]: https://github.com/rust-lang/rust/issues/113752
16378
16379------------------------
16380"##,
16381        default_severity: Severity::Allow,
16382        warn_since: None,
16383        deny_since: None,
16384    },
16385    Lint {
16386        label: "thread_spawn_hook",
16387        description: r##"# `thread_spawn_hook`
16388
16389
16390
16391The tracking issue for this feature is: [#132951]
16392
16393[#132951]: https://github.com/rust-lang/rust/issues/132951
16394
16395------------------------
16396"##,
16397        default_severity: Severity::Allow,
16398        warn_since: None,
16399        deny_since: None,
16400    },
16401    Lint {
16402        label: "time_saturating_systemtime",
16403        description: r##"# `time_saturating_systemtime`
16404
16405
16406
16407The tracking issue for this feature is: [#151199]
16408
16409[#151199]: https://github.com/rust-lang/rust/issues/151199
16410
16411------------------------
16412"##,
16413        default_severity: Severity::Allow,
16414        warn_since: None,
16415        deny_since: None,
16416    },
16417    Lint {
16418        label: "time_systemtime_limits",
16419        description: r##"# `time_systemtime_limits`
16420
16421
16422
16423The tracking issue for this feature is: [#149067]
16424
16425[#149067]: https://github.com/rust-lang/rust/issues/149067
16426
16427------------------------
16428"##,
16429        default_severity: Severity::Allow,
16430        warn_since: None,
16431        deny_since: None,
16432    },
16433    Lint {
16434        label: "titlecase",
16435        description: r##"# `titlecase`
16436
16437
16438
16439The tracking issue for this feature is: [#153892]
16440
16441[#153892]: https://github.com/rust-lang/rust/issues/153892
16442
16443------------------------
16444"##,
16445        default_severity: Severity::Allow,
16446        warn_since: None,
16447        deny_since: None,
16448    },
16449    Lint {
16450        label: "trace_macros",
16451        description: r##"# `trace_macros`
16452
16453The tracking issue for this feature is [#29598].
16454
16455[#29598]: https://github.com/rust-lang/rust/issues/29598
16456
16457------------------------
16458
16459With `trace_macros` you can trace the expansion of macros in your code.
16460
16461## Examples
16462
16463```rust
16464#![feature(trace_macros)]
16465
16466fn main() {
16467    trace_macros!(true);
16468    println!("Hello, Rust!");
16469    trace_macros!(false);
16470}
16471```
16472
16473The `cargo build` output:
16474
16475```txt
16476note: trace_macro
16477 --> src/main.rs:5:5
16478  |
164795 |     println!("Hello, Rust!");
16480  |     ^^^^^^^^^^^^^^^^^^^^^^^^^
16481  |
16482  = note: expanding `println! { "Hello, Rust!" }`
16483  = note: to `print ! ( concat ! ( "Hello, Rust!" , "\n" ) )`
16484  = note: expanding `print! { concat ! ( "Hello, Rust!" , "\n" ) }`
16485  = note: to `$crate :: io :: _print ( format_args ! ( concat ! ( "Hello, Rust!" , "\n" ) )
16486          )`
16487
16488    Finished dev [unoptimized + debuginfo] target(s) in 0.60 secs
16489```
16490"##,
16491        default_severity: Severity::Allow,
16492        warn_since: None,
16493        deny_since: None,
16494    },
16495    Lint {
16496        label: "trait_alias",
16497        description: r##"# `trait_alias`
16498
16499The tracking issue for this feature is: [#41517]
16500
16501[#41517]: https://github.com/rust-lang/rust/issues/41517
16502
16503------------------------
16504
16505The `trait_alias` feature adds support for trait aliases. These allow aliases
16506to be created for one or more traits (currently just a single regular trait plus
16507any number of auto-traits), and used wherever traits would normally be used as
16508either bounds or trait objects.
16509
16510```rust
16511#![feature(trait_alias)]
16512
16513trait Foo = std::fmt::Debug + Send;
16514trait Bar = Foo + Sync;
16515
16516// Use trait alias as bound on type parameter.
16517fn foo<T: Foo>(v: &T) {
16518    println!("{:?}", v);
16519}
16520
16521pub fn main() {
16522    foo(&1);
16523
16524    // Use trait alias for trait objects.
16525    let a: &dyn Bar = &123;
16526    println!("{:?}", a);
16527    let b = Box::new(456) as Box<dyn Foo>;
16528    println!("{:?}", b);
16529}
16530```
16531"##,
16532        default_severity: Severity::Allow,
16533        warn_since: None,
16534        deny_since: None,
16535    },
16536    Lint {
16537        label: "transmutability",
16538        description: r##"# `transmutability`
16539
16540
16541
16542The tracking issue for this feature is: [#99571]
16543
16544[#99571]: https://github.com/rust-lang/rust/issues/99571
16545
16546------------------------
16547"##,
16548        default_severity: Severity::Allow,
16549        warn_since: None,
16550        deny_since: None,
16551    },
16552    Lint {
16553        label: "transmute_generic_consts",
16554        description: r##"# `transmute_generic_consts`
16555
16556Allows for transmuting between arrays with sizes that contain generic consts.
16557
16558The tracking issue for this feature is: [#109929]
16559
16560[#109929]: https://github.com/rust-lang/rust/issues/109929
16561
16562------------------------
16563"##,
16564        default_severity: Severity::Allow,
16565        warn_since: None,
16566        deny_since: None,
16567    },
16568    Lint {
16569        label: "transmute_neo",
16570        description: r##"# `transmute_neo`
16571
16572
16573
16574The tracking issue for this feature is: [#155079]
16575
16576[#155079]: https://github.com/rust-lang/rust/issues/155079
16577
16578------------------------
16579"##,
16580        default_severity: Severity::Allow,
16581        warn_since: None,
16582        deny_since: None,
16583    },
16584    Lint {
16585        label: "transmute_prefix",
16586        description: r##"# `transmute_prefix`
16587
16588
16589
16590The tracking issue for this feature is: [#155079]
16591
16592[#155079]: https://github.com/rust-lang/rust/issues/155079
16593
16594------------------------
16595"##,
16596        default_severity: Severity::Allow,
16597        warn_since: None,
16598        deny_since: None,
16599    },
16600    Lint {
16601        label: "transparent_unions",
16602        description: r##"# `transparent_unions`
16603
16604The tracking issue for this feature is [#60405]
16605
16606[#60405]: https://github.com/rust-lang/rust/issues/60405
16607
16608----
16609
16610The `transparent_unions` feature allows you mark `union`s as
16611`#[repr(transparent)]`. A `union` may be `#[repr(transparent)]` in exactly the
16612same conditions in which a `struct` may be `#[repr(transparent)]` (generally,
16613this means the `union` must have exactly one non-zero-sized field). Some
16614concrete illustrations follow.
16615
16616```rust
16617#![feature(transparent_unions)]
16618
16619// This union has the same representation as `f32`.
16620#[repr(transparent)]
16621union SingleFieldUnion {
16622    field: f32,
16623}
16624
16625// This union has the same representation as `usize`.
16626#[repr(transparent)]
16627union MultiFieldUnion {
16628    field: usize,
16629    nothing: (),
16630}
16631```
16632
16633For consistency with transparent `struct`s, `union`s must have exactly one
16634non-zero-sized field. If all fields are zero-sized, the `union` must not be
16635`#[repr(transparent)]`:
16636
16637```rust
16638#![feature(transparent_unions)]
16639
16640// This (non-transparent) union is already valid in stable Rust:
16641pub union GoodUnion {
16642    pub nothing: (),
16643}
16644
16645// Error: transparent union needs exactly one non-zero-sized field, but has 0
16646// #[repr(transparent)]
16647// pub union BadUnion {
16648//     pub nothing: (),
16649// }
16650```
16651
16652The one exception is if the `union` is generic over `T` and has a field of type
16653`T`, it may be `#[repr(transparent)]` even if `T` is a zero-sized type:
16654
16655```rust
16656#![feature(transparent_unions)]
16657
16658// This union has the same representation as `T`.
16659#[repr(transparent)]
16660pub union GenericUnion<T: Copy> { // Unions with non-`Copy` fields are unstable.
16661    pub field: T,
16662    pub nothing: (),
16663}
16664
16665// This is okay even though `()` is a zero-sized type.
16666pub const THIS_IS_OKAY: GenericUnion<()> = GenericUnion { field: () };
16667```
16668
16669Like transparent `struct`s, a transparent `union` of type `U` has the same
16670layout, size, and ABI as its single non-ZST field. If it is generic over a type
16671`T`, and all its fields are ZSTs except for exactly one field of type `T`, then
16672it has the same layout and ABI as `T` (even if `T` is a ZST when monomorphized).
16673
16674Like transparent `struct`s, transparent `union`s are FFI-safe if and only if
16675their underlying representation type is also FFI-safe.
16676
16677A `union` may not be eligible for the same nonnull-style optimizations that a
16678`struct` or `enum` (with the same fields) are eligible for. Adding
16679`#[repr(transparent)]` to  `union` does not change this. To give a more concrete
16680example, it is unspecified whether `size_of::<T>()` is equal to
16681`size_of::<Option<T>>()`, where `T` is a `union` (regardless of whether or not
16682it is transparent). The Rust compiler is free to perform this optimization if
16683possible, but is not required to, and different compiler versions may differ in
16684their application of these optimizations.
16685"##,
16686        default_severity: Severity::Allow,
16687        warn_since: None,
16688        deny_since: None,
16689    },
16690    Lint {
16691        label: "trivial_bounds",
16692        description: r##"# `trivial_bounds`
16693
16694Allows inconsistent bounds in where clauses.
16695
16696The tracking issue for this feature is: [#48214]
16697
16698[#48214]: https://github.com/rust-lang/rust/issues/48214
16699
16700------------------------
16701"##,
16702        default_severity: Severity::Allow,
16703        warn_since: None,
16704        deny_since: None,
16705    },
16706    Lint {
16707        label: "trivial_clone",
16708        description: r##"# `trivial_clone`
16709
16710
16711
16712This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
16713
16714------------------------
16715"##,
16716        default_severity: Severity::Allow,
16717        warn_since: None,
16718        deny_since: None,
16719    },
16720    Lint {
16721        label: "trusted_fused",
16722        description: r##"# `trusted_fused`
16723
16724
16725
16726This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
16727
16728------------------------
16729"##,
16730        default_severity: Severity::Allow,
16731        warn_since: None,
16732        deny_since: None,
16733    },
16734    Lint {
16735        label: "trusted_len",
16736        description: r##"# `trusted_len`
16737
16738
16739
16740The tracking issue for this feature is: [#37572]
16741
16742[#37572]: https://github.com/rust-lang/rust/issues/37572
16743
16744------------------------
16745"##,
16746        default_severity: Severity::Allow,
16747        warn_since: None,
16748        deny_since: None,
16749    },
16750    Lint {
16751        label: "trusted_random_access",
16752        description: r##"# `trusted_random_access`
16753
16754
16755
16756This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
16757
16758------------------------
16759"##,
16760        default_severity: Severity::Allow,
16761        warn_since: None,
16762        deny_since: None,
16763    },
16764    Lint {
16765        label: "trusted_step",
16766        description: r##"# `trusted_step`
16767
16768
16769
16770The tracking issue for this feature is: [#85731]
16771
16772[#85731]: https://github.com/rust-lang/rust/issues/85731
16773
16774------------------------
16775"##,
16776        default_severity: Severity::Allow,
16777        warn_since: None,
16778        deny_since: None,
16779    },
16780    Lint {
16781        label: "try_as_dyn",
16782        description: r##"# `try_as_dyn`
16783
16784The tracking issue for this feature is: [#144361]
16785
16786[#144361]: https://github.com/rust-lang/rust/issues/144361
16787
16788------------------------
16789
16790The `try_as_dyn` feature allows going from a generic `T` with no bounds
16791to a `dyn Trait`, if `T: Trait` and various conditions are upheld. It is
16792very related to specialization, as it allows you to specialize within
16793function bodies, but in a more general manner than `Any::downcast`.
16794
16795```rust
16796#![feature(try_as_dyn)]
16797
16798fn downcast_debug_format<T: 'static>(t: &T) -> String {
16799    match std::any::try_as_dyn::<_, dyn std::fmt::Debug>(t) {
16800        Some(d) => format!("{d:?}"),
16801        None => "default".to_string()
16802    }
16803}
16804```
16805
16806
16807## Rules and reasons for them
16808
16809> [!IMPORTANT]
16810> The main problem of **`try_as_dyn` and specialization is the compiler's inability, while trait-checking, to distinguish/_discriminate_ between any two given lifetimes**[^1].
16811
16812[^1]: the compiler cannot _branch_ on whether "`'a : 'b` holds": for soundness, it can either choose not to know the answer, or _assume_ that it holds and produce an obligation for the borrow-checker which shall "assert this" (making compilation fail in a fatal manner if not). Most usages of Rust lie in the latter category (typical `where` clauses anywhere), whilst specialization/`try_as_dyn()` wants to support fallibility of the operation (_i.e._, being queried on a type not fulfilling the predicate without causing a compilation error). This rules out the latter, resulting in the need for the former, _i.e._, for the `try_as_dyn()` attempt to unconditionally "fail" with `None`.
16813
16814### `'static` is not mentioned anywhere in the `impl` block header.
16815
16816The most obvious one: if you have `impl IsStatic for &'static str`, then determining whether `&'? str : IsStatic` does hold amounts to discriminating `'? : 'static`.
16817
16818### Each outlives `where` bound (`Type: 'a` and `'a: 'b`) does not mention lifetime-infected parameters.
16819
16820Parameters are considered lifetime-infected if they are defined in an `impl` block's generic parameter list.
16821Const generics are exempt, as they can't affect lifetimes.
16822`for<'a>` lifetimes (and in the future types) are not lifetime-infected.
16823
16824We can create lifetime discrimination this way. For instance, given `impl<'a, 'b> Outlives<'a> for &'b str where 'b : 'a {}`, `Outlives<'static>` amounts to `IsStatic` from previous bullet.
16825
16826### Each lifetime-infected parameter is mentioned at most once in the `Self` type and the implemented trait's generic parameters, combined.
16827
16828Repetition of a parameter entails equality of those two use-sites; in lifetime-terms, this would be a double `'a : 'b` / `'b : 'a` clause, for instance.
16829Follow-up from the previous example: `impl<'a> Uses<'a> for &'a str {}`, and check whether `&'? str : Uses<'static>`.
16830
16831### Each individual trait where bound (`Type: Trait`) mentions each lifetime-infected parameter at most once.
16832
16833Mentioning a lifetime-infected parameter in multiple `where` bounds is allowed.
16834
16835Looking at the previous rules, which focuses on `Self : …`, this is just observing that shifting the requirements to other parameters within `where` clauses \[ought to\] boil down to the same set of issues.
16836
16837This is _unnecessarily restrictive_: we should be able to loosen it up somehow. Repetition only in `where` clauses seems fine.
16838
16839
16840### The `impl` block is a handwritten impl
16841
16842as opposed to a type implementing a trait automatically by the compiler (such as auto-traits, `dyn Bounds… : Bounds…`, and closures)
16843
16844
16845The reason for this is that some such auto-generated impls _come with hidden bounds or whatnot_, which run afoul of the previous rules, whilst also being _extremely challenging for the current compiler logic to know of such bounds_.
16846IIUC, this restriction could be lifted in the future should the compiler logic be better at spotting these hidden bounds, when present.
16847
16848One contrived such example being the case of `dyn 'u + for<'a> Outlives<'a>`, where the compiler-generated `impl` for it of `Outlives` is: `impl<'b, 'u> Outlives<'b> for dyn 'u + for<'a> Outlives<'a> where 'b : 'u {}` which violates the "`'a: 'b` not to mention lt-infected params" rule, whilst also being hard to detect in current compiler logic.
16849
16850### Associated type projections (`<Type as Trait>::Assoc`) are not mentioned anywhere in the `impl` block header.
16851
16852Associated-type equality bounds can very much amount to lifetime-infected parameter equality constraints,
16853which are problematic as per the "at most one mention of each lifetime-infected parameter in header" rule.
16854To illustrate, with the following definitions, `&'? str: Trait<'static>` discriminates `'?` against `'static`:
16855```rust
16856trait Trait<'x> {}
16857impl<'a, 'b> Trait<'b> for &'a str
16858where
16859    //     &'a str = &'b str,
16860    Option<&'a str>: IntoIterator<Item = &'b str>,
16861{}
16862```
16863
16864```rust
16865trait Trait<'x> {}
16866impl<'a> Trait<'a> for &'a str {}
16867```
16868
16869### Each trait `where` bound with an associated type equality (`Type: Trait<Assoc = Type2>`) does not mention lifetime-infected parameters.
16870
16871Checking whether `Option<&'? str>: IntoIterator<Item = &'static str>` holds discriminates `'?` against `'static`.
16872"##,
16873        default_severity: Severity::Allow,
16874        warn_since: None,
16875        deny_since: None,
16876    },
16877    Lint {
16878        label: "try_blocks",
16879        description: r##"# `try_blocks`
16880
16881The tracking issue for this feature is: [#154391]
16882
16883[#154391]: https://github.com/rust-lang/rust/issues/154391
16884
16885------------------------
16886
16887The `try_blocks` feature adds support for `try` blocks. A `try`
16888block creates a new scope one can use the `?` operator in.
16889
16890```rust,edition2018
16891#![feature(try_blocks)]
16892
16893use std::num::ParseIntError;
16894
16895let result = try {
16896    "1".parse::<i32>()?
16897        + "2".parse::<i32>()?
16898        + "3".parse::<i32>()?
16899};
16900assert_eq!(result, Ok(6));
16901
16902let result = try {
16903    "1".parse::<i32>()?
16904        + "foo".parse::<i32>()?
16905        + "3".parse::<i32>()?
16906};
16907assert!(result.is_err());
16908```
16909"##,
16910        default_severity: Severity::Allow,
16911        warn_since: None,
16912        deny_since: None,
16913    },
16914    Lint {
16915        label: "try_blocks_heterogeneous",
16916        description: r##"# `try_blocks_heterogeneous`
16917
16918Allows using `try bikeshed TargetType {...}` expressions.
16919
16920The tracking issue for this feature is: [#149488]
16921
16922[#149488]: https://github.com/rust-lang/rust/issues/149488
16923
16924------------------------
16925"##,
16926        default_severity: Severity::Allow,
16927        warn_since: None,
16928        deny_since: None,
16929    },
16930    Lint {
16931        label: "try_entry",
16932        description: r##"# `try_entry`
16933
16934
16935
16936The tracking issue for this feature is: [#157354]
16937
16938[#157354]: https://github.com/rust-lang/rust/issues/157354
16939
16940------------------------
16941"##,
16942        default_severity: Severity::Allow,
16943        warn_since: None,
16944        deny_since: None,
16945    },
16946    Lint {
16947        label: "try_find",
16948        description: r##"# `try_find`
16949
16950
16951
16952The tracking issue for this feature is: [#63178]
16953
16954[#63178]: https://github.com/rust-lang/rust/issues/63178
16955
16956------------------------
16957"##,
16958        default_severity: Severity::Allow,
16959        warn_since: None,
16960        deny_since: None,
16961    },
16962    Lint {
16963        label: "try_from_int_error_kind",
16964        description: r##"# `try_from_int_error_kind`
16965
16966
16967
16968The tracking issue for this feature is: [#153978]
16969
16970[#153978]: https://github.com/rust-lang/rust/issues/153978
16971
16972------------------------
16973"##,
16974        default_severity: Severity::Allow,
16975        warn_since: None,
16976        deny_since: None,
16977    },
16978    Lint {
16979        label: "try_reserve_kind",
16980        description: r##"# `try_reserve_kind`
16981
16982
16983
16984The tracking issue for this feature is: [#48043]
16985
16986[#48043]: https://github.com/rust-lang/rust/issues/48043
16987
16988------------------------
16989"##,
16990        default_severity: Severity::Allow,
16991        warn_since: None,
16992        deny_since: None,
16993    },
16994    Lint {
16995        label: "try_trait_v2",
16996        description: r##"# `try_trait_v2`
16997
16998
16999
17000The tracking issue for this feature is: [#84277]
17001
17002[#84277]: https://github.com/rust-lang/rust/issues/84277
17003
17004------------------------
17005"##,
17006        default_severity: Severity::Allow,
17007        warn_since: None,
17008        deny_since: None,
17009    },
17010    Lint {
17011        label: "try_trait_v2_residual",
17012        description: r##"# `try_trait_v2_residual`
17013
17014
17015
17016The tracking issue for this feature is: [#91285]
17017
17018[#91285]: https://github.com/rust-lang/rust/issues/91285
17019
17020------------------------
17021"##,
17022        default_severity: Severity::Allow,
17023        warn_since: None,
17024        deny_since: None,
17025    },
17026    Lint {
17027        label: "try_trait_v2_yeet",
17028        description: r##"# `try_trait_v2_yeet`
17029
17030
17031
17032The tracking issue for this feature is: [#96374]
17033
17034[#96374]: https://github.com/rust-lang/rust/issues/96374
17035
17036------------------------
17037"##,
17038        default_severity: Severity::Allow,
17039        warn_since: None,
17040        deny_since: None,
17041    },
17042    Lint {
17043        label: "try_with_capacity",
17044        description: r##"# `try_with_capacity`
17045
17046
17047
17048The tracking issue for this feature is: [#91913]
17049
17050[#91913]: https://github.com/rust-lang/rust/issues/91913
17051
17052------------------------
17053"##,
17054        default_severity: Severity::Allow,
17055        warn_since: None,
17056        deny_since: None,
17057    },
17058    Lint {
17059        label: "tuple_trait",
17060        description: r##"# `tuple_trait`
17061
17062The tracking issue for this feature is [#157987].
17063
17064[#157987]: https://github.com/rust-lang/rust/issues/157987
17065"##,
17066        default_severity: Severity::Allow,
17067        warn_since: None,
17068        deny_since: None,
17069    },
17070    Lint {
17071        label: "type_alias_impl_trait",
17072        description: r##"# `type_alias_impl_trait`
17073
17074The tracking issue for this feature is: [#63063]
17075
17076------------------------
17077
17078> This feature is not to be confused with [`trait_alias`] or [`impl_trait_in_assoc_type`].
17079
17080### What is `impl Trait`?
17081
17082`impl Trait` in return position is useful for declaring types that are constrained by traits, but whose concrete type should be hidden:
17083
17084```rust
17085use std::fmt::Debug;
17086
17087fn new() -> impl Debug {
17088    42
17089}
17090
17091fn main() {
17092    let thing = new();
17093    // What actually is a `thing`?
17094    // No idea but we know it implements `Debug`, so we can debug print it
17095    println!("{thing:?}");
17096}
17097```
17098
17099See the [reference] for more information about `impl Trait` in return position.
17100
17101### `type_alias_impl_trait`
17102
17103However, we might want to use an `impl Trait` in multiple locations but actually use the same concrete type everywhere while keeping it hidden.
17104This can be useful in libraries where you want to hide implementation details.
17105
17106The `#[define_opaque]` attribute must be used to explicitly list opaque items constrained by the item it's on.
17107
17108```rust
17109#![feature(type_alias_impl_trait)]
17110# #![allow(unused_variables, dead_code)]
17111trait Trait {}
17112
17113struct MyType;
17114
17115impl Trait for MyType {}
17116
17117type Alias = impl Trait;
17118
17119#[define_opaque(Alias)] // To constrain the type alias to `MyType`
17120fn new() -> Alias {
17121    MyType
17122}
17123
17124#[define_opaque(Alias)] // So we can name the concrete type inside this item
17125fn main() {
17126    let thing: MyType = new();
17127}
17128
17129// It can be a part of a struct too
17130struct HaveAlias {
17131    stuff: String,
17132    thing: Alias,
17133}
17134```
17135
17136In this example, the concrete type referred to by `Alias` is guaranteed to be the same wherever `Alias` occurs.
17137
17138> Originally this feature included type aliases as an associated type of a trait. In [#110237] this was split off to [`impl_trait_in_assoc_type`].
17139
17140### `type_alias_impl_trait` in argument position.
17141
17142Note that using `Alias` as an argument type is *not* the same as argument-position `impl Trait`, as `Alias` refers to a unique type, whereas the concrete type for argument-position `impl Trait` is chosen by the caller.
17143
17144```rust
17145# #![feature(type_alias_impl_trait)]
17146# #![allow(unused_variables)]
17147# pub mod x {
17148# pub trait Trait {}
17149#
17150# struct MyType;
17151#
17152# impl Trait for MyType {}
17153#
17154# pub type Alias = impl Trait;
17155#
17156# #[define_opaque(Alias)]
17157# pub fn new() -> Alias {
17158#     MyType
17159# }
17160# }
17161# use x::*;
17162// this...
17163pub fn take_alias(x: Alias) {
17164    // ...
17165}
17166
17167// ...is *not* the same as
17168pub fn take_impl(x: impl Trait) {
17169    // ...
17170}
17171# fn main(){}
17172```
17173
17174```rust,compile_fail,E0308
17175# #![feature(type_alias_impl_trait)]
17176# #![allow(unused_variables)]
17177# pub mod x {
17178# pub trait Trait {}
17179#
17180# struct MyType;
17181#
17182# impl Trait for MyType {}
17183#
17184# pub type Alias = impl Trait;
17185#
17186# #[define_opaque(Alias)]
17187# pub fn new() -> Alias {
17188#     MyType
17189# }
17190# }
17191# use x::*;
17192# pub fn take_alias(x: Alias) {
17193#     // ...
17194# }
17195#
17196# pub fn take_impl(x: impl Trait) {
17197#    // ...
17198# }
17199#
17200// a user's crate using the trait and type alias
17201struct UserType;
17202impl Trait for UserType {}
17203
17204# fn main(){
17205let x = UserType;
17206take_alias(x);
17207// ERROR expected opaque type, found `UserType`
17208// this function *actually* takes a `MyType` as is constrained in `new`
17209
17210let x = UserType;
17211take_impl(x);
17212// OK
17213
17214let x = new();
17215take_alias(x);
17216// OK
17217
17218let x = new();
17219take_impl(x);
17220// OK
17221# }
17222```
17223
17224Note that the user cannot use `#[define_opaque(Alias)]` to reify the opaque type because only the crate where the type alias is declared may do so. But if this happened in the same crate and the opaque type was reified, they'd get a familiar error: "expected `MyType`, got `UserType`".
17225
17226[#63063]: https://github.com/rust-lang/rust/issues/63063
17227[#110237]: https://github.com/rust-lang/rust/pull/110237
17228[reference]: https://doc.rust-lang.org/stable/reference/types/impl-trait.html#abstract-return-types
17229[`trait_alias`]: ./trait-alias.md
17230[`impl_trait_in_assoc_type`]: ./impl-trait-in-assoc-type.md
17231"##,
17232        default_severity: Severity::Allow,
17233        warn_since: None,
17234        deny_since: None,
17235    },
17236    Lint {
17237        label: "type_ascription",
17238        description: r##"# `type_ascription`
17239
17240
17241
17242The tracking issue for this feature is: [#23416]
17243
17244[#23416]: https://github.com/rust-lang/rust/issues/23416
17245
17246------------------------
17247"##,
17248        default_severity: Severity::Allow,
17249        warn_since: None,
17250        deny_since: None,
17251    },
17252    Lint {
17253        label: "type_changing_struct_update",
17254        description: r##"# `type_changing_struct_update`
17255
17256The tracking issue for this feature is: [#86555]
17257
17258[#86555]: https://github.com/rust-lang/rust/issues/86555
17259
17260------------------------
17261
17262This implements [RFC2528]. When turned on, you can create instances of the same struct
17263that have different generic type or lifetime parameters.
17264
17265[RFC2528]: https://rust-lang.github.io/rfcs/2528-type-changing-struct-update-syntax.html
17266
17267```rust
17268#![allow(unused_variables, dead_code)]
17269#![feature(type_changing_struct_update)]
17270
17271fn main () {
17272    struct Foo<T, U> {
17273        field1: T,
17274        field2: U,
17275    }
17276
17277    let base: Foo<String, i32> = Foo {
17278        field1: String::from("hello"),
17279        field2: 1234,
17280    };
17281    let updated: Foo<f64, i32> = Foo {
17282        field1: 3.14,
17283        ..base
17284    };
17285}
17286```
17287"##,
17288        default_severity: Severity::Allow,
17289        warn_since: None,
17290        deny_since: None,
17291    },
17292    Lint {
17293        label: "type_info",
17294        description: r##"# `type_info`
17295
17296
17297
17298The tracking issue for this feature is: [#146922]
17299
17300[#146922]: https://github.com/rust-lang/rust/issues/146922
17301
17302------------------------
17303"##,
17304        default_severity: Severity::Allow,
17305        warn_since: None,
17306        deny_since: None,
17307    },
17308    Lint {
17309        label: "u8_split_ascii_whitespace",
17310        description: r##"# `u8_split_ascii_whitespace`
17311
17312
17313
17314The tracking issue for this feature is: [#147878]
17315
17316[#147878]: https://github.com/rust-lang/rust/issues/147878
17317
17318------------------------
17319"##,
17320        default_severity: Severity::Allow,
17321        warn_since: None,
17322        deny_since: None,
17323    },
17324    Lint {
17325        label: "ub_checks",
17326        description: r##"# `ub_checks`
17327
17328
17329
17330This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
17331
17332------------------------
17333"##,
17334        default_severity: Severity::Allow,
17335        warn_since: None,
17336        deny_since: None,
17337    },
17338    Lint {
17339        label: "uefi_std",
17340        description: r##"# `uefi_std`
17341
17342
17343
17344The tracking issue for this feature is: [#100499]
17345
17346[#100499]: https://github.com/rust-lang/rust/issues/100499
17347
17348------------------------
17349"##,
17350        default_severity: Severity::Allow,
17351        warn_since: None,
17352        deny_since: None,
17353    },
17354    Lint {
17355        label: "uint_carryless_mul",
17356        description: r##"# `uint_carryless_mul`
17357
17358
17359
17360The tracking issue for this feature is: [#152080]
17361
17362[#152080]: https://github.com/rust-lang/rust/issues/152080
17363
17364------------------------
17365"##,
17366        default_severity: Severity::Allow,
17367        warn_since: None,
17368        deny_since: None,
17369    },
17370    Lint {
17371        label: "uint_gather_scatter_bits",
17372        description: r##"# `uint_gather_scatter_bits`
17373
17374
17375
17376The tracking issue for this feature is: [#149069]
17377
17378[#149069]: https://github.com/rust-lang/rust/issues/149069
17379
17380------------------------
17381"##,
17382        default_severity: Severity::Allow,
17383        warn_since: None,
17384        deny_since: None,
17385    },
17386    Lint {
17387        label: "unboxed_closures",
17388        description: r##"# `unboxed_closures`
17389
17390The tracking issue for this feature is [#29625]
17391
17392See Also: [`fn_traits`](../library-features/fn-traits.md)
17393
17394[#29625]: https://github.com/rust-lang/rust/issues/29625
17395
17396----
17397
17398The `unboxed_closures` feature allows you to write functions using the `"rust-call"` ABI,
17399required for implementing the [`Fn*`] family of traits. `"rust-call"` functions must have
17400exactly one (non self) argument, a tuple representing the argument list.
17401
17402[`Fn*`]: ../../std/ops/trait.Fn.html
17403
17404```rust
17405#![feature(unboxed_closures)]
17406
17407extern "rust-call" fn add_args(args: (u32, u32)) -> u32 {
17408    args.0 + args.1
17409}
17410
17411fn main() {}
17412```
17413"##,
17414        default_severity: Severity::Allow,
17415        warn_since: None,
17416        deny_since: None,
17417    },
17418    Lint {
17419        label: "unicode_internals",
17420        description: r##"# `unicode_internals`
17421
17422
17423
17424This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
17425
17426------------------------
17427"##,
17428        default_severity: Severity::Allow,
17429        warn_since: None,
17430        deny_since: None,
17431    },
17432    Lint {
17433        label: "unique_rc_arc",
17434        description: r##"# `unique_rc_arc`
17435
17436
17437
17438The tracking issue for this feature is: [#112566]
17439
17440[#112566]: https://github.com/rust-lang/rust/issues/112566
17441
17442------------------------
17443"##,
17444        default_severity: Severity::Allow,
17445        warn_since: None,
17446        deny_since: None,
17447    },
17448    Lint {
17449        label: "unix_file_vectored_at",
17450        description: r##"# `unix_file_vectored_at`
17451
17452
17453
17454The tracking issue for this feature is: [#89517]
17455
17456[#89517]: https://github.com/rust-lang/rust/issues/89517
17457
17458------------------------
17459"##,
17460        default_severity: Severity::Allow,
17461        warn_since: None,
17462        deny_since: None,
17463    },
17464    Lint {
17465        label: "unix_kill_process_group",
17466        description: r##"# `unix_kill_process_group`
17467
17468
17469
17470The tracking issue for this feature is: [#156537]
17471
17472[#156537]: https://github.com/rust-lang/rust/issues/156537
17473
17474------------------------
17475"##,
17476        default_severity: Severity::Allow,
17477        warn_since: None,
17478        deny_since: None,
17479    },
17480    Lint {
17481        label: "unix_mkfifo",
17482        description: r##"# `unix_mkfifo`
17483
17484
17485
17486The tracking issue for this feature is: [#139324]
17487
17488[#139324]: https://github.com/rust-lang/rust/issues/139324
17489
17490------------------------
17491"##,
17492        default_severity: Severity::Allow,
17493        warn_since: None,
17494        deny_since: None,
17495    },
17496    Lint {
17497        label: "unix_send_signal",
17498        description: r##"# `unix_send_signal`
17499
17500
17501
17502The tracking issue for this feature is: [#141975]
17503
17504[#141975]: https://github.com/rust-lang/rust/issues/141975
17505
17506------------------------
17507"##,
17508        default_severity: Severity::Allow,
17509        warn_since: None,
17510        deny_since: None,
17511    },
17512    Lint {
17513        label: "unix_set_mark",
17514        description: r##"# `unix_set_mark`
17515
17516
17517
17518The tracking issue for this feature is: [#96467]
17519
17520[#96467]: https://github.com/rust-lang/rust/issues/96467
17521
17522------------------------
17523"##,
17524        default_severity: Severity::Allow,
17525        warn_since: None,
17526        deny_since: None,
17527    },
17528    Lint {
17529        label: "unix_socket_ancillary_data",
17530        description: r##"# `unix_socket_ancillary_data`
17531
17532
17533
17534The tracking issue for this feature is: [#76915]
17535
17536[#76915]: https://github.com/rust-lang/rust/issues/76915
17537
17538------------------------
17539"##,
17540        default_severity: Severity::Allow,
17541        warn_since: None,
17542        deny_since: None,
17543    },
17544    Lint {
17545        label: "unix_socket_exclbind",
17546        description: r##"# `unix_socket_exclbind`
17547
17548
17549
17550The tracking issue for this feature is: [#123481]
17551
17552[#123481]: https://github.com/rust-lang/rust/issues/123481
17553
17554------------------------
17555"##,
17556        default_severity: Severity::Allow,
17557        warn_since: None,
17558        deny_since: None,
17559    },
17560    Lint {
17561        label: "unix_socket_peek",
17562        description: r##"# `unix_socket_peek`
17563
17564
17565
17566The tracking issue for this feature is: [#76923]
17567
17568[#76923]: https://github.com/rust-lang/rust/issues/76923
17569
17570------------------------
17571"##,
17572        default_severity: Severity::Allow,
17573        warn_since: None,
17574        deny_since: None,
17575    },
17576    Lint {
17577        label: "unnamed_enum_variants",
17578        description: r##"# `unnamed_enum_variants`
17579
17580Allows using `_ = <range-or-int>` enum variants.
17581
17582The tracking issue for this feature is: [#156628]
17583
17584[#156628]: https://github.com/rust-lang/rust/issues/156628
17585
17586------------------------
17587"##,
17588        default_severity: Severity::Allow,
17589        warn_since: None,
17590        deny_since: None,
17591    },
17592    Lint {
17593        label: "unqualified_local_imports",
17594        description: r##"# `unqualified_local_imports`
17595
17596Helps with formatting for `group_imports = "StdExternalCrate"`.
17597
17598The tracking issue for this feature is: [#138299]
17599
17600[#138299]: https://github.com/rust-lang/rust/issues/138299
17601
17602------------------------
17603"##,
17604        default_severity: Severity::Allow,
17605        warn_since: None,
17606        deny_since: None,
17607    },
17608    Lint {
17609        label: "unsafe_binders",
17610        description: r##"# `unsafe_binders`
17611
17612Allows using `unsafe<'a> &'a T` unsafe binder types.
17613
17614The tracking issue for this feature is: [#130516]
17615
17616[#130516]: https://github.com/rust-lang/rust/issues/130516
17617
17618------------------------
17619"##,
17620        default_severity: Severity::Allow,
17621        warn_since: None,
17622        deny_since: None,
17623    },
17624    Lint {
17625        label: "unsafe_fields",
17626        description: r##"# `unsafe_fields`
17627
17628Allows declaring fields `unsafe`.
17629
17630The tracking issue for this feature is: [#132922]
17631
17632[#132922]: https://github.com/rust-lang/rust/issues/132922
17633
17634------------------------
17635"##,
17636        default_severity: Severity::Allow,
17637        warn_since: None,
17638        deny_since: None,
17639    },
17640    Lint {
17641        label: "unsafe_pinned",
17642        description: r##"# `unsafe_pinned`
17643
17644
17645
17646The tracking issue for this feature is: [#125735]
17647
17648[#125735]: https://github.com/rust-lang/rust/issues/125735
17649
17650------------------------
17651"##,
17652        default_severity: Severity::Allow,
17653        warn_since: None,
17654        deny_since: None,
17655    },
17656    Lint {
17657        label: "unsafe_unpin",
17658        description: r##"# `unsafe_unpin`
17659
17660
17661
17662The tracking issue for this feature is: [#125735]
17663
17664[#125735]: https://github.com/rust-lang/rust/issues/125735
17665
17666------------------------
17667"##,
17668        default_severity: Severity::Allow,
17669        warn_since: None,
17670        deny_since: None,
17671    },
17672    Lint {
17673        label: "unsize",
17674        description: r##"# `unsize`
17675
17676
17677
17678The tracking issue for this feature is: [#18598]
17679
17680[#18598]: https://github.com/rust-lang/rust/issues/18598
17681
17682------------------------
17683"##,
17684        default_severity: Severity::Allow,
17685        warn_since: None,
17686        deny_since: None,
17687    },
17688    Lint {
17689        label: "unsized_const_params",
17690        description: r##"# `unsized_const_params`
17691
17692Allows const generic parameters to be defined with types that are not `Sized`, e.g. `fn foo<const N: [u8]>() {`.
17693
17694The tracking issue for this feature is: [#128028]
17695
17696[#128028]: https://github.com/rust-lang/rust/issues/128028
17697
17698------------------------
17699"##,
17700        default_severity: Severity::Allow,
17701        warn_since: None,
17702        deny_since: None,
17703    },
17704    Lint {
17705        label: "unsized_fn_params",
17706        description: r##"# `unsized_fn_params`
17707
17708Allows unsized fn parameters.
17709
17710The tracking issue for this feature is: [#48055]
17711
17712[#48055]: https://github.com/rust-lang/rust/issues/48055
17713
17714------------------------
17715"##,
17716        default_severity: Severity::Allow,
17717        warn_since: None,
17718        deny_since: None,
17719    },
17720    Lint {
17721        label: "update_panic_count",
17722        description: r##"# `update_panic_count`
17723
17724This feature is internal to the Rust compiler and is not intended for general use.
17725
17726------------------------
17727"##,
17728        default_severity: Severity::Allow,
17729        warn_since: None,
17730        deny_since: None,
17731    },
17732    Lint {
17733        label: "used_with_arg",
17734        description: r##"# `used_with_arg`
17735
17736Allows using the `#[used(linker)]` (or `#[used(compiler)]`) attribute.
17737
17738The tracking issue for this feature is: [#93798]
17739
17740[#93798]: https://github.com/rust-lang/rust/issues/93798
17741
17742------------------------
17743"##,
17744        default_severity: Severity::Allow,
17745        warn_since: None,
17746        deny_since: None,
17747    },
17748    Lint {
17749        label: "utf16_extra",
17750        description: r##"# `utf16_extra`
17751
17752
17753
17754The tracking issue for this feature is: [#94919]
17755
17756[#94919]: https://github.com/rust-lang/rust/issues/94919
17757
17758------------------------
17759"##,
17760        default_severity: Severity::Allow,
17761        warn_since: None,
17762        deny_since: None,
17763    },
17764    Lint {
17765        label: "variant_count",
17766        description: r##"# `variant_count`
17767
17768
17769
17770The tracking issue for this feature is: [#73662]
17771
17772[#73662]: https://github.com/rust-lang/rust/issues/73662
17773
17774------------------------
17775"##,
17776        default_severity: Severity::Allow,
17777        warn_since: None,
17778        deny_since: None,
17779    },
17780    Lint {
17781        label: "vec_as_non_null",
17782        description: r##"# `vec_as_non_null`
17783
17784
17785
17786The tracking issue for this feature is: [#157843]
17787
17788[#157843]: https://github.com/rust-lang/rust/issues/157843
17789
17790------------------------
17791"##,
17792        default_severity: Severity::Allow,
17793        warn_since: None,
17794        deny_since: None,
17795    },
17796    Lint {
17797        label: "vec_deque_extract_if",
17798        description: r##"# `vec_deque_extract_if`
17799
17800
17801
17802The tracking issue for this feature is: [#147750]
17803
17804[#147750]: https://github.com/rust-lang/rust/issues/147750
17805
17806------------------------
17807"##,
17808        default_severity: Severity::Allow,
17809        warn_since: None,
17810        deny_since: None,
17811    },
17812    Lint {
17813        label: "vec_deque_iter_as_slices",
17814        description: r##"# `vec_deque_iter_as_slices`
17815
17816
17817
17818The tracking issue for this feature is: [#123947]
17819
17820[#123947]: https://github.com/rust-lang/rust/issues/123947
17821
17822------------------------
17823"##,
17824        default_severity: Severity::Allow,
17825        warn_since: None,
17826        deny_since: None,
17827    },
17828    Lint {
17829        label: "vec_deque_retain_range",
17830        description: r##"# `vec_deque_retain_range`
17831
17832
17833
17834The tracking issue for this feature is: [#156215]
17835
17836[#156215]: https://github.com/rust-lang/rust/issues/156215
17837
17838------------------------
17839"##,
17840        default_severity: Severity::Allow,
17841        warn_since: None,
17842        deny_since: None,
17843    },
17844    Lint {
17845        label: "vec_fallible_shrink",
17846        description: r##"# `vec_fallible_shrink`
17847
17848
17849
17850The tracking issue for this feature is: [#152350]
17851
17852[#152350]: https://github.com/rust-lang/rust/issues/152350
17853
17854------------------------
17855"##,
17856        default_severity: Severity::Allow,
17857        warn_since: None,
17858        deny_since: None,
17859    },
17860    Lint {
17861        label: "vec_into_chunks",
17862        description: r##"# `vec_into_chunks`
17863
17864
17865
17866The tracking issue for this feature is: [#142137]
17867
17868[#142137]: https://github.com/rust-lang/rust/issues/142137
17869
17870------------------------
17871"##,
17872        default_severity: Severity::Allow,
17873        warn_since: None,
17874        deny_since: None,
17875    },
17876    Lint {
17877        label: "vec_peek_mut",
17878        description: r##"# `vec_peek_mut`
17879
17880
17881
17882The tracking issue for this feature is: [#122742]
17883
17884[#122742]: https://github.com/rust-lang/rust/issues/122742
17885
17886------------------------
17887"##,
17888        default_severity: Severity::Allow,
17889        warn_since: None,
17890        deny_since: None,
17891    },
17892    Lint {
17893        label: "vec_push_within_capacity",
17894        description: r##"# `vec_push_within_capacity`
17895
17896
17897
17898The tracking issue for this feature is: [#100486]
17899
17900[#100486]: https://github.com/rust-lang/rust/issues/100486
17901
17902------------------------
17903"##,
17904        default_severity: Severity::Allow,
17905        warn_since: None,
17906        deny_since: None,
17907    },
17908    Lint {
17909        label: "vec_recycle",
17910        description: r##"# `vec_recycle`
17911
17912
17913
17914The tracking issue for this feature is: [#148227]
17915
17916[#148227]: https://github.com/rust-lang/rust/issues/148227
17917
17918------------------------
17919"##,
17920        default_severity: Severity::Allow,
17921        warn_since: None,
17922        deny_since: None,
17923    },
17924    Lint {
17925        label: "vec_split_at_spare",
17926        description: r##"# `vec_split_at_spare`
17927
17928
17929
17930The tracking issue for this feature is: [#81944]
17931
17932[#81944]: https://github.com/rust-lang/rust/issues/81944
17933
17934------------------------
17935"##,
17936        default_severity: Severity::Allow,
17937        warn_since: None,
17938        deny_since: None,
17939    },
17940    Lint {
17941        label: "view_type_macro",
17942        description: r##"# `view_type_macro`
17943
17944
17945
17946The tracking issue for this feature is: [#155938]
17947
17948[#155938]: https://github.com/rust-lang/rust/issues/155938
17949
17950------------------------
17951"##,
17952        default_severity: Severity::Allow,
17953        warn_since: None,
17954        deny_since: None,
17955    },
17956    Lint {
17957        label: "view_types",
17958        description: r##"# `view_types`
17959
17960Allows view types.
17961
17962The tracking issue for this feature is: [#155938]
17963
17964[#155938]: https://github.com/rust-lang/rust/issues/155938
17965
17966------------------------
17967"##,
17968        default_severity: Severity::Allow,
17969        warn_since: None,
17970        deny_since: None,
17971    },
17972    Lint {
17973        label: "waker_fn",
17974        description: r##"# `waker_fn`
17975
17976
17977
17978The tracking issue for this feature is: [#149580]
17979
17980[#149580]: https://github.com/rust-lang/rust/issues/149580
17981
17982------------------------
17983"##,
17984        default_severity: Severity::Allow,
17985        warn_since: None,
17986        deny_since: None,
17987    },
17988    Lint {
17989        label: "waker_from_fn_ptr",
17990        description: r##"# `waker_from_fn_ptr`
17991
17992
17993
17994The tracking issue for this feature is: [#148457]
17995
17996[#148457]: https://github.com/rust-lang/rust/issues/148457
17997
17998------------------------
17999"##,
18000        default_severity: Severity::Allow,
18001        warn_since: None,
18002        deny_since: None,
18003    },
18004    Lint {
18005        label: "wasi_ext",
18006        description: r##"# `wasi_ext`
18007
18008
18009
18010The tracking issue for this feature is: [#71213]
18011
18012[#71213]: https://github.com/rust-lang/rust/issues/71213
18013
18014------------------------
18015"##,
18016        default_severity: Severity::Allow,
18017        warn_since: None,
18018        deny_since: None,
18019    },
18020    Lint {
18021        label: "wasip2",
18022        description: r##"# `wasip2`
18023
18024
18025
18026This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
18027
18028------------------------
18029"##,
18030        default_severity: Severity::Allow,
18031        warn_since: None,
18032        deny_since: None,
18033    },
18034    Lint {
18035        label: "wasm_target_feature",
18036        description: r##"# `wasm_target_feature`
18037
18038Target features on wasm.
18039
18040The tracking issue for this feature is: [#150260]
18041
18042[#150260]: https://github.com/rust-lang/rust/issues/150260
18043
18044------------------------
18045"##,
18046        default_severity: Severity::Allow,
18047        warn_since: None,
18048        deny_since: None,
18049    },
18050    Lint {
18051        label: "where_clause_attrs",
18052        description: r##"# `where_clause_attrs`
18053
18054Allows use of attributes in `where` clauses.
18055
18056The tracking issue for this feature is: [#115590]
18057
18058[#115590]: https://github.com/rust-lang/rust/issues/115590
18059
18060------------------------
18061"##,
18062        default_severity: Severity::Allow,
18063        warn_since: None,
18064        deny_since: None,
18065    },
18066    Lint {
18067        label: "widening_mul",
18068        description: r##"# `widening_mul`
18069
18070
18071
18072The tracking issue for this feature is: [#152016]
18073
18074[#152016]: https://github.com/rust-lang/rust/issues/152016
18075
18076------------------------
18077"##,
18078        default_severity: Severity::Allow,
18079        warn_since: None,
18080        deny_since: None,
18081    },
18082    Lint {
18083        label: "windows_by_handle",
18084        description: r##"# `windows_by_handle`
18085
18086
18087
18088The tracking issue for this feature is: [#63010]
18089
18090[#63010]: https://github.com/rust-lang/rust/issues/63010
18091
18092------------------------
18093"##,
18094        default_severity: Severity::Allow,
18095        warn_since: None,
18096        deny_since: None,
18097    },
18098    Lint {
18099        label: "windows_c",
18100        description: r##"# `windows_c`
18101
18102This feature is internal to the Rust compiler and is not intended for general use.
18103
18104------------------------
18105"##,
18106        default_severity: Severity::Allow,
18107        warn_since: None,
18108        deny_since: None,
18109    },
18110    Lint {
18111        label: "windows_change_time",
18112        description: r##"# `windows_change_time`
18113
18114
18115
18116The tracking issue for this feature is: [#121478]
18117
18118[#121478]: https://github.com/rust-lang/rust/issues/121478
18119
18120------------------------
18121"##,
18122        default_severity: Severity::Allow,
18123        warn_since: None,
18124        deny_since: None,
18125    },
18126    Lint {
18127        label: "windows_freeze_file_times",
18128        description: r##"# `windows_freeze_file_times`
18129
18130
18131
18132The tracking issue for this feature is: [#149715]
18133
18134[#149715]: https://github.com/rust-lang/rust/issues/149715
18135
18136------------------------
18137"##,
18138        default_severity: Severity::Allow,
18139        warn_since: None,
18140        deny_since: None,
18141    },
18142    Lint {
18143        label: "windows_handle",
18144        description: r##"# `windows_handle`
18145
18146This feature is internal to the Rust compiler and is not intended for general use.
18147
18148------------------------
18149"##,
18150        default_severity: Severity::Allow,
18151        warn_since: None,
18152        deny_since: None,
18153    },
18154    Lint {
18155        label: "windows_net",
18156        description: r##"# `windows_net`
18157
18158This feature is internal to the Rust compiler and is not intended for general use.
18159
18160------------------------
18161"##,
18162        default_severity: Severity::Allow,
18163        warn_since: None,
18164        deny_since: None,
18165    },
18166    Lint {
18167        label: "windows_permissions_ext",
18168        description: r##"# `windows_permissions_ext`
18169
18170
18171
18172The tracking issue for this feature is: [#152956]
18173
18174[#152956]: https://github.com/rust-lang/rust/issues/152956
18175
18176------------------------
18177"##,
18178        default_severity: Severity::Allow,
18179        warn_since: None,
18180        deny_since: None,
18181    },
18182    Lint {
18183        label: "windows_process_exit_code_from",
18184        description: r##"# `windows_process_exit_code_from`
18185
18186
18187
18188The tracking issue for this feature is: [#111688]
18189
18190[#111688]: https://github.com/rust-lang/rust/issues/111688
18191
18192------------------------
18193"##,
18194        default_severity: Severity::Allow,
18195        warn_since: None,
18196        deny_since: None,
18197    },
18198    Lint {
18199        label: "windows_process_extensions_async_pipes",
18200        description: r##"# `windows_process_extensions_async_pipes`
18201
18202
18203
18204The tracking issue for this feature is: [#98289]
18205
18206[#98289]: https://github.com/rust-lang/rust/issues/98289
18207
18208------------------------
18209"##,
18210        default_severity: Severity::Allow,
18211        warn_since: None,
18212        deny_since: None,
18213    },
18214    Lint {
18215        label: "windows_process_extensions_desktop",
18216        description: r##"# `windows_process_extensions_desktop`
18217
18218
18219
18220The tracking issue for this feature is: [#158852]
18221
18222[#158852]: https://github.com/rust-lang/rust/issues/158852
18223
18224------------------------
18225"##,
18226        default_severity: Severity::Allow,
18227        warn_since: None,
18228        deny_since: None,
18229    },
18230    Lint {
18231        label: "windows_process_extensions_force_quotes",
18232        description: r##"# `windows_process_extensions_force_quotes`
18233
18234
18235
18236The tracking issue for this feature is: [#82227]
18237
18238[#82227]: https://github.com/rust-lang/rust/issues/82227
18239
18240------------------------
18241"##,
18242        default_severity: Severity::Allow,
18243        warn_since: None,
18244        deny_since: None,
18245    },
18246    Lint {
18247        label: "windows_process_extensions_inherit_handles",
18248        description: r##"# `windows_process_extensions_inherit_handles`
18249
18250
18251
18252The tracking issue for this feature is: [#146407]
18253
18254[#146407]: https://github.com/rust-lang/rust/issues/146407
18255
18256------------------------
18257"##,
18258        default_severity: Severity::Allow,
18259        warn_since: None,
18260        deny_since: None,
18261    },
18262    Lint {
18263        label: "windows_process_extensions_raw_attribute",
18264        description: r##"# `windows_process_extensions_raw_attribute`
18265
18266
18267
18268The tracking issue for this feature is: [#114854]
18269
18270[#114854]: https://github.com/rust-lang/rust/issues/114854
18271
18272------------------------
18273"##,
18274        default_severity: Severity::Allow,
18275        warn_since: None,
18276        deny_since: None,
18277    },
18278    Lint {
18279        label: "windows_process_extensions_startupinfo",
18280        description: r##"# `windows_process_extensions_startupinfo`
18281
18282
18283
18284The tracking issue for this feature is: [#141010]
18285
18286[#141010]: https://github.com/rust-lang/rust/issues/141010
18287
18288------------------------
18289"##,
18290        default_severity: Severity::Allow,
18291        warn_since: None,
18292        deny_since: None,
18293    },
18294    Lint {
18295        label: "windows_stdio",
18296        description: r##"# `windows_stdio`
18297
18298This feature is internal to the Rust compiler and is not intended for general use.
18299
18300------------------------
18301"##,
18302        default_severity: Severity::Allow,
18303        warn_since: None,
18304        deny_since: None,
18305    },
18306    Lint {
18307        label: "windows_unix_domain_sockets",
18308        description: r##"# `windows_unix_domain_sockets`
18309
18310
18311
18312The tracking issue for this feature is: [#150487]
18313
18314[#150487]: https://github.com/rust-lang/rust/issues/150487
18315
18316------------------------
18317"##,
18318        default_severity: Severity::Allow,
18319        warn_since: None,
18320        deny_since: None,
18321    },
18322    Lint {
18323        label: "with_negative_coherence",
18324        description: r##"# `with_negative_coherence`
18325
18326Use for stable + negative coherence and strict coherence depending on trait's rustc_strict_coherence value.
18327
18328This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
18329
18330------------------------
18331"##,
18332        default_severity: Severity::Allow,
18333        warn_since: None,
18334        deny_since: None,
18335    },
18336    Lint {
18337        label: "wrapping_int_impl",
18338        description: r##"# `wrapping_int_impl`
18339
18340
18341
18342The tracking issue for this feature is: [#32463]
18343
18344[#32463]: https://github.com/rust-lang/rust/issues/32463
18345
18346------------------------
18347"##,
18348        default_severity: Severity::Allow,
18349        warn_since: None,
18350        deny_since: None,
18351    },
18352    Lint {
18353        label: "wrapping_next_power_of_two",
18354        description: r##"# `wrapping_next_power_of_two`
18355
18356
18357
18358The tracking issue for this feature is: [#32463]
18359
18360[#32463]: https://github.com/rust-lang/rust/issues/32463
18361
18362------------------------
18363"##,
18364        default_severity: Severity::Allow,
18365        warn_since: None,
18366        deny_since: None,
18367    },
18368    Lint {
18369        label: "write_all_vectored",
18370        description: r##"# `write_all_vectored`
18371
18372
18373
18374The tracking issue for this feature is: [#70436]
18375
18376[#70436]: https://github.com/rust-lang/rust/issues/70436
18377
18378------------------------
18379"##,
18380        default_severity: Severity::Allow,
18381        warn_since: None,
18382        deny_since: None,
18383    },
18384    Lint {
18385        label: "wtf8_internals",
18386        description: r##"# `wtf8_internals`
18387
18388
18389
18390This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
18391
18392------------------------
18393"##,
18394        default_severity: Severity::Allow,
18395        warn_since: None,
18396        deny_since: None,
18397    },
18398    Lint {
18399        label: "x86_amx_intrinsics",
18400        description: r##"# `x86_amx_intrinsics`
18401
18402Allows use of x86 `AMX` target-feature attributes and intrinsics
18403
18404The tracking issue for this feature is: [#126622]
18405
18406[#126622]: https://github.com/rust-lang/rust/issues/126622
18407
18408------------------------
18409"##,
18410        default_severity: Severity::Allow,
18411        warn_since: None,
18412        deny_since: None,
18413    },
18414    Lint {
18415        label: "x87_target_feature",
18416        description: r##"# `x87_target_feature`
18417
18418The x87 target feature on x86.
18419
18420The tracking issue for this feature is: [#150261]
18421
18422[#150261]: https://github.com/rust-lang/rust/issues/150261
18423
18424------------------------
18425"##,
18426        default_severity: Severity::Allow,
18427        warn_since: None,
18428        deny_since: None,
18429    },
18430    Lint {
18431        label: "xop_target_feature",
18432        description: r##"# `xop_target_feature`
18433
18434Allows use of the `xop` target-feature
18435
18436The tracking issue for this feature is: [#127208]
18437
18438[#127208]: https://github.com/rust-lang/rust/issues/127208
18439
18440------------------------
18441"##,
18442        default_severity: Severity::Allow,
18443        warn_since: None,
18444        deny_since: None,
18445    },
18446    Lint {
18447        label: "xtensa_target_feature",
18448        description: r##"# `xtensa_target_feature`
18449
18450Allows use of the Xtensa target-features
18451
18452The tracking issue for this feature is: [#157063]
18453
18454[#157063]: https://github.com/rust-lang/rust/issues/157063
18455
18456------------------------
18457"##,
18458        default_severity: Severity::Allow,
18459        warn_since: None,
18460        deny_since: None,
18461    },
18462    Lint {
18463        label: "yeet_desugar_details",
18464        description: r##"# `yeet_desugar_details`
18465
18466
18467
18468This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
18469
18470------------------------
18471"##,
18472        default_severity: Severity::Allow,
18473        warn_since: None,
18474        deny_since: None,
18475    },
18476    Lint {
18477        label: "yeet_expr",
18478        description: r##"# `yeet_expr`
18479
18480The tracking issue for this feature is: [#96373]
18481
18482[#96373]: https://github.com/rust-lang/rust/issues/96373
18483
18484------------------------
18485
18486The `yeet_expr` feature adds support for `do yeet` expressions,
18487which can be used to early-exit from a function or `try` block.
18488
18489These are highly experimental, thus the placeholder syntax.
18490
18491```rust,edition2021
18492#![feature(yeet_expr)]
18493
18494fn foo() -> Result<String, i32> {
18495    do yeet 4;
18496}
18497assert_eq!(foo(), Err(4));
18498
18499fn bar() -> Option<String> {
18500    do yeet;
18501}
18502assert_eq!(bar(), None);
18503```
18504"##,
18505        default_severity: Severity::Allow,
18506        warn_since: None,
18507        deny_since: None,
18508    },
18509    Lint {
18510        label: "yield_expr",
18511        description: r##"# `yield_expr`
18512
18513Allows the `yield` keyword for coroutines/generators.
18514
18515The tracking issue for this feature is: [#43122]
18516
18517[#43122]: https://github.com/rust-lang/rust/issues/43122
18518
18519------------------------
18520"##,
18521        default_severity: Severity::Allow,
18522        warn_since: None,
18523        deny_since: None,
18524    },
18525];
18526
18527pub const CLIPPY_LINTS: &[Lint] = &[
18528    Lint {
18529        label: "clippy::absolute_paths",
18530        description: r##"Checks for usage of items through absolute paths, like `std::env::current_dir`."##,
18531        default_severity: Severity::Allow,
18532        warn_since: None,
18533        deny_since: None,
18534    },
18535    Lint {
18536        label: "clippy::absurd_extreme_comparisons",
18537        description: r##"Checks for comparisons where one side of the relation is
18538either the minimum or maximum value for its type and warns if it involves a
18539case that is always true or always false. Only integer and boolean types are
18540checked."##,
18541        default_severity: Severity::Allow,
18542        warn_since: None,
18543        deny_since: None,
18544    },
18545    Lint {
18546        label: "clippy::alloc_instead_of_core",
18547        description: r##"Finds items imported through `alloc` when available through `core`."##,
18548        default_severity: Severity::Allow,
18549        warn_since: None,
18550        deny_since: None,
18551    },
18552    Lint {
18553        label: "clippy::allow_attributes",
18554        description: r##"Checks for usage of the `#[allow]` attribute and suggests replacing it with
18555the `#[expect]` (See [RFC 2383](https://rust-lang.github.io/rfcs/2383-lint-reasons.html))
18556
18557This lint only warns outer attributes (`#[allow]`), as inner attributes
18558(`#![allow]`) are usually used to enable or disable lints on a global scale."##,
18559        default_severity: Severity::Allow,
18560        warn_since: None,
18561        deny_since: None,
18562    },
18563    Lint {
18564        label: "clippy::allow_attributes_without_reason",
18565        description: r##"Checks for attributes that allow lints without a reason."##,
18566        default_severity: Severity::Allow,
18567        warn_since: None,
18568        deny_since: None,
18569    },
18570    Lint {
18571        label: "clippy::almost_complete_range",
18572        description: r##"Checks for ranges which almost include the entire range of letters from 'a' to 'z'
18573or digits from '0' to '9', but don't because they're a half open range."##,
18574        default_severity: Severity::Allow,
18575        warn_since: None,
18576        deny_since: None,
18577    },
18578    Lint {
18579        label: "clippy::almost_swapped",
18580        description: r##"Checks for `foo = bar; bar = foo` sequences."##,
18581        default_severity: Severity::Allow,
18582        warn_since: None,
18583        deny_since: None,
18584    },
18585    Lint {
18586        label: "clippy::approx_constant",
18587        description: r##"Checks for floating point literals that approximate
18588constants which are defined in
18589[`std::f32::consts`](https://doc.rust-lang.org/stable/std/f32/consts/#constants)
18590or
18591[`std::f64::consts`](https://doc.rust-lang.org/stable/std/f64/consts/#constants),
18592respectively, suggesting to use the predefined constant."##,
18593        default_severity: Severity::Allow,
18594        warn_since: None,
18595        deny_since: None,
18596    },
18597    Lint {
18598        label: "clippy::arc_with_non_send_sync",
18599        description: r##".
18600This lint warns when you use `Arc` with a type that does not implement `Send` or `Sync`."##,
18601        default_severity: Severity::Allow,
18602        warn_since: None,
18603        deny_since: None,
18604    },
18605    Lint {
18606        label: "clippy::arithmetic_side_effects",
18607        description: r##"Checks any kind of arithmetic operation of any type.
18608
18609Operators like `+`, `-`, `*` or `<<` are usually capable of overflowing according to the [Rust
18610Reference](https://doc.rust-lang.org/reference/expressions/operator-expr.html#overflow),
18611or can panic (`/`, `%`).
18612
18613Known safe built-in types like `Wrapping` or `Saturating`, floats, operations in constant
18614environments, allowed types and non-constant operations that won't overflow are ignored."##,
18615        default_severity: Severity::Allow,
18616        warn_since: None,
18617        deny_since: None,
18618    },
18619    Lint {
18620        label: "clippy::as_conversions",
18621        description: r##"Checks for usage of `as` conversions.
18622
18623Note that this lint is specialized in linting *every single* use of `as`
18624regardless of whether good alternatives exist or not.
18625If you want more precise lints for `as`, please consider using these separate lints:
18626`unnecessary_cast`, `cast_lossless/cast_possible_truncation/cast_possible_wrap/cast_precision_loss/cast_sign_loss`,
18627`fn_to_numeric_cast(_with_truncation)`, `char_lit_as_u8`, `ref_to_mut` and `ptr_as_ptr`.
18628There is a good explanation the reason why this lint should work in this way and how it is useful
18629[in this issue](https://github.com/rust-lang/rust-clippy/issues/5122)."##,
18630        default_severity: Severity::Allow,
18631        warn_since: None,
18632        deny_since: None,
18633    },
18634    Lint {
18635        label: "clippy::as_ptr_cast_mut",
18636        description: r##"Checks for the result of a `&self`-taking `as_ptr` being cast to a mutable pointer."##,
18637        default_severity: Severity::Allow,
18638        warn_since: None,
18639        deny_since: None,
18640    },
18641    Lint {
18642        label: "clippy::as_underscore",
18643        description: r##"Checks for the usage of `as _` conversion using inferred type."##,
18644        default_severity: Severity::Allow,
18645        warn_since: None,
18646        deny_since: None,
18647    },
18648    Lint {
18649        label: "clippy::assertions_on_constants",
18650        description: r##"Checks for `assert!(true)` and `assert!(false)` calls."##,
18651        default_severity: Severity::Allow,
18652        warn_since: None,
18653        deny_since: None,
18654    },
18655    Lint {
18656        label: "clippy::assertions_on_result_states",
18657        description: r##"Checks for `assert!(r.is_ok())` or `assert!(r.is_err())` calls."##,
18658        default_severity: Severity::Allow,
18659        warn_since: None,
18660        deny_since: None,
18661    },
18662    Lint {
18663        label: "clippy::assign_op_pattern",
18664        description: r##"Checks for `a = a op b` or `a = b commutative_op a`
18665patterns."##,
18666        default_severity: Severity::Allow,
18667        warn_since: None,
18668        deny_since: None,
18669    },
18670    Lint {
18671        label: "clippy::assign_ops",
18672        description: r##"Nothing. This lint has been deprecated"##,
18673        default_severity: Severity::Allow,
18674        warn_since: None,
18675        deny_since: None,
18676    },
18677    Lint {
18678        label: "clippy::assigning_clones",
18679        description: r##"Checks for code like `foo = bar.clone();`"##,
18680        default_severity: Severity::Allow,
18681        warn_since: None,
18682        deny_since: None,
18683    },
18684    Lint {
18685        label: "clippy::async_yields_async",
18686        description: r##"Checks for async blocks that yield values of types
18687that can themselves be awaited."##,
18688        default_severity: Severity::Allow,
18689        warn_since: None,
18690        deny_since: None,
18691    },
18692    Lint {
18693        label: "clippy::await_holding_invalid_type",
18694        description: r##"Allows users to configure types which should not be held across await
18695suspension points."##,
18696        default_severity: Severity::Allow,
18697        warn_since: None,
18698        deny_since: None,
18699    },
18700    Lint {
18701        label: "clippy::await_holding_lock",
18702        description: r##"Checks for calls to `await` while holding a non-async-aware
18703`MutexGuard`."##,
18704        default_severity: Severity::Allow,
18705        warn_since: None,
18706        deny_since: None,
18707    },
18708    Lint {
18709        label: "clippy::await_holding_refcell_ref",
18710        description: r##"Checks for calls to `await` while holding a `RefCell`, `Ref`, or `RefMut`."##,
18711        default_severity: Severity::Allow,
18712        warn_since: None,
18713        deny_since: None,
18714    },
18715    Lint {
18716        label: "clippy::bad_bit_mask",
18717        description: r##"Checks for incompatible bit masks in comparisons.
18718
18719The formula for detecting if an expression of the type `_ <bit_op> m
18720<cmp_op> c` (where `<bit_op>` is one of {`&`, `|`} and `<cmp_op>` is one of
18721{`!=`, `>=`, `>`, `!=`, `>=`, `>`}) can be determined from the following
18722table:
18723
18724|Comparison  |Bit Op|Example      |is always|Formula               |
18725|------------|------|-------------|---------|----------------------|
18726|`==` or `!=`| `&`  |`x & 2 == 3` |`false`  |`c & m != c`          |
18727|`<`  or `>=`| `&`  |`x & 2 < 3`  |`true`   |`m < c`               |
18728|`>`  or `<=`| `&`  |`x & 1 > 1`  |`false`  |`m <= c`              |
18729|`==` or `!=`| `\\|` |`x \\| 1 == 0`|`false`  |`c \\| m != c`         |
18730|`<`  or `>=`| `\\|` |`x \\| 1 < 1` |`false`  |`m >= c`              |
18731|`<=` or `>` | `\\|` |`x \\| 1 > 0` |`true`   |`m > c`               |"##,
18732        default_severity: Severity::Allow,
18733        warn_since: None,
18734        deny_since: None,
18735    },
18736    Lint {
18737        label: "clippy::big_endian_bytes",
18738        description: r##"Checks for the usage of the `to_be_bytes` method and/or the function `from_be_bytes`."##,
18739        default_severity: Severity::Allow,
18740        warn_since: None,
18741        deny_since: None,
18742    },
18743    Lint {
18744        label: "clippy::bind_instead_of_map",
18745        description: r##"Checks for usage of `_.and_then(|x| Some(y))`, `_.and_then(|x| Ok(y))`
18746or `_.or_else(|x| Err(y))`."##,
18747        default_severity: Severity::Allow,
18748        warn_since: None,
18749        deny_since: None,
18750    },
18751    Lint {
18752        label: "clippy::blanket_clippy_restriction_lints",
18753        description: r##"Checks for `warn`/`deny`/`forbid` attributes targeting the whole clippy::restriction category."##,
18754        default_severity: Severity::Allow,
18755        warn_since: None,
18756        deny_since: None,
18757    },
18758    Lint {
18759        label: "clippy::blocks_in_conditions",
18760        description: r##"Checks for `if` and `match` conditions that use blocks containing an
18761expression, statements or conditions that use closures with blocks."##,
18762        default_severity: Severity::Allow,
18763        warn_since: None,
18764        deny_since: None,
18765    },
18766    Lint {
18767        label: "clippy::bool_assert_comparison",
18768        description: r##"This lint warns about boolean comparisons in assert-like macros."##,
18769        default_severity: Severity::Allow,
18770        warn_since: None,
18771        deny_since: None,
18772    },
18773    Lint {
18774        label: "clippy::bool_comparison",
18775        description: r##"Checks for expressions of the form `x == true`,
18776`x != true` and order comparisons such as `x < true` (or vice versa) and
18777suggest using the variable directly."##,
18778        default_severity: Severity::Allow,
18779        warn_since: None,
18780        deny_since: None,
18781    },
18782    Lint {
18783        label: "clippy::bool_to_int_with_if",
18784        description: r##"Instead of using an if statement to convert a bool to an int,
18785this lint suggests using a `from()` function or an `as` coercion."##,
18786        default_severity: Severity::Allow,
18787        warn_since: None,
18788        deny_since: None,
18789    },
18790    Lint {
18791        label: "clippy::borrow_as_ptr",
18792        description: r##"Checks for the usage of `&expr as *const T` or
18793`&mut expr as *mut T`, and suggest using `ptr::addr_of` or
18794`ptr::addr_of_mut` instead."##,
18795        default_severity: Severity::Allow,
18796        warn_since: None,
18797        deny_since: None,
18798    },
18799    Lint {
18800        label: "clippy::borrow_deref_ref",
18801        description: r##"Checks for `&*(&T)`."##,
18802        default_severity: Severity::Allow,
18803        warn_since: None,
18804        deny_since: None,
18805    },
18806    Lint {
18807        label: "clippy::borrow_interior_mutable_const",
18808        description: r##"Checks if `const` items which is interior mutable (e.g.,
18809contains a `Cell`, `Mutex`, `AtomicXxxx`, etc.) has been borrowed directly."##,
18810        default_severity: Severity::Allow,
18811        warn_since: None,
18812        deny_since: None,
18813    },
18814    Lint {
18815        label: "clippy::borrowed_box",
18816        description: r##"Checks for usage of `&Box<T>` anywhere in the code.
18817Check the [Box documentation](https://doc.rust-lang.org/std/boxed/index.html) for more information."##,
18818        default_severity: Severity::Allow,
18819        warn_since: None,
18820        deny_since: None,
18821    },
18822    Lint {
18823        label: "clippy::box_collection",
18824        description: r##"Checks for usage of `Box<T>` where T is a collection such as Vec anywhere in the code.
18825Check the [Box documentation](https://doc.rust-lang.org/std/boxed/index.html) for more information."##,
18826        default_severity: Severity::Allow,
18827        warn_since: None,
18828        deny_since: None,
18829    },
18830    Lint {
18831        label: "clippy::box_default",
18832        description: r##"checks for `Box::new(Default::default())`, which can be written as
18833`Box::default()`."##,
18834        default_severity: Severity::Allow,
18835        warn_since: None,
18836        deny_since: None,
18837    },
18838    Lint {
18839        label: "clippy::boxed_local",
18840        description: r##"Checks for usage of `Box<T>` where an unboxed `T` would
18841work fine."##,
18842        default_severity: Severity::Allow,
18843        warn_since: None,
18844        deny_since: None,
18845    },
18846    Lint {
18847        label: "clippy::branches_sharing_code",
18848        description: r##"Checks if the `if` and `else` block contain shared code that can be
18849moved out of the blocks."##,
18850        default_severity: Severity::Allow,
18851        warn_since: None,
18852        deny_since: None,
18853    },
18854    Lint {
18855        label: "clippy::builtin_type_shadow",
18856        description: r##"Warns if a generic shadows a built-in type."##,
18857        default_severity: Severity::Allow,
18858        warn_since: None,
18859        deny_since: None,
18860    },
18861    Lint {
18862        label: "clippy::byte_char_slices",
18863        description: r##"Checks for hard to read slices of byte characters, that could be more easily expressed as a
18864byte string."##,
18865        default_severity: Severity::Allow,
18866        warn_since: None,
18867        deny_since: None,
18868    },
18869    Lint {
18870        label: "clippy::bytes_count_to_len",
18871        description: r##"It checks for `str::bytes().count()` and suggests replacing it with
18872`str::len()`."##,
18873        default_severity: Severity::Allow,
18874        warn_since: None,
18875        deny_since: None,
18876    },
18877    Lint {
18878        label: "clippy::bytes_nth",
18879        description: r##"Checks for the use of `.bytes().nth()`."##,
18880        default_severity: Severity::Allow,
18881        warn_since: None,
18882        deny_since: None,
18883    },
18884    Lint {
18885        label: "clippy::cargo_common_metadata",
18886        description: r##"Checks to see if all common metadata is defined in
18887`Cargo.toml`. See: https://rust-lang-nursery.github.io/api-guidelines/documentation.html#cargotoml-includes-all-common-metadata-c-metadata"##,
18888        default_severity: Severity::Allow,
18889        warn_since: None,
18890        deny_since: None,
18891    },
18892    Lint {
18893        label: "clippy::case_sensitive_file_extension_comparisons",
18894        description: r##"Checks for calls to `ends_with` with possible file extensions
18895and suggests to use a case-insensitive approach instead."##,
18896        default_severity: Severity::Allow,
18897        warn_since: None,
18898        deny_since: None,
18899    },
18900    Lint {
18901        label: "clippy::cast_abs_to_unsigned",
18902        description: r##"Checks for usage of the `abs()` method that cast the result to unsigned."##,
18903        default_severity: Severity::Allow,
18904        warn_since: None,
18905        deny_since: None,
18906    },
18907    Lint {
18908        label: "clippy::cast_enum_constructor",
18909        description: r##"Checks for casts from an enum tuple constructor to an integer."##,
18910        default_severity: Severity::Allow,
18911        warn_since: None,
18912        deny_since: None,
18913    },
18914    Lint {
18915        label: "clippy::cast_enum_truncation",
18916        description: r##"Checks for casts from an enum type to an integral type that will definitely truncate the
18917value."##,
18918        default_severity: Severity::Allow,
18919        warn_since: None,
18920        deny_since: None,
18921    },
18922    Lint {
18923        label: "clippy::cast_lossless",
18924        description: r##"Checks for casts between numeric types that can be replaced by safe
18925conversion functions."##,
18926        default_severity: Severity::Allow,
18927        warn_since: None,
18928        deny_since: None,
18929    },
18930    Lint {
18931        label: "clippy::cast_nan_to_int",
18932        description: r##"Checks for a known NaN float being cast to an integer"##,
18933        default_severity: Severity::Allow,
18934        warn_since: None,
18935        deny_since: None,
18936    },
18937    Lint {
18938        label: "clippy::cast_possible_truncation",
18939        description: r##"Checks for casts between numeric types that may
18940truncate large values. This is expected behavior, so the cast is `Allow` by
18941default. It suggests user either explicitly ignore the lint,
18942or use `try_from()` and handle the truncation, default, or panic explicitly."##,
18943        default_severity: Severity::Allow,
18944        warn_since: None,
18945        deny_since: None,
18946    },
18947    Lint {
18948        label: "clippy::cast_possible_wrap",
18949        description: r##"Checks for casts from an unsigned type to a signed type of
18950the same size, or possibly smaller due to target-dependent integers.
18951Performing such a cast is a no-op for the compiler (that is, nothing is
18952changed at the bit level), and the binary representation of the value is
18953reinterpreted. This can cause wrapping if the value is too big
18954for the target signed type. However, the cast works as defined, so this lint
18955is `Allow` by default."##,
18956        default_severity: Severity::Allow,
18957        warn_since: None,
18958        deny_since: None,
18959    },
18960    Lint {
18961        label: "clippy::cast_precision_loss",
18962        description: r##"Checks for casts from any numeric type to a float type where
18963the receiving type cannot store all values from the original type without
18964rounding errors. This possible rounding is to be expected, so this lint is
18965`Allow` by default.
18966
18967Basically, this warns on casting any integer with 32 or more bits to `f32`
18968or any 64-bit integer to `f64`."##,
18969        default_severity: Severity::Allow,
18970        warn_since: None,
18971        deny_since: None,
18972    },
18973    Lint {
18974        label: "clippy::cast_ptr_alignment",
18975        description: r##"Checks for casts, using `as` or `pointer::cast`, from a
18976less strictly aligned pointer to a more strictly aligned pointer."##,
18977        default_severity: Severity::Allow,
18978        warn_since: None,
18979        deny_since: None,
18980    },
18981    Lint {
18982        label: "clippy::cast_sign_loss",
18983        description: r##"Checks for casts from a signed to an unsigned numeric
18984type. In this case, negative values wrap around to large positive values,
18985which can be quite surprising in practice. However, since the cast works as
18986defined, this lint is `Allow` by default."##,
18987        default_severity: Severity::Allow,
18988        warn_since: None,
18989        deny_since: None,
18990    },
18991    Lint {
18992        label: "clippy::cast_slice_different_sizes",
18993        description: r##"Checks for `as` casts between raw pointers to slices with differently sized elements."##,
18994        default_severity: Severity::Allow,
18995        warn_since: None,
18996        deny_since: None,
18997    },
18998    Lint {
18999        label: "clippy::cast_slice_from_raw_parts",
19000        description: r##"Checks for a raw slice being cast to a slice pointer"##,
19001        default_severity: Severity::Allow,
19002        warn_since: None,
19003        deny_since: None,
19004    },
19005    Lint {
19006        label: "clippy::cfg_not_test",
19007        description: r##"Checks for usage of `cfg` that excludes code from `test` builds. (i.e., `#[cfg(not(test))]`)"##,
19008        default_severity: Severity::Allow,
19009        warn_since: None,
19010        deny_since: None,
19011    },
19012    Lint {
19013        label: "clippy::char_lit_as_u8",
19014        description: r##"Checks for expressions where a character literal is cast
19015to `u8` and suggests using a byte literal instead."##,
19016        default_severity: Severity::Allow,
19017        warn_since: None,
19018        deny_since: None,
19019    },
19020    Lint {
19021        label: "clippy::chars_last_cmp",
19022        description: r##"Checks for usage of `_.chars().last()` or
19023`_.chars().next_back()` on a `str` to check if it ends with a given char."##,
19024        default_severity: Severity::Allow,
19025        warn_since: None,
19026        deny_since: None,
19027    },
19028    Lint {
19029        label: "clippy::chars_next_cmp",
19030        description: r##"Checks for usage of `.chars().next()` on a `str` to check
19031if it starts with a given char."##,
19032        default_severity: Severity::Allow,
19033        warn_since: None,
19034        deny_since: None,
19035    },
19036    Lint {
19037        label: "clippy::checked_conversions",
19038        description: r##"Checks for explicit bounds checking when casting."##,
19039        default_severity: Severity::Allow,
19040        warn_since: None,
19041        deny_since: None,
19042    },
19043    Lint {
19044        label: "clippy::clear_with_drain",
19045        description: r##"Checks for usage of `.drain(..)` for the sole purpose of clearing a container."##,
19046        default_severity: Severity::Allow,
19047        warn_since: None,
19048        deny_since: None,
19049    },
19050    Lint {
19051        label: "clippy::clone_on_copy",
19052        description: r##"Checks for usage of `.clone()` on a `Copy` type."##,
19053        default_severity: Severity::Allow,
19054        warn_since: None,
19055        deny_since: None,
19056    },
19057    Lint {
19058        label: "clippy::clone_on_ref_ptr",
19059        description: r##"Checks for usage of `.clone()` on a ref-counted pointer,
19060(`Rc`, `Arc`, `rc::Weak`, or `sync::Weak`), and suggests calling Clone via unified
19061function syntax instead (e.g., `Rc::clone(foo)`)."##,
19062        default_severity: Severity::Allow,
19063        warn_since: None,
19064        deny_since: None,
19065    },
19066    Lint {
19067        label: "clippy::cloned_instead_of_copied",
19068        description: r##"Checks for usage of `cloned()` on an `Iterator` or `Option` where
19069`copied()` could be used instead."##,
19070        default_severity: Severity::Allow,
19071        warn_since: None,
19072        deny_since: None,
19073    },
19074    Lint {
19075        label: "clippy::cmp_null",
19076        description: r##"This lint checks for equality comparisons with `ptr::null`"##,
19077        default_severity: Severity::Allow,
19078        warn_since: None,
19079        deny_since: None,
19080    },
19081    Lint {
19082        label: "clippy::cmp_owned",
19083        description: r##"Checks for conversions to owned values just for the sake
19084of a comparison."##,
19085        default_severity: Severity::Allow,
19086        warn_since: None,
19087        deny_since: None,
19088    },
19089    Lint {
19090        label: "clippy::cognitive_complexity",
19091        description: r##"Checks for methods with high cognitive complexity."##,
19092        default_severity: Severity::Allow,
19093        warn_since: None,
19094        deny_since: None,
19095    },
19096    Lint {
19097        label: "clippy::collapsible_else_if",
19098        description: r##"Checks for collapsible `else { if ... }` expressions
19099that can be collapsed to `else if ...`."##,
19100        default_severity: Severity::Allow,
19101        warn_since: None,
19102        deny_since: None,
19103    },
19104    Lint {
19105        label: "clippy::collapsible_if",
19106        description: r##"Checks for nested `if` statements which can be collapsed
19107by `&&`-combining their conditions."##,
19108        default_severity: Severity::Allow,
19109        warn_since: None,
19110        deny_since: None,
19111    },
19112    Lint {
19113        label: "clippy::collapsible_match",
19114        description: r##"Finds nested `match` or `if let` expressions where the patterns may be collapsed together
19115without adding any branches.
19116
19117Note that this lint is not intended to find _all_ cases where nested match patterns can be merged, but only
19118cases where merging would most likely make the code more readable."##,
19119        default_severity: Severity::Allow,
19120        warn_since: None,
19121        deny_since: None,
19122    },
19123    Lint {
19124        label: "clippy::collapsible_str_replace",
19125        description: r##"Checks for consecutive calls to `str::replace` (2 or more)
19126that can be collapsed into a single call."##,
19127        default_severity: Severity::Allow,
19128        warn_since: None,
19129        deny_since: None,
19130    },
19131    Lint {
19132        label: "clippy::collection_is_never_read",
19133        description: r##"Checks for collections that are never queried."##,
19134        default_severity: Severity::Allow,
19135        warn_since: None,
19136        deny_since: None,
19137    },
19138    Lint {
19139        label: "clippy::comparison_chain",
19140        description: r##"Checks comparison chains written with `if` that can be
19141rewritten with `match` and `cmp`."##,
19142        default_severity: Severity::Allow,
19143        warn_since: None,
19144        deny_since: None,
19145    },
19146    Lint {
19147        label: "clippy::comparison_to_empty",
19148        description: r##"Checks for comparing to an empty slice such as `` or `[]`,
19149and suggests using `.is_empty()` where applicable."##,
19150        default_severity: Severity::Allow,
19151        warn_since: None,
19152        deny_since: None,
19153    },
19154    Lint {
19155        label: "clippy::const_is_empty",
19156        description: r##"It identifies calls to `.is_empty()` on constant values."##,
19157        default_severity: Severity::Allow,
19158        warn_since: None,
19159        deny_since: None,
19160    },
19161    Lint {
19162        label: "clippy::copy_iterator",
19163        description: r##"Checks for types that implement `Copy` as well as
19164`Iterator`."##,
19165        default_severity: Severity::Allow,
19166        warn_since: None,
19167        deny_since: None,
19168    },
19169    Lint {
19170        label: "clippy::crate_in_macro_def",
19171        description: r##"Checks for usage of `crate` as opposed to `$crate` in a macro definition."##,
19172        default_severity: Severity::Allow,
19173        warn_since: None,
19174        deny_since: None,
19175    },
19176    Lint {
19177        label: "clippy::create_dir",
19178        description: r##"Checks usage of `std::fs::create_dir` and suggest using `std::fs::create_dir_all` instead."##,
19179        default_severity: Severity::Allow,
19180        warn_since: None,
19181        deny_since: None,
19182    },
19183    Lint {
19184        label: "clippy::crosspointer_transmute",
19185        description: r##"Checks for transmutes between a type `T` and `*T`."##,
19186        default_severity: Severity::Allow,
19187        warn_since: None,
19188        deny_since: None,
19189    },
19190    Lint {
19191        label: "clippy::dbg_macro",
19192        description: r##"Checks for usage of the [`dbg!`](https://doc.rust-lang.org/std/macro.dbg.html) macro."##,
19193        default_severity: Severity::Allow,
19194        warn_since: None,
19195        deny_since: None,
19196    },
19197    Lint {
19198        label: "clippy::debug_assert_with_mut_call",
19199        description: r##"Checks for function/method calls with a mutable
19200parameter in `debug_assert!`, `debug_assert_eq!` and `debug_assert_ne!` macros."##,
19201        default_severity: Severity::Allow,
19202        warn_since: None,
19203        deny_since: None,
19204    },
19205    Lint {
19206        label: "clippy::decimal_literal_representation",
19207        description: r##"Warns if there is a better representation for a numeric literal."##,
19208        default_severity: Severity::Allow,
19209        warn_since: None,
19210        deny_since: None,
19211    },
19212    Lint {
19213        label: "clippy::declare_interior_mutable_const",
19214        description: r##"Checks for declaration of `const` items which is interior
19215mutable (e.g., contains a `Cell`, `Mutex`, `AtomicXxxx`, etc.)."##,
19216        default_severity: Severity::Allow,
19217        warn_since: None,
19218        deny_since: None,
19219    },
19220    Lint {
19221        label: "clippy::default_constructed_unit_structs",
19222        description: r##"Checks for construction on unit struct using `default`."##,
19223        default_severity: Severity::Allow,
19224        warn_since: None,
19225        deny_since: None,
19226    },
19227    Lint {
19228        label: "clippy::default_instead_of_iter_empty",
19229        description: r##"It checks for `std::iter::Empty::default()` and suggests replacing it with
19230`std::iter::empty()`."##,
19231        default_severity: Severity::Allow,
19232        warn_since: None,
19233        deny_since: None,
19234    },
19235    Lint {
19236        label: "clippy::default_numeric_fallback",
19237        description: r##"Checks for usage of unconstrained numeric literals which may cause default numeric fallback in type
19238inference.
19239
19240Default numeric fallback means that if numeric types have not yet been bound to concrete
19241types at the end of type inference, then integer type is bound to `i32`, and similarly
19242floating type is bound to `f64`.
19243
19244See [RFC0212](https://github.com/rust-lang/rfcs/blob/master/text/0212-restore-int-fallback.md) for more information about the fallback."##,
19245        default_severity: Severity::Allow,
19246        warn_since: None,
19247        deny_since: None,
19248    },
19249    Lint {
19250        label: "clippy::default_trait_access",
19251        description: r##"Checks for literal calls to `Default::default()`."##,
19252        default_severity: Severity::Allow,
19253        warn_since: None,
19254        deny_since: None,
19255    },
19256    Lint {
19257        label: "clippy::default_union_representation",
19258        description: r##"Displays a warning when a union is declared with the default representation (without a `#[repr(C)]` attribute)."##,
19259        default_severity: Severity::Allow,
19260        warn_since: None,
19261        deny_since: None,
19262    },
19263    Lint {
19264        label: "clippy::deprecated_cfg_attr",
19265        description: r##"Checks for `#[cfg_attr(rustfmt, rustfmt_skip)]` and suggests to replace it
19266with `#[rustfmt::skip]`."##,
19267        default_severity: Severity::Allow,
19268        warn_since: None,
19269        deny_since: None,
19270    },
19271    Lint {
19272        label: "clippy::deprecated_clippy_cfg_attr",
19273        description: r##"Checks for `#[cfg_attr(feature = cargo-clippy, ...)]` and for
19274`#[cfg(feature = cargo-clippy)]` and suggests to replace it with
19275`#[cfg_attr(clippy, ...)]` or `#[cfg(clippy)]`."##,
19276        default_severity: Severity::Allow,
19277        warn_since: None,
19278        deny_since: None,
19279    },
19280    Lint {
19281        label: "clippy::deprecated_semver",
19282        description: r##"Checks for `#[deprecated]` annotations with a `since`
19283field that is not a valid semantic version. Also allows TBD to signal
19284future deprecation."##,
19285        default_severity: Severity::Allow,
19286        warn_since: None,
19287        deny_since: None,
19288    },
19289    Lint {
19290        label: "clippy::deref_addrof",
19291        description: r##"Checks for usage of `*&` and `*&mut` in expressions."##,
19292        default_severity: Severity::Allow,
19293        warn_since: None,
19294        deny_since: None,
19295    },
19296    Lint {
19297        label: "clippy::deref_by_slicing",
19298        description: r##"Checks for slicing expressions which are equivalent to dereferencing the
19299value."##,
19300        default_severity: Severity::Allow,
19301        warn_since: None,
19302        deny_since: None,
19303    },
19304    Lint {
19305        label: "clippy::derivable_impls",
19306        description: r##"Detects manual `std::default::Default` implementations that are identical to a derived implementation."##,
19307        default_severity: Severity::Allow,
19308        warn_since: None,
19309        deny_since: None,
19310    },
19311    Lint {
19312        label: "clippy::derive_ord_xor_partial_ord",
19313        description: r##"Lints against manual `PartialOrd` and `Ord` implementations for types with a derived `Ord`
19314or `PartialOrd` implementation."##,
19315        default_severity: Severity::Allow,
19316        warn_since: None,
19317        deny_since: None,
19318    },
19319    Lint {
19320        label: "clippy::derive_partial_eq_without_eq",
19321        description: r##"Checks for types that derive `PartialEq` and could implement `Eq`."##,
19322        default_severity: Severity::Allow,
19323        warn_since: None,
19324        deny_since: None,
19325    },
19326    Lint {
19327        label: "clippy::derived_hash_with_manual_eq",
19328        description: r##"Lints against manual `PartialEq` implementations for types with a derived `Hash`
19329implementation."##,
19330        default_severity: Severity::Allow,
19331        warn_since: None,
19332        deny_since: None,
19333    },
19334    Lint {
19335        label: "clippy::disallowed_macros",
19336        description: r##"Denies the configured macros in clippy.toml
19337
19338Note: Even though this lint is warn-by-default, it will only trigger if
19339macros are defined in the clippy.toml file."##,
19340        default_severity: Severity::Allow,
19341        warn_since: None,
19342        deny_since: None,
19343    },
19344    Lint {
19345        label: "clippy::disallowed_methods",
19346        description: r##"Denies the configured methods and functions in clippy.toml
19347
19348Note: Even though this lint is warn-by-default, it will only trigger if
19349methods are defined in the clippy.toml file."##,
19350        default_severity: Severity::Allow,
19351        warn_since: None,
19352        deny_since: None,
19353    },
19354    Lint {
19355        label: "clippy::disallowed_names",
19356        description: r##"Checks for usage of disallowed names for variables, such
19357as `foo`."##,
19358        default_severity: Severity::Allow,
19359        warn_since: None,
19360        deny_since: None,
19361    },
19362    Lint {
19363        label: "clippy::disallowed_script_idents",
19364        description: r##"Checks for usage of unicode scripts other than those explicitly allowed
19365by the lint config.
19366
19367This lint doesn't take into account non-text scripts such as `Unknown` and `Linear_A`.
19368It also ignores the `Common` script type.
19369While configuring, be sure to use official script name [aliases] from
19370[the list of supported scripts][supported_scripts].
19371
19372See also: [`non_ascii_idents`].
19373
19374[aliases]: http://www.unicode.org/reports/tr24/tr24-31.html#Script_Value_Aliases
19375[supported_scripts]: https://www.unicode.org/iso15924/iso15924-codes.html"##,
19376        default_severity: Severity::Allow,
19377        warn_since: None,
19378        deny_since: None,
19379    },
19380    Lint {
19381        label: "clippy::disallowed_types",
19382        description: r##"Denies the configured types in clippy.toml.
19383
19384Note: Even though this lint is warn-by-default, it will only trigger if
19385types are defined in the clippy.toml file."##,
19386        default_severity: Severity::Allow,
19387        warn_since: None,
19388        deny_since: None,
19389    },
19390    Lint {
19391        label: "clippy::diverging_sub_expression",
19392        description: r##"Checks for diverging calls that are not match arms or
19393statements."##,
19394        default_severity: Severity::Allow,
19395        warn_since: None,
19396        deny_since: None,
19397    },
19398    Lint {
19399        label: "clippy::doc_lazy_continuation",
19400        description: r##"In CommonMark Markdown, the language used to write doc comments, a
19401paragraph nested within a list or block quote does not need any line
19402after the first one to be indented or marked. The specification calls
19403this a lazy paragraph continuation."##,
19404        default_severity: Severity::Allow,
19405        warn_since: None,
19406        deny_since: None,
19407    },
19408    Lint {
19409        label: "clippy::doc_link_with_quotes",
19410        description: r##"Detects the syntax `['foo']` in documentation comments (notice quotes instead of backticks)
19411outside of code blocks"##,
19412        default_severity: Severity::Allow,
19413        warn_since: None,
19414        deny_since: None,
19415    },
19416    Lint {
19417        label: "clippy::doc_markdown",
19418        description: r##"Checks for the presence of `_`, `::` or camel-case words
19419outside ticks in documentation."##,
19420        default_severity: Severity::Allow,
19421        warn_since: None,
19422        deny_since: None,
19423    },
19424    Lint {
19425        label: "clippy::double_comparisons",
19426        description: r##"Checks for double comparisons that could be simplified to a single expression."##,
19427        default_severity: Severity::Allow,
19428        warn_since: None,
19429        deny_since: None,
19430    },
19431    Lint {
19432        label: "clippy::double_must_use",
19433        description: r##"Checks for a `#[must_use]` attribute without
19434further information on functions and methods that return a type already
19435marked as `#[must_use]`."##,
19436        default_severity: Severity::Allow,
19437        warn_since: None,
19438        deny_since: None,
19439    },
19440    Lint {
19441        label: "clippy::double_neg",
19442        description: r##"Detects expressions of the form `--x`."##,
19443        default_severity: Severity::Allow,
19444        warn_since: None,
19445        deny_since: None,
19446    },
19447    Lint {
19448        label: "clippy::double_parens",
19449        description: r##"Checks for unnecessary double parentheses."##,
19450        default_severity: Severity::Allow,
19451        warn_since: None,
19452        deny_since: None,
19453    },
19454    Lint {
19455        label: "clippy::drain_collect",
19456        description: r##"Checks for calls to `.drain()` that clear the collection, immediately followed by a call to `.collect()`.
19457
19458> Collection in this context refers to any type with a `drain` method:
19459> `Vec`, `VecDeque`, `BinaryHeap`, `HashSet`,`HashMap`, `String`"##,
19460        default_severity: Severity::Allow,
19461        warn_since: None,
19462        deny_since: None,
19463    },
19464    Lint {
19465        label: "clippy::drop_non_drop",
19466        description: r##"Checks for calls to `std::mem::drop` with a value that does not implement `Drop`."##,
19467        default_severity: Severity::Allow,
19468        warn_since: None,
19469        deny_since: None,
19470    },
19471    Lint {
19472        label: "clippy::duplicate_mod",
19473        description: r##"Checks for files that are included as modules multiple times."##,
19474        default_severity: Severity::Allow,
19475        warn_since: None,
19476        deny_since: None,
19477    },
19478    Lint {
19479        label: "clippy::duplicate_underscore_argument",
19480        description: r##"Checks for function arguments having the similar names
19481differing by an underscore."##,
19482        default_severity: Severity::Allow,
19483        warn_since: None,
19484        deny_since: None,
19485    },
19486    Lint {
19487        label: "clippy::duplicated_attributes",
19488        description: r##"Checks for attributes that appear two or more times."##,
19489        default_severity: Severity::Allow,
19490        warn_since: None,
19491        deny_since: None,
19492    },
19493    Lint {
19494        label: "clippy::duration_subsec",
19495        description: r##"Checks for calculation of subsecond microseconds or milliseconds
19496from other `Duration` methods."##,
19497        default_severity: Severity::Allow,
19498        warn_since: None,
19499        deny_since: None,
19500    },
19501    Lint {
19502        label: "clippy::eager_transmute",
19503        description: r##"Checks for integer validity checks, followed by a transmute that is (incorrectly) evaluated
19504eagerly (e.g. using `bool::then_some`)."##,
19505        default_severity: Severity::Allow,
19506        warn_since: None,
19507        deny_since: None,
19508    },
19509    Lint {
19510        label: "clippy::else_if_without_else",
19511        description: r##"Checks for usage of if expressions with an `else if` branch,
19512but without a final `else` branch."##,
19513        default_severity: Severity::Allow,
19514        warn_since: None,
19515        deny_since: None,
19516    },
19517    Lint {
19518        label: "clippy::empty_docs",
19519        description: r##"Detects documentation that is empty."##,
19520        default_severity: Severity::Allow,
19521        warn_since: None,
19522        deny_since: None,
19523    },
19524    Lint {
19525        label: "clippy::empty_drop",
19526        description: r##"Checks for empty `Drop` implementations."##,
19527        default_severity: Severity::Allow,
19528        warn_since: None,
19529        deny_since: None,
19530    },
19531    Lint {
19532        label: "clippy::empty_enum",
19533        description: r##"Checks for `enum`s with no variants, which therefore are uninhabited types
19534(cannot be instantiated).
19535
19536As of this writing, the `never_type` is still a nightly-only experimental API.
19537Therefore, this lint is only triggered if `#![feature(never_type)]` is enabled."##,
19538        default_severity: Severity::Allow,
19539        warn_since: None,
19540        deny_since: None,
19541    },
19542    Lint {
19543        label: "clippy::empty_enum_variants_with_brackets",
19544        description: r##"Finds enum variants without fields that are declared with empty brackets."##,
19545        default_severity: Severity::Allow,
19546        warn_since: None,
19547        deny_since: None,
19548    },
19549    Lint {
19550        label: "clippy::empty_line_after_doc_comments",
19551        description: r##"Checks for empty lines after doc comments."##,
19552        default_severity: Severity::Allow,
19553        warn_since: None,
19554        deny_since: None,
19555    },
19556    Lint {
19557        label: "clippy::empty_line_after_outer_attr",
19558        description: r##"Checks for empty lines after outer attributes"##,
19559        default_severity: Severity::Allow,
19560        warn_since: None,
19561        deny_since: None,
19562    },
19563    Lint {
19564        label: "clippy::empty_loop",
19565        description: r##"Checks for empty `loop` expressions."##,
19566        default_severity: Severity::Allow,
19567        warn_since: None,
19568        deny_since: None,
19569    },
19570    Lint {
19571        label: "clippy::empty_structs_with_brackets",
19572        description: r##"Finds structs without fields (a so-called empty struct) that are declared with brackets."##,
19573        default_severity: Severity::Allow,
19574        warn_since: None,
19575        deny_since: None,
19576    },
19577    Lint {
19578        label: "clippy::enum_clike_unportable_variant",
19579        description: r##"Checks for C-like enumerations that are
19580`repr(isize/usize)` and have values that don't fit into an `i32`."##,
19581        default_severity: Severity::Allow,
19582        warn_since: None,
19583        deny_since: None,
19584    },
19585    Lint {
19586        label: "clippy::enum_glob_use",
19587        description: r##"Checks for `use Enum::*`."##,
19588        default_severity: Severity::Allow,
19589        warn_since: None,
19590        deny_since: None,
19591    },
19592    Lint {
19593        label: "clippy::enum_variant_names",
19594        description: r##"Detects enumeration variants that are prefixed or suffixed
19595by the same characters."##,
19596        default_severity: Severity::Allow,
19597        warn_since: None,
19598        deny_since: None,
19599    },
19600    Lint {
19601        label: "clippy::eq_op",
19602        description: r##"Checks for equal operands to comparison, logical and
19603bitwise, difference and division binary operators (`==`, `>`, etc., `&&`,
19604`||`, `&`, `|`, `^`, `-` and `/`)."##,
19605        default_severity: Severity::Allow,
19606        warn_since: None,
19607        deny_since: None,
19608    },
19609    Lint {
19610        label: "clippy::equatable_if_let",
19611        description: r##"Checks for pattern matchings that can be expressed using equality."##,
19612        default_severity: Severity::Allow,
19613        warn_since: None,
19614        deny_since: None,
19615    },
19616    Lint {
19617        label: "clippy::erasing_op",
19618        description: r##"Checks for erasing operations, e.g., `x * 0`."##,
19619        default_severity: Severity::Allow,
19620        warn_since: None,
19621        deny_since: None,
19622    },
19623    Lint {
19624        label: "clippy::err_expect",
19625        description: r##"Checks for `.err().expect()` calls on the `Result` type."##,
19626        default_severity: Severity::Allow,
19627        warn_since: None,
19628        deny_since: None,
19629    },
19630    Lint {
19631        label: "clippy::error_impl_error",
19632        description: r##"Checks for types named `Error` that implement `Error`."##,
19633        default_severity: Severity::Allow,
19634        warn_since: None,
19635        deny_since: None,
19636    },
19637    Lint {
19638        label: "clippy::excessive_nesting",
19639        description: r##"Checks for blocks which are nested beyond a certain threshold.
19640
19641Note: Even though this lint is warn-by-default, it will only trigger if a maximum nesting level is defined in the clippy.toml file."##,
19642        default_severity: Severity::Allow,
19643        warn_since: None,
19644        deny_since: None,
19645    },
19646    Lint {
19647        label: "clippy::excessive_precision",
19648        description: r##"Checks for float literals with a precision greater
19649than that supported by the underlying type."##,
19650        default_severity: Severity::Allow,
19651        warn_since: None,
19652        deny_since: None,
19653    },
19654    Lint {
19655        label: "clippy::exhaustive_enums",
19656        description: r##"Warns on any exported `enum`s that are not tagged `#[non_exhaustive]`"##,
19657        default_severity: Severity::Allow,
19658        warn_since: None,
19659        deny_since: None,
19660    },
19661    Lint {
19662        label: "clippy::exhaustive_structs",
19663        description: r##"Warns on any exported `struct`s that are not tagged `#[non_exhaustive]`"##,
19664        default_severity: Severity::Allow,
19665        warn_since: None,
19666        deny_since: None,
19667    },
19668    Lint {
19669        label: "clippy::exit",
19670        description: r##"Detects calls to the `exit()` function which terminates the program."##,
19671        default_severity: Severity::Allow,
19672        warn_since: None,
19673        deny_since: None,
19674    },
19675    Lint {
19676        label: "clippy::expect_fun_call",
19677        description: r##"Checks for calls to `.expect(&format!(...))`, `.expect(foo(..))`,
19678etc., and suggests to use `unwrap_or_else` instead"##,
19679        default_severity: Severity::Allow,
19680        warn_since: None,
19681        deny_since: None,
19682    },
19683    Lint {
19684        label: "clippy::expect_used",
19685        description: r##"Checks for `.expect()` or `.expect_err()` calls on `Result`s and `.expect()` call on `Option`s."##,
19686        default_severity: Severity::Allow,
19687        warn_since: None,
19688        deny_since: None,
19689    },
19690    Lint {
19691        label: "clippy::expl_impl_clone_on_copy",
19692        description: r##"Checks for explicit `Clone` implementations for `Copy`
19693types."##,
19694        default_severity: Severity::Allow,
19695        warn_since: None,
19696        deny_since: None,
19697    },
19698    Lint {
19699        label: "clippy::explicit_auto_deref",
19700        description: r##"Checks for dereferencing expressions which would be covered by auto-deref."##,
19701        default_severity: Severity::Allow,
19702        warn_since: None,
19703        deny_since: None,
19704    },
19705    Lint {
19706        label: "clippy::explicit_counter_loop",
19707        description: r##"Checks `for` loops over slices with an explicit counter
19708and suggests the use of `.enumerate()`."##,
19709        default_severity: Severity::Allow,
19710        warn_since: None,
19711        deny_since: None,
19712    },
19713    Lint {
19714        label: "clippy::explicit_deref_methods",
19715        description: r##"Checks for explicit `deref()` or `deref_mut()` method calls."##,
19716        default_severity: Severity::Allow,
19717        warn_since: None,
19718        deny_since: None,
19719    },
19720    Lint {
19721        label: "clippy::explicit_into_iter_loop",
19722        description: r##"Checks for loops on `y.into_iter()` where `y` will do, and
19723suggests the latter."##,
19724        default_severity: Severity::Allow,
19725        warn_since: None,
19726        deny_since: None,
19727    },
19728    Lint {
19729        label: "clippy::explicit_iter_loop",
19730        description: r##"Checks for loops on `x.iter()` where `&x` will do, and
19731suggests the latter."##,
19732        default_severity: Severity::Allow,
19733        warn_since: None,
19734        deny_since: None,
19735    },
19736    Lint {
19737        label: "clippy::explicit_write",
19738        description: r##"Checks for usage of `write!()` / `writeln()!` which can be
19739replaced with `(e)print!()` / `(e)println!()`"##,
19740        default_severity: Severity::Allow,
19741        warn_since: None,
19742        deny_since: None,
19743    },
19744    Lint {
19745        label: "clippy::extend_from_slice",
19746        description: r##"Nothing. This lint has been deprecated"##,
19747        default_severity: Severity::Allow,
19748        warn_since: None,
19749        deny_since: None,
19750    },
19751    Lint {
19752        label: "clippy::extend_with_drain",
19753        description: r##"Checks for occurrences where one vector gets extended instead of append"##,
19754        default_severity: Severity::Allow,
19755        warn_since: None,
19756        deny_since: None,
19757    },
19758    Lint {
19759        label: "clippy::extra_unused_lifetimes",
19760        description: r##"Checks for lifetimes in generics that are never used
19761anywhere else."##,
19762        default_severity: Severity::Allow,
19763        warn_since: None,
19764        deny_since: None,
19765    },
19766    Lint {
19767        label: "clippy::extra_unused_type_parameters",
19768        description: r##"Checks for type parameters in generics that are never used anywhere else."##,
19769        default_severity: Severity::Allow,
19770        warn_since: None,
19771        deny_since: None,
19772    },
19773    Lint {
19774        label: "clippy::fallible_impl_from",
19775        description: r##"Checks for impls of `From<..>` that contain `panic!()` or `unwrap()`"##,
19776        default_severity: Severity::Allow,
19777        warn_since: None,
19778        deny_since: None,
19779    },
19780    Lint {
19781        label: "clippy::field_reassign_with_default",
19782        description: r##"Checks for immediate reassignment of fields initialized
19783with Default::default()."##,
19784        default_severity: Severity::Allow,
19785        warn_since: None,
19786        deny_since: None,
19787    },
19788    Lint {
19789        label: "clippy::field_scoped_visibility_modifiers",
19790        description: r##"Checks for usage of scoped visibility modifiers, like `pub(crate)`, on fields. These
19791make a field visible within a scope between public and private."##,
19792        default_severity: Severity::Allow,
19793        warn_since: None,
19794        deny_since: None,
19795    },
19796    Lint {
19797        label: "clippy::filetype_is_file",
19798        description: r##"Checks for `FileType::is_file()`."##,
19799        default_severity: Severity::Allow,
19800        warn_since: None,
19801        deny_since: None,
19802    },
19803    Lint {
19804        label: "clippy::filter_map_bool_then",
19805        description: r##"Checks for usage of `bool::then` in `Iterator::filter_map`."##,
19806        default_severity: Severity::Allow,
19807        warn_since: None,
19808        deny_since: None,
19809    },
19810    Lint {
19811        label: "clippy::filter_map_identity",
19812        description: r##"Checks for usage of `filter_map(|x| x)`."##,
19813        default_severity: Severity::Allow,
19814        warn_since: None,
19815        deny_since: None,
19816    },
19817    Lint {
19818        label: "clippy::filter_map_next",
19819        description: r##"Checks for usage of `_.filter_map(_).next()`."##,
19820        default_severity: Severity::Allow,
19821        warn_since: None,
19822        deny_since: None,
19823    },
19824    Lint {
19825        label: "clippy::filter_next",
19826        description: r##"Checks for usage of `_.filter(_).next()`."##,
19827        default_severity: Severity::Allow,
19828        warn_since: None,
19829        deny_since: None,
19830    },
19831    Lint {
19832        label: "clippy::flat_map_identity",
19833        description: r##"Checks for usage of `flat_map(|x| x)`."##,
19834        default_severity: Severity::Allow,
19835        warn_since: None,
19836        deny_since: None,
19837    },
19838    Lint {
19839        label: "clippy::flat_map_option",
19840        description: r##"Checks for usage of `Iterator::flat_map()` where `filter_map()` could be
19841used instead."##,
19842        default_severity: Severity::Allow,
19843        warn_since: None,
19844        deny_since: None,
19845    },
19846    Lint {
19847        label: "clippy::float_arithmetic",
19848        description: r##"Checks for float arithmetic."##,
19849        default_severity: Severity::Allow,
19850        warn_since: None,
19851        deny_since: None,
19852    },
19853    Lint {
19854        label: "clippy::float_cmp",
19855        description: r##"Checks for (in-)equality comparisons on floating-point
19856values (apart from zero), except in functions called `*eq*` (which probably
19857implement equality for a type involving floats)."##,
19858        default_severity: Severity::Allow,
19859        warn_since: None,
19860        deny_since: None,
19861    },
19862    Lint {
19863        label: "clippy::float_cmp_const",
19864        description: r##"Checks for (in-)equality comparisons on constant floating-point
19865values (apart from zero), except in functions called `*eq*` (which probably
19866implement equality for a type involving floats)."##,
19867        default_severity: Severity::Allow,
19868        warn_since: None,
19869        deny_since: None,
19870    },
19871    Lint {
19872        label: "clippy::float_equality_without_abs",
19873        description: r##"Checks for statements of the form `(a - b) < f32::EPSILON` or
19874`(a - b) < f64::EPSILON`. Notes the missing `.abs()`."##,
19875        default_severity: Severity::Allow,
19876        warn_since: None,
19877        deny_since: None,
19878    },
19879    Lint {
19880        label: "clippy::fn_address_comparisons",
19881        description: r##"Checks for comparisons with an address of a function item."##,
19882        default_severity: Severity::Allow,
19883        warn_since: None,
19884        deny_since: None,
19885    },
19886    Lint {
19887        label: "clippy::fn_params_excessive_bools",
19888        description: r##"Checks for excessive use of
19889bools in function definitions."##,
19890        default_severity: Severity::Allow,
19891        warn_since: None,
19892        deny_since: None,
19893    },
19894    Lint {
19895        label: "clippy::fn_to_numeric_cast",
19896        description: r##"Checks for casts of function pointers to something other than `usize`."##,
19897        default_severity: Severity::Allow,
19898        warn_since: None,
19899        deny_since: None,
19900    },
19901    Lint {
19902        label: "clippy::fn_to_numeric_cast_any",
19903        description: r##"Checks for casts of a function pointer to any integer type."##,
19904        default_severity: Severity::Allow,
19905        warn_since: None,
19906        deny_since: None,
19907    },
19908    Lint {
19909        label: "clippy::fn_to_numeric_cast_with_truncation",
19910        description: r##"Checks for casts of a function pointer to a numeric type not wide enough to
19911store an address."##,
19912        default_severity: Severity::Allow,
19913        warn_since: None,
19914        deny_since: None,
19915    },
19916    Lint {
19917        label: "clippy::for_kv_map",
19918        description: r##"Checks for iterating a map (`HashMap` or `BTreeMap`) and
19919ignoring either the keys or values."##,
19920        default_severity: Severity::Allow,
19921        warn_since: None,
19922        deny_since: None,
19923    },
19924    Lint {
19925        label: "clippy::forget_non_drop",
19926        description: r##"Checks for calls to `std::mem::forget` with a value that does not implement `Drop`."##,
19927        default_severity: Severity::Allow,
19928        warn_since: None,
19929        deny_since: None,
19930    },
19931    Lint {
19932        label: "clippy::format_collect",
19933        description: r##"Checks for usage of `.map(|_| format!(..)).collect::<String>()`."##,
19934        default_severity: Severity::Allow,
19935        warn_since: None,
19936        deny_since: None,
19937    },
19938    Lint {
19939        label: "clippy::format_in_format_args",
19940        description: r##"Detects `format!` within the arguments of another macro that does
19941formatting such as `format!` itself, `write!` or `println!`. Suggests
19942inlining the `format!` call."##,
19943        default_severity: Severity::Allow,
19944        warn_since: None,
19945        deny_since: None,
19946    },
19947    Lint {
19948        label: "clippy::format_push_string",
19949        description: r##"Detects cases where the result of a `format!` call is
19950appended to an existing `String`."##,
19951        default_severity: Severity::Allow,
19952        warn_since: None,
19953        deny_since: None,
19954    },
19955    Lint {
19956        label: "clippy::four_forward_slashes",
19957        description: r##"Checks for outer doc comments written with 4 forward slashes (`////`)."##,
19958        default_severity: Severity::Allow,
19959        warn_since: None,
19960        deny_since: None,
19961    },
19962    Lint {
19963        label: "clippy::from_iter_instead_of_collect",
19964        description: r##"Checks for `from_iter()` function calls on types that implement the `FromIterator`
19965trait."##,
19966        default_severity: Severity::Allow,
19967        warn_since: None,
19968        deny_since: None,
19969    },
19970    Lint {
19971        label: "clippy::from_over_into",
19972        description: r##"Searches for implementations of the `Into<..>` trait and suggests to implement `From<..>` instead."##,
19973        default_severity: Severity::Allow,
19974        warn_since: None,
19975        deny_since: None,
19976    },
19977    Lint {
19978        label: "clippy::from_raw_with_void_ptr",
19979        description: r##"Checks if we're passing a `c_void` raw pointer to `{Box,Rc,Arc,Weak}::from_raw(_)`"##,
19980        default_severity: Severity::Allow,
19981        warn_since: None,
19982        deny_since: None,
19983    },
19984    Lint {
19985        label: "clippy::from_str_radix_10",
19986        description: r##"Checks for function invocations of the form `primitive::from_str_radix(s, 10)`"##,
19987        default_severity: Severity::Allow,
19988        warn_since: None,
19989        deny_since: None,
19990    },
19991    Lint {
19992        label: "clippy::future_not_send",
19993        description: r##"This lint requires Future implementations returned from
19994functions and methods to implement the `Send` marker trait. It is mostly
19995used by library authors (public and internal) that target an audience where
19996multithreaded executors are likely to be used for running these Futures."##,
19997        default_severity: Severity::Allow,
19998        warn_since: None,
19999        deny_since: None,
20000    },
20001    Lint {
20002        label: "clippy::get_first",
20003        description: r##"Checks for usage of `x.get(0)` instead of
20004`x.first()` or `x.front()`."##,
20005        default_severity: Severity::Allow,
20006        warn_since: None,
20007        deny_since: None,
20008    },
20009    Lint {
20010        label: "clippy::get_last_with_len",
20011        description: r##"Checks for usage of `x.get(x.len() - 1)` instead of
20012`x.last()`."##,
20013        default_severity: Severity::Allow,
20014        warn_since: None,
20015        deny_since: None,
20016    },
20017    Lint {
20018        label: "clippy::get_unwrap",
20019        description: r##"Checks for usage of `.get().unwrap()` (or
20020`.get_mut().unwrap`) on a standard library type which implements `Index`"##,
20021        default_severity: Severity::Allow,
20022        warn_since: None,
20023        deny_since: None,
20024    },
20025    Lint {
20026        label: "clippy::host_endian_bytes",
20027        description: r##"Checks for the usage of the `to_ne_bytes` method and/or the function `from_ne_bytes`."##,
20028        default_severity: Severity::Allow,
20029        warn_since: None,
20030        deny_since: None,
20031    },
20032    Lint {
20033        label: "clippy::identity_op",
20034        description: r##"Checks for identity operations, e.g., `x + 0`."##,
20035        default_severity: Severity::Allow,
20036        warn_since: None,
20037        deny_since: None,
20038    },
20039    Lint {
20040        label: "clippy::if_let_mutex",
20041        description: r##"Checks for `Mutex::lock` calls in `if let` expression
20042with lock calls in any of the else blocks."##,
20043        default_severity: Severity::Allow,
20044        warn_since: None,
20045        deny_since: None,
20046    },
20047    Lint {
20048        label: "clippy::if_not_else",
20049        description: r##"Checks for usage of `!` or `!=` in an if condition with an
20050else branch."##,
20051        default_severity: Severity::Allow,
20052        warn_since: None,
20053        deny_since: None,
20054    },
20055    Lint {
20056        label: "clippy::if_same_then_else",
20057        description: r##"Checks for `if/else` with the same body as the *then* part
20058and the *else* part."##,
20059        default_severity: Severity::Allow,
20060        warn_since: None,
20061        deny_since: None,
20062    },
20063    Lint {
20064        label: "clippy::if_then_some_else_none",
20065        description: r##"Checks for if-else that could be written using either `bool::then` or `bool::then_some`."##,
20066        default_severity: Severity::Allow,
20067        warn_since: None,
20068        deny_since: None,
20069    },
20070    Lint {
20071        label: "clippy::ifs_same_cond",
20072        description: r##"Checks for consecutive `if`s with the same condition."##,
20073        default_severity: Severity::Allow,
20074        warn_since: None,
20075        deny_since: None,
20076    },
20077    Lint {
20078        label: "clippy::ignored_unit_patterns",
20079        description: r##"Checks for usage of `_` in patterns of type `()`."##,
20080        default_severity: Severity::Allow,
20081        warn_since: None,
20082        deny_since: None,
20083    },
20084    Lint {
20085        label: "clippy::impl_hash_borrow_with_str_and_bytes",
20086        description: r##"This lint is concerned with the semantics of `Borrow` and `Hash` for a
20087type that implements all three of `Hash`, `Borrow<str>` and `Borrow<[u8]>`
20088as it is impossible to satisfy the semantics of Borrow and `Hash` for
20089both `Borrow<str>` and `Borrow<[u8]>`."##,
20090        default_severity: Severity::Allow,
20091        warn_since: None,
20092        deny_since: None,
20093    },
20094    Lint {
20095        label: "clippy::impl_trait_in_params",
20096        description: r##"Lints when `impl Trait` is being used in a function's parameters."##,
20097        default_severity: Severity::Allow,
20098        warn_since: None,
20099        deny_since: None,
20100    },
20101    Lint {
20102        label: "clippy::implicit_clone",
20103        description: r##"Checks for the usage of `_.to_owned()`, `vec.to_vec()`, or similar when calling `_.clone()` would be clearer."##,
20104        default_severity: Severity::Allow,
20105        warn_since: None,
20106        deny_since: None,
20107    },
20108    Lint {
20109        label: "clippy::implicit_hasher",
20110        description: r##"Checks for public `impl` or `fn` missing generalization
20111over different hashers and implicitly defaulting to the default hashing
20112algorithm (`SipHash`)."##,
20113        default_severity: Severity::Allow,
20114        warn_since: None,
20115        deny_since: None,
20116    },
20117    Lint {
20118        label: "clippy::implicit_return",
20119        description: r##"Checks for missing return statements at the end of a block."##,
20120        default_severity: Severity::Allow,
20121        warn_since: None,
20122        deny_since: None,
20123    },
20124    Lint {
20125        label: "clippy::implicit_saturating_add",
20126        description: r##"Checks for implicit saturating addition."##,
20127        default_severity: Severity::Allow,
20128        warn_since: None,
20129        deny_since: None,
20130    },
20131    Lint {
20132        label: "clippy::implicit_saturating_sub",
20133        description: r##"Checks for implicit saturating subtraction."##,
20134        default_severity: Severity::Allow,
20135        warn_since: None,
20136        deny_since: None,
20137    },
20138    Lint {
20139        label: "clippy::implied_bounds_in_impls",
20140        description: r##"Looks for bounds in `impl Trait` in return position that are implied by other bounds.
20141This can happen when a trait is specified that another trait already has as a supertrait
20142(e.g. `fn() -> impl Deref + DerefMut<Target = i32>` has an unnecessary `Deref` bound,
20143because `Deref` is a supertrait of `DerefMut`)"##,
20144        default_severity: Severity::Allow,
20145        warn_since: None,
20146        deny_since: None,
20147    },
20148    Lint {
20149        label: "clippy::impossible_comparisons",
20150        description: r##"Checks for double comparisons that can never succeed"##,
20151        default_severity: Severity::Allow,
20152        warn_since: None,
20153        deny_since: None,
20154    },
20155    Lint {
20156        label: "clippy::imprecise_flops",
20157        description: r##"Looks for floating-point expressions that
20158can be expressed using built-in methods to improve accuracy
20159at the cost of performance."##,
20160        default_severity: Severity::Allow,
20161        warn_since: None,
20162        deny_since: None,
20163    },
20164    Lint {
20165        label: "clippy::incompatible_msrv",
20166        description: r##"This lint checks that no function newer than the defined MSRV (minimum
20167supported rust version) is used in the crate."##,
20168        default_severity: Severity::Allow,
20169        warn_since: None,
20170        deny_since: None,
20171    },
20172    Lint {
20173        label: "clippy::inconsistent_digit_grouping",
20174        description: r##"Warns if an integral or floating-point constant is
20175grouped inconsistently with underscores."##,
20176        default_severity: Severity::Allow,
20177        warn_since: None,
20178        deny_since: None,
20179    },
20180    Lint {
20181        label: "clippy::inconsistent_struct_constructor",
20182        description: r##"Checks for struct constructors where all fields are shorthand and
20183the order of the field init shorthand in the constructor is inconsistent
20184with the order in the struct definition."##,
20185        default_severity: Severity::Allow,
20186        warn_since: None,
20187        deny_since: None,
20188    },
20189    Lint {
20190        label: "clippy::index_refutable_slice",
20191        description: r##"The lint checks for slice bindings in patterns that are only used to
20192access individual slice values."##,
20193        default_severity: Severity::Allow,
20194        warn_since: None,
20195        deny_since: None,
20196    },
20197    Lint {
20198        label: "clippy::indexing_slicing",
20199        description: r##"Checks for usage of indexing or slicing. Arrays are special cases, this lint
20200does report on arrays if we can tell that slicing operations are in bounds and does not
20201lint on constant `usize` indexing on arrays because that is handled by rustc's `const_err` lint."##,
20202        default_severity: Severity::Allow,
20203        warn_since: None,
20204        deny_since: None,
20205    },
20206    Lint {
20207        label: "clippy::ineffective_bit_mask",
20208        description: r##"Checks for bit masks in comparisons which can be removed
20209without changing the outcome. The basic structure can be seen in the
20210following table:
20211
20212|Comparison| Bit Op   |Example     |equals |
20213|----------|----------|------------|-------|
20214|`>` / `<=`|`\\|` / `^`|`x \\| 2 > 3`|`x > 3`|
20215|`<` / `>=`|`\\|` / `^`|`x ^ 1 < 4` |`x < 4`|"##,
20216        default_severity: Severity::Allow,
20217        warn_since: None,
20218        deny_since: None,
20219    },
20220    Lint {
20221        label: "clippy::ineffective_open_options",
20222        description: r##"Checks if both `.write(true)` and `.append(true)` methods are called
20223on a same `OpenOptions`."##,
20224        default_severity: Severity::Allow,
20225        warn_since: None,
20226        deny_since: None,
20227    },
20228    Lint {
20229        label: "clippy::inefficient_to_string",
20230        description: r##"Checks for usage of `.to_string()` on an `&&T` where
20231`T` implements `ToString` directly (like `&&str` or `&&String`)."##,
20232        default_severity: Severity::Allow,
20233        warn_since: None,
20234        deny_since: None,
20235    },
20236    Lint {
20237        label: "clippy::infallible_destructuring_match",
20238        description: r##"Checks for matches being used to destructure a single-variant enum
20239or tuple struct where a `let` will suffice."##,
20240        default_severity: Severity::Allow,
20241        warn_since: None,
20242        deny_since: None,
20243    },
20244    Lint {
20245        label: "clippy::infinite_iter",
20246        description: r##"Checks for iteration that is guaranteed to be infinite."##,
20247        default_severity: Severity::Allow,
20248        warn_since: None,
20249        deny_since: None,
20250    },
20251    Lint {
20252        label: "clippy::infinite_loop",
20253        description: r##"Checks for infinite loops in a function where the return type is not `!`
20254and lint accordingly."##,
20255        default_severity: Severity::Allow,
20256        warn_since: None,
20257        deny_since: None,
20258    },
20259    Lint {
20260        label: "clippy::inherent_to_string",
20261        description: r##"Checks for the definition of inherent methods with a signature of `to_string(&self) -> String`."##,
20262        default_severity: Severity::Allow,
20263        warn_since: None,
20264        deny_since: None,
20265    },
20266    Lint {
20267        label: "clippy::inherent_to_string_shadow_display",
20268        description: r##"Checks for the definition of inherent methods with a signature of `to_string(&self) -> String` and if the type implementing this method also implements the `Display` trait."##,
20269        default_severity: Severity::Allow,
20270        warn_since: None,
20271        deny_since: None,
20272    },
20273    Lint {
20274        label: "clippy::init_numbered_fields",
20275        description: r##"Checks for tuple structs initialized with field syntax.
20276It will however not lint if a base initializer is present.
20277The lint will also ignore code in macros."##,
20278        default_severity: Severity::Allow,
20279        warn_since: None,
20280        deny_since: None,
20281    },
20282    Lint {
20283        label: "clippy::inline_always",
20284        description: r##"Checks for items annotated with `#[inline(always)]`,
20285unless the annotated function is empty or simply panics."##,
20286        default_severity: Severity::Allow,
20287        warn_since: None,
20288        deny_since: None,
20289    },
20290    Lint {
20291        label: "clippy::inline_asm_x86_att_syntax",
20292        description: r##"Checks for usage of AT&T x86 assembly syntax."##,
20293        default_severity: Severity::Allow,
20294        warn_since: None,
20295        deny_since: None,
20296    },
20297    Lint {
20298        label: "clippy::inline_asm_x86_intel_syntax",
20299        description: r##"Checks for usage of Intel x86 assembly syntax."##,
20300        default_severity: Severity::Allow,
20301        warn_since: None,
20302        deny_since: None,
20303    },
20304    Lint {
20305        label: "clippy::inline_fn_without_body",
20306        description: r##"Checks for `#[inline]` on trait methods without bodies"##,
20307        default_severity: Severity::Allow,
20308        warn_since: None,
20309        deny_since: None,
20310    },
20311    Lint {
20312        label: "clippy::inspect_for_each",
20313        description: r##"Checks for usage of `inspect().for_each()`."##,
20314        default_severity: Severity::Allow,
20315        warn_since: None,
20316        deny_since: None,
20317    },
20318    Lint {
20319        label: "clippy::int_plus_one",
20320        description: r##"Checks for usage of `x >= y + 1` or `x - 1 >= y` (and `<=`) in a block"##,
20321        default_severity: Severity::Allow,
20322        warn_since: None,
20323        deny_since: None,
20324    },
20325    Lint {
20326        label: "clippy::integer_division",
20327        description: r##"Checks for division of integers"##,
20328        default_severity: Severity::Allow,
20329        warn_since: None,
20330        deny_since: None,
20331    },
20332    Lint {
20333        label: "clippy::integer_division_remainder_used",
20334        description: r##"Checks for the usage of division (`/`) and remainder (`%`) operations
20335when performed on any integer types using the default `Div` and `Rem` trait implementations."##,
20336        default_severity: Severity::Allow,
20337        warn_since: None,
20338        deny_since: None,
20339    },
20340    Lint {
20341        label: "clippy::into_iter_on_ref",
20342        description: r##"Checks for `into_iter` calls on references which should be replaced by `iter`
20343or `iter_mut`."##,
20344        default_severity: Severity::Allow,
20345        warn_since: None,
20346        deny_since: None,
20347    },
20348    Lint {
20349        label: "clippy::into_iter_without_iter",
20350        description: r##"This is the opposite of the `iter_without_into_iter` lint.
20351It looks for `IntoIterator for (&|&mut) Type` implementations without an inherent `iter` or `iter_mut` method
20352on the type or on any of the types in its `Deref` chain."##,
20353        default_severity: Severity::Allow,
20354        warn_since: None,
20355        deny_since: None,
20356    },
20357    Lint {
20358        label: "clippy::invalid_null_ptr_usage",
20359        description: r##"This lint checks for invalid usages of `ptr::null`."##,
20360        default_severity: Severity::Allow,
20361        warn_since: None,
20362        deny_since: None,
20363    },
20364    Lint {
20365        label: "clippy::invalid_regex",
20366        description: r##"Checks [regex](https://crates.io/crates/regex) creation
20367(with `Regex::new`, `RegexBuilder::new`, or `RegexSet::new`) for correct
20368regex syntax."##,
20369        default_severity: Severity::Allow,
20370        warn_since: None,
20371        deny_since: None,
20372    },
20373    Lint {
20374        label: "clippy::invalid_upcast_comparisons",
20375        description: r##"Checks for comparisons where the relation is always either
20376true or false, but where one side has been upcast so that the comparison is
20377necessary. Only integer types are checked."##,
20378        default_severity: Severity::Allow,
20379        warn_since: None,
20380        deny_since: None,
20381    },
20382    Lint {
20383        label: "clippy::inverted_saturating_sub",
20384        description: r##"Checks for comparisons between integers, followed by subtracting the greater value from the
20385lower one."##,
20386        default_severity: Severity::Allow,
20387        warn_since: None,
20388        deny_since: None,
20389    },
20390    Lint {
20391        label: "clippy::invisible_characters",
20392        description: r##"Checks for invisible Unicode characters in the code."##,
20393        default_severity: Severity::Allow,
20394        warn_since: None,
20395        deny_since: None,
20396    },
20397    Lint {
20398        label: "clippy::is_digit_ascii_radix",
20399        description: r##"Finds usages of [`char::is_digit`](https://doc.rust-lang.org/stable/std/primitive.char.html#method.is_digit) that
20400can be replaced with [`is_ascii_digit`](https://doc.rust-lang.org/stable/std/primitive.char.html#method.is_ascii_digit) or
20401[`is_ascii_hexdigit`](https://doc.rust-lang.org/stable/std/primitive.char.html#method.is_ascii_hexdigit)."##,
20402        default_severity: Severity::Allow,
20403        warn_since: None,
20404        deny_since: None,
20405    },
20406    Lint {
20407        label: "clippy::items_after_statements",
20408        description: r##"Checks for items declared after some statement in a block."##,
20409        default_severity: Severity::Allow,
20410        warn_since: None,
20411        deny_since: None,
20412    },
20413    Lint {
20414        label: "clippy::items_after_test_module",
20415        description: r##"Triggers if an item is declared after the testing module marked with `#[cfg(test)]`."##,
20416        default_severity: Severity::Allow,
20417        warn_since: None,
20418        deny_since: None,
20419    },
20420    Lint {
20421        label: "clippy::iter_cloned_collect",
20422        description: r##"Checks for the use of `.cloned().collect()` on slice to
20423create a `Vec`."##,
20424        default_severity: Severity::Allow,
20425        warn_since: None,
20426        deny_since: None,
20427    },
20428    Lint {
20429        label: "clippy::iter_count",
20430        description: r##"Checks for the use of `.iter().count()`."##,
20431        default_severity: Severity::Allow,
20432        warn_since: None,
20433        deny_since: None,
20434    },
20435    Lint {
20436        label: "clippy::iter_filter_is_ok",
20437        description: r##"Checks for usage of `.filter(Result::is_ok)` that may be replaced with a `.flatten()` call.
20438This lint will require additional changes to the follow-up calls as it affects the type."##,
20439        default_severity: Severity::Allow,
20440        warn_since: None,
20441        deny_since: None,
20442    },
20443    Lint {
20444        label: "clippy::iter_filter_is_some",
20445        description: r##"Checks for usage of `.filter(Option::is_some)` that may be replaced with a `.flatten()` call.
20446This lint will require additional changes to the follow-up calls as it affects the type."##,
20447        default_severity: Severity::Allow,
20448        warn_since: None,
20449        deny_since: None,
20450    },
20451    Lint {
20452        label: "clippy::iter_kv_map",
20453        description: r##"Checks for iterating a map (`HashMap` or `BTreeMap`) and
20454ignoring either the keys or values."##,
20455        default_severity: Severity::Allow,
20456        warn_since: None,
20457        deny_since: None,
20458    },
20459    Lint {
20460        label: "clippy::iter_next_loop",
20461        description: r##"Checks for loops on `x.next()`."##,
20462        default_severity: Severity::Allow,
20463        warn_since: None,
20464        deny_since: None,
20465    },
20466    Lint {
20467        label: "clippy::iter_next_slice",
20468        description: r##"Checks for usage of `iter().next()` on a Slice or an Array"##,
20469        default_severity: Severity::Allow,
20470        warn_since: None,
20471        deny_since: None,
20472    },
20473    Lint {
20474        label: "clippy::iter_not_returning_iterator",
20475        description: r##"Detects methods named `iter` or `iter_mut` that do not have a return type that implements `Iterator`."##,
20476        default_severity: Severity::Allow,
20477        warn_since: None,
20478        deny_since: None,
20479    },
20480    Lint {
20481        label: "clippy::iter_nth",
20482        description: r##"Checks for usage of `.iter().nth()`/`.iter_mut().nth()` on standard library types that have
20483equivalent `.get()`/`.get_mut()` methods."##,
20484        default_severity: Severity::Allow,
20485        warn_since: None,
20486        deny_since: None,
20487    },
20488    Lint {
20489        label: "clippy::iter_nth_zero",
20490        description: r##"Checks for the use of `iter.nth(0)`."##,
20491        default_severity: Severity::Allow,
20492        warn_since: None,
20493        deny_since: None,
20494    },
20495    Lint {
20496        label: "clippy::iter_on_empty_collections",
20497        description: r##"Checks for calls to `iter`, `iter_mut` or `into_iter` on empty collections"##,
20498        default_severity: Severity::Allow,
20499        warn_since: None,
20500        deny_since: None,
20501    },
20502    Lint {
20503        label: "clippy::iter_on_single_items",
20504        description: r##"Checks for calls to `iter`, `iter_mut` or `into_iter` on collections containing a single item"##,
20505        default_severity: Severity::Allow,
20506        warn_since: None,
20507        deny_since: None,
20508    },
20509    Lint {
20510        label: "clippy::iter_out_of_bounds",
20511        description: r##"Looks for iterator combinator calls such as `.take(x)` or `.skip(x)`
20512where `x` is greater than the amount of items that an iterator will produce."##,
20513        default_severity: Severity::Allow,
20514        warn_since: None,
20515        deny_since: None,
20516    },
20517    Lint {
20518        label: "clippy::iter_over_hash_type",
20519        description: r##"This is a restriction lint which prevents the use of hash types (i.e., `HashSet` and `HashMap`) in for loops."##,
20520        default_severity: Severity::Allow,
20521        warn_since: None,
20522        deny_since: None,
20523    },
20524    Lint {
20525        label: "clippy::iter_overeager_cloned",
20526        description: r##"Checks for usage of `_.cloned().<func>()` where call to `.cloned()` can be postponed."##,
20527        default_severity: Severity::Allow,
20528        warn_since: None,
20529        deny_since: None,
20530    },
20531    Lint {
20532        label: "clippy::iter_skip_next",
20533        description: r##"Checks for usage of `.skip(x).next()` on iterators."##,
20534        default_severity: Severity::Allow,
20535        warn_since: None,
20536        deny_since: None,
20537    },
20538    Lint {
20539        label: "clippy::iter_skip_zero",
20540        description: r##"Checks for usage of `.skip(0)` on iterators."##,
20541        default_severity: Severity::Allow,
20542        warn_since: None,
20543        deny_since: None,
20544    },
20545    Lint {
20546        label: "clippy::iter_with_drain",
20547        description: r##"Checks for usage of `.drain(..)` on `Vec` and `VecDeque` for iteration."##,
20548        default_severity: Severity::Allow,
20549        warn_since: None,
20550        deny_since: None,
20551    },
20552    Lint {
20553        label: "clippy::iter_without_into_iter",
20554        description: r##"Looks for `iter` and `iter_mut` methods without an associated `IntoIterator for (&|&mut) Type` implementation."##,
20555        default_severity: Severity::Allow,
20556        warn_since: None,
20557        deny_since: None,
20558    },
20559    Lint {
20560        label: "clippy::iterator_step_by_zero",
20561        description: r##"Checks for calling `.step_by(0)` on iterators which panics."##,
20562        default_severity: Severity::Allow,
20563        warn_since: None,
20564        deny_since: None,
20565    },
20566    Lint {
20567        label: "clippy::join_absolute_paths",
20568        description: r##"Checks for calls to `Path::join` that start with a path separator (`\\\\` or `/`)."##,
20569        default_severity: Severity::Allow,
20570        warn_since: None,
20571        deny_since: None,
20572    },
20573    Lint {
20574        label: "clippy::just_underscores_and_digits",
20575        description: r##"Checks if you have variables whose name consists of just
20576underscores and digits."##,
20577        default_severity: Severity::Allow,
20578        warn_since: None,
20579        deny_since: None,
20580    },
20581    Lint {
20582        label: "clippy::large_const_arrays",
20583        description: r##"Checks for large `const` arrays that should
20584be defined as `static` instead."##,
20585        default_severity: Severity::Allow,
20586        warn_since: None,
20587        deny_since: None,
20588    },
20589    Lint {
20590        label: "clippy::large_digit_groups",
20591        description: r##"Warns if the digits of an integral or floating-point
20592constant are grouped into groups that
20593are too large."##,
20594        default_severity: Severity::Allow,
20595        warn_since: None,
20596        deny_since: None,
20597    },
20598    Lint {
20599        label: "clippy::large_enum_variant",
20600        description: r##"Checks for large size differences between variants on
20601`enum`s."##,
20602        default_severity: Severity::Allow,
20603        warn_since: None,
20604        deny_since: None,
20605    },
20606    Lint {
20607        label: "clippy::large_futures",
20608        description: r##"It checks for the size of a `Future` created by `async fn` or `async {}`."##,
20609        default_severity: Severity::Allow,
20610        warn_since: None,
20611        deny_since: None,
20612    },
20613    Lint {
20614        label: "clippy::large_include_file",
20615        description: r##"Checks for the inclusion of large files via `include_bytes!()`
20616or `include_str!()`."##,
20617        default_severity: Severity::Allow,
20618        warn_since: None,
20619        deny_since: None,
20620    },
20621    Lint {
20622        label: "clippy::large_stack_arrays",
20623        description: r##"Checks for local arrays that may be too large."##,
20624        default_severity: Severity::Allow,
20625        warn_since: None,
20626        deny_since: None,
20627    },
20628    Lint {
20629        label: "clippy::large_stack_frames",
20630        description: r##"Checks for functions that use a lot of stack space.
20631
20632This often happens when constructing a large type, such as an array with a lot of elements,
20633or constructing *many* smaller-but-still-large structs, or copying around a lot of large types.
20634
20635This lint is a more general version of [`large_stack_arrays`](https://rust-lang.github.io/rust-clippy/master/#large_stack_arrays)
20636that is intended to look at functions as a whole instead of only individual array expressions inside of a function."##,
20637        default_severity: Severity::Allow,
20638        warn_since: None,
20639        deny_since: None,
20640    },
20641    Lint {
20642        label: "clippy::large_types_passed_by_value",
20643        description: r##"Checks for functions taking arguments by value, where
20644the argument type is `Copy` and large enough to be worth considering
20645passing by reference. Does not trigger if the function is being exported,
20646because that might induce API breakage, if the parameter is declared as mutable,
20647or if the argument is a `self`."##,
20648        default_severity: Severity::Allow,
20649        warn_since: None,
20650        deny_since: None,
20651    },
20652    Lint {
20653        label: "clippy::legacy_numeric_constants",
20654        description: r##"Checks for usage of `<integer>::max_value()`, `std::<integer>::MAX`,
20655`std::<float>::EPSILON`, etc."##,
20656        default_severity: Severity::Allow,
20657        warn_since: None,
20658        deny_since: None,
20659    },
20660    Lint {
20661        label: "clippy::len_without_is_empty",
20662        description: r##"Checks for items that implement `.len()` but not
20663`.is_empty()`."##,
20664        default_severity: Severity::Allow,
20665        warn_since: None,
20666        deny_since: None,
20667    },
20668    Lint {
20669        label: "clippy::len_zero",
20670        description: r##"Checks for getting the length of something via `.len()`
20671just to compare to zero, and suggests using `.is_empty()` where applicable."##,
20672        default_severity: Severity::Allow,
20673        warn_since: None,
20674        deny_since: None,
20675    },
20676    Lint {
20677        label: "clippy::let_and_return",
20678        description: r##"Checks for `let`-bindings, which are subsequently
20679returned."##,
20680        default_severity: Severity::Allow,
20681        warn_since: None,
20682        deny_since: None,
20683    },
20684    Lint {
20685        label: "clippy::let_underscore_future",
20686        description: r##"Checks for `let _ = <expr>` where the resulting type of expr implements `Future`"##,
20687        default_severity: Severity::Allow,
20688        warn_since: None,
20689        deny_since: None,
20690    },
20691    Lint {
20692        label: "clippy::let_underscore_lock",
20693        description: r##"Checks for `let _ = sync_lock`. This supports `mutex` and `rwlock` in
20694`parking_lot`. For `std` locks see the `rustc` lint
20695[`let_underscore_lock`](https://doc.rust-lang.org/nightly/rustc/lints/listing/deny-by-default.html#let-underscore-lock)"##,
20696        default_severity: Severity::Allow,
20697        warn_since: None,
20698        deny_since: None,
20699    },
20700    Lint {
20701        label: "clippy::let_underscore_must_use",
20702        description: r##"Checks for `let _ = <expr>` where expr is `#[must_use]`"##,
20703        default_severity: Severity::Allow,
20704        warn_since: None,
20705        deny_since: None,
20706    },
20707    Lint {
20708        label: "clippy::let_underscore_untyped",
20709        description: r##"Checks for `let _ = <expr>` without a type annotation, and suggests to either provide one,
20710or remove the `let` keyword altogether."##,
20711        default_severity: Severity::Allow,
20712        warn_since: None,
20713        deny_since: None,
20714    },
20715    Lint {
20716        label: "clippy::let_unit_value",
20717        description: r##"Checks for binding a unit value."##,
20718        default_severity: Severity::Allow,
20719        warn_since: None,
20720        deny_since: None,
20721    },
20722    Lint {
20723        label: "clippy::let_with_type_underscore",
20724        description: r##"Detects when a variable is declared with an explicit type of `_`."##,
20725        default_severity: Severity::Allow,
20726        warn_since: None,
20727        deny_since: None,
20728    },
20729    Lint {
20730        label: "clippy::lines_filter_map_ok",
20731        description: r##"Checks for usage of `lines.filter_map(Result::ok)` or `lines.flat_map(Result::ok)`
20732when `lines` has type `std::io::Lines`."##,
20733        default_severity: Severity::Allow,
20734        warn_since: None,
20735        deny_since: None,
20736    },
20737    Lint {
20738        label: "clippy::linkedlist",
20739        description: r##"Checks for usage of any `LinkedList`, suggesting to use a
20740`Vec` or a `VecDeque` (formerly called `RingBuf`)."##,
20741        default_severity: Severity::Allow,
20742        warn_since: None,
20743        deny_since: None,
20744    },
20745    Lint {
20746        label: "clippy::lint_groups_priority",
20747        description: r##"Checks for lint groups with the same priority as lints in the `Cargo.toml`
20748[`[lints]` table](https://doc.rust-lang.org/cargo/reference/manifest.html#the-lints-section).
20749
20750This lint will be removed once [cargo#12918](https://github.com/rust-lang/cargo/issues/12918)
20751is resolved."##,
20752        default_severity: Severity::Allow,
20753        warn_since: None,
20754        deny_since: None,
20755    },
20756    Lint {
20757        label: "clippy::little_endian_bytes",
20758        description: r##"Checks for the usage of the `to_le_bytes` method and/or the function `from_le_bytes`."##,
20759        default_severity: Severity::Allow,
20760        warn_since: None,
20761        deny_since: None,
20762    },
20763    Lint {
20764        label: "clippy::lossy_float_literal",
20765        description: r##"Checks for whole number float literals that
20766cannot be represented as the underlying type without loss."##,
20767        default_severity: Severity::Allow,
20768        warn_since: None,
20769        deny_since: None,
20770    },
20771    Lint {
20772        label: "clippy::macro_metavars_in_unsafe",
20773        description: r##"Looks for macros that expand metavariables in an unsafe block."##,
20774        default_severity: Severity::Allow,
20775        warn_since: None,
20776        deny_since: None,
20777    },
20778    Lint {
20779        label: "clippy::macro_use_imports",
20780        description: r##"Checks for `#[macro_use] use...`."##,
20781        default_severity: Severity::Allow,
20782        warn_since: None,
20783        deny_since: None,
20784    },
20785    Lint {
20786        label: "clippy::main_recursion",
20787        description: r##"Checks for recursion using the entrypoint."##,
20788        default_severity: Severity::Allow,
20789        warn_since: None,
20790        deny_since: None,
20791    },
20792    Lint {
20793        label: "clippy::manual_assert",
20794        description: r##"Detects `if`-then-`panic!` that can be replaced with `assert!`."##,
20795        default_severity: Severity::Allow,
20796        warn_since: None,
20797        deny_since: None,
20798    },
20799    Lint {
20800        label: "clippy::manual_async_fn",
20801        description: r##"It checks for manual implementations of `async` functions."##,
20802        default_severity: Severity::Allow,
20803        warn_since: None,
20804        deny_since: None,
20805    },
20806    Lint {
20807        label: "clippy::manual_bits",
20808        description: r##"Checks for usage of `std::mem::size_of::<T>() * 8` when
20809`T::BITS` is available."##,
20810        default_severity: Severity::Allow,
20811        warn_since: None,
20812        deny_since: None,
20813    },
20814    Lint {
20815        label: "clippy::manual_c_str_literals",
20816        description: r##"Checks for the manual creation of C strings (a string with a `NUL` byte at the end), either
20817through one of the `CStr` constructor functions, or more plainly by calling `.as_ptr()`
20818on a (byte) string literal with a hardcoded `\\0` byte at the end."##,
20819        default_severity: Severity::Allow,
20820        warn_since: None,
20821        deny_since: None,
20822    },
20823    Lint {
20824        label: "clippy::manual_clamp",
20825        description: r##"Identifies good opportunities for a clamp function from std or core, and suggests using it."##,
20826        default_severity: Severity::Allow,
20827        warn_since: None,
20828        deny_since: None,
20829    },
20830    Lint {
20831        label: "clippy::manual_div_ceil",
20832        description: r##"Checks for an expression like `(x + (y - 1)) / y` which is a common manual reimplementation
20833of `x.div_ceil(y)`."##,
20834        default_severity: Severity::Allow,
20835        warn_since: None,
20836        deny_since: None,
20837    },
20838    Lint {
20839        label: "clippy::manual_filter",
20840        description: r##"Checks for usage of `match` which could be implemented using `filter`"##,
20841        default_severity: Severity::Allow,
20842        warn_since: None,
20843        deny_since: None,
20844    },
20845    Lint {
20846        label: "clippy::manual_filter_map",
20847        description: r##"Checks for usage of `_.filter(_).map(_)` that can be written more simply
20848as `filter_map(_)`."##,
20849        default_severity: Severity::Allow,
20850        warn_since: None,
20851        deny_since: None,
20852    },
20853    Lint {
20854        label: "clippy::manual_find",
20855        description: r##"Checks for manual implementations of Iterator::find"##,
20856        default_severity: Severity::Allow,
20857        warn_since: None,
20858        deny_since: None,
20859    },
20860    Lint {
20861        label: "clippy::manual_find_map",
20862        description: r##"Checks for usage of `_.find(_).map(_)` that can be written more simply
20863as `find_map(_)`."##,
20864        default_severity: Severity::Allow,
20865        warn_since: None,
20866        deny_since: None,
20867    },
20868    Lint {
20869        label: "clippy::manual_flatten",
20870        description: r##"Checks for unnecessary `if let` usage in a for loop
20871where only the `Some` or `Ok` variant of the iterator element is used."##,
20872        default_severity: Severity::Allow,
20873        warn_since: None,
20874        deny_since: None,
20875    },
20876    Lint {
20877        label: "clippy::manual_hash_one",
20878        description: r##"Checks for cases where [`BuildHasher::hash_one`] can be used.
20879
20880[`BuildHasher::hash_one`]: https://doc.rust-lang.org/std/hash/trait.BuildHasher.html#method.hash_one"##,
20881        default_severity: Severity::Allow,
20882        warn_since: None,
20883        deny_since: None,
20884    },
20885    Lint {
20886        label: "clippy::manual_inspect",
20887        description: r##"Checks for uses of `map` which return the original item."##,
20888        default_severity: Severity::Allow,
20889        warn_since: None,
20890        deny_since: None,
20891    },
20892    Lint {
20893        label: "clippy::manual_instant_elapsed",
20894        description: r##"Lints subtraction between `Instant::now()` and another `Instant`."##,
20895        default_severity: Severity::Allow,
20896        warn_since: None,
20897        deny_since: None,
20898    },
20899    Lint {
20900        label: "clippy::manual_is_ascii_check",
20901        description: r##"Suggests to use dedicated built-in methods,
20902`is_ascii_(lowercase|uppercase|digit|hexdigit)` for checking on corresponding
20903ascii range"##,
20904        default_severity: Severity::Allow,
20905        warn_since: None,
20906        deny_since: None,
20907    },
20908    Lint {
20909        label: "clippy::manual_is_finite",
20910        description: r##"Checks for manual `is_finite` reimplementations
20911(i.e., `x != <float>::INFINITY && x != <float>::NEG_INFINITY`)."##,
20912        default_severity: Severity::Allow,
20913        warn_since: None,
20914        deny_since: None,
20915    },
20916    Lint {
20917        label: "clippy::manual_is_infinite",
20918        description: r##"Checks for manual `is_infinite` reimplementations
20919(i.e., `x == <float>::INFINITY || x == <float>::NEG_INFINITY`)."##,
20920        default_severity: Severity::Allow,
20921        warn_since: None,
20922        deny_since: None,
20923    },
20924    Lint {
20925        label: "clippy::manual_is_power_of_two",
20926        description: r##"Checks for expressions like `x.count_ones() == 1` or `x & (x - 1) == 0`, with x and unsigned integer, which are manual
20927reimplementations of `x.is_power_of_two()`."##,
20928        default_severity: Severity::Allow,
20929        warn_since: None,
20930        deny_since: None,
20931    },
20932    Lint {
20933        label: "clippy::manual_is_variant_and",
20934        description: r##"Checks for usage of `option.map(f).unwrap_or_default()` and `result.map(f).unwrap_or_default()` where f is a function or closure that returns the `bool` type."##,
20935        default_severity: Severity::Allow,
20936        warn_since: None,
20937        deny_since: None,
20938    },
20939    Lint {
20940        label: "clippy::manual_let_else",
20941        description: r##"Warn of cases where `let...else` could be used"##,
20942        default_severity: Severity::Allow,
20943        warn_since: None,
20944        deny_since: None,
20945    },
20946    Lint {
20947        label: "clippy::manual_main_separator_str",
20948        description: r##"Checks for references on `std::path::MAIN_SEPARATOR.to_string()` used
20949to build a `&str`."##,
20950        default_severity: Severity::Allow,
20951        warn_since: None,
20952        deny_since: None,
20953    },
20954    Lint {
20955        label: "clippy::manual_map",
20956        description: r##"Checks for usage of `match` which could be implemented using `map`"##,
20957        default_severity: Severity::Allow,
20958        warn_since: None,
20959        deny_since: None,
20960    },
20961    Lint {
20962        label: "clippy::manual_memcpy",
20963        description: r##"Checks for for-loops that manually copy items between
20964slices that could be optimized by having a memcpy."##,
20965        default_severity: Severity::Allow,
20966        warn_since: None,
20967        deny_since: None,
20968    },
20969    Lint {
20970        label: "clippy::manual_next_back",
20971        description: r##"Checks for `.rev().next()` on a `DoubleEndedIterator`"##,
20972        default_severity: Severity::Allow,
20973        warn_since: None,
20974        deny_since: None,
20975    },
20976    Lint {
20977        label: "clippy::manual_non_exhaustive",
20978        description: r##"Checks for manual implementations of the non-exhaustive pattern."##,
20979        default_severity: Severity::Allow,
20980        warn_since: None,
20981        deny_since: None,
20982    },
20983    Lint {
20984        label: "clippy::manual_ok_or",
20985        description: r##"Finds patterns that reimplement `Option::ok_or`."##,
20986        default_severity: Severity::Allow,
20987        warn_since: None,
20988        deny_since: None,
20989    },
20990    Lint {
20991        label: "clippy::manual_pattern_char_comparison",
20992        description: r##"Checks for manual `char` comparison in string patterns"##,
20993        default_severity: Severity::Allow,
20994        warn_since: None,
20995        deny_since: None,
20996    },
20997    Lint {
20998        label: "clippy::manual_range_contains",
20999        description: r##"Checks for expressions like `x >= 3 && x < 8` that could
21000be more readably expressed as `(3..8).contains(x)`."##,
21001        default_severity: Severity::Allow,
21002        warn_since: None,
21003        deny_since: None,
21004    },
21005    Lint {
21006        label: "clippy::manual_range_patterns",
21007        description: r##"Looks for combined OR patterns that are all contained in a specific range,
21008e.g. `6 | 4 | 5 | 9 | 7 | 8` can be rewritten as `4..=9`."##,
21009        default_severity: Severity::Allow,
21010        warn_since: None,
21011        deny_since: None,
21012    },
21013    Lint {
21014        label: "clippy::manual_rem_euclid",
21015        description: r##"Checks for an expression like `((x % 4) + 4) % 4` which is a common manual reimplementation
21016of `x.rem_euclid(4)`."##,
21017        default_severity: Severity::Allow,
21018        warn_since: None,
21019        deny_since: None,
21020    },
21021    Lint {
21022        label: "clippy::manual_retain",
21023        description: r##"Checks for code to be replaced by `.retain()`."##,
21024        default_severity: Severity::Allow,
21025        warn_since: None,
21026        deny_since: None,
21027    },
21028    Lint {
21029        label: "clippy::manual_rotate",
21030        description: r##"It detects manual bit rotations that could be rewritten using standard
21031functions `rotate_left` or `rotate_right`."##,
21032        default_severity: Severity::Allow,
21033        warn_since: None,
21034        deny_since: None,
21035    },
21036    Lint {
21037        label: "clippy::manual_saturating_arithmetic",
21038        description: r##"Checks for `.checked_add/sub(x).unwrap_or(MAX/MIN)`."##,
21039        default_severity: Severity::Allow,
21040        warn_since: None,
21041        deny_since: None,
21042    },
21043    Lint {
21044        label: "clippy::manual_slice_size_calculation",
21045        description: r##"When `a` is `&[T]`, detect `a.len() * size_of::<T>()` and suggest `size_of_val(a)`
21046instead."##,
21047        default_severity: Severity::Allow,
21048        warn_since: None,
21049        deny_since: None,
21050    },
21051    Lint {
21052        label: "clippy::manual_split_once",
21053        description: r##"Checks for usage of `str::splitn(2, _)`"##,
21054        default_severity: Severity::Allow,
21055        warn_since: None,
21056        deny_since: None,
21057    },
21058    Lint {
21059        label: "clippy::manual_str_repeat",
21060        description: r##"Checks for manual implementations of `str::repeat`"##,
21061        default_severity: Severity::Allow,
21062        warn_since: None,
21063        deny_since: None,
21064    },
21065    Lint {
21066        label: "clippy::manual_string_new",
21067        description: r##"Checks for usage of `` to create a `String`, such as `.to_string()`, `.to_owned()`,
21068`String::from()` and others."##,
21069        default_severity: Severity::Allow,
21070        warn_since: None,
21071        deny_since: None,
21072    },
21073    Lint {
21074        label: "clippy::manual_strip",
21075        description: r##"Suggests using `strip_{prefix,suffix}` over `str::{starts,ends}_with` and slicing using
21076the pattern's length."##,
21077        default_severity: Severity::Allow,
21078        warn_since: None,
21079        deny_since: None,
21080    },
21081    Lint {
21082        label: "clippy::manual_swap",
21083        description: r##"Checks for manual swapping.
21084
21085Note that the lint will not be emitted in const blocks, as the suggestion would not be applicable."##,
21086        default_severity: Severity::Allow,
21087        warn_since: None,
21088        deny_since: None,
21089    },
21090    Lint {
21091        label: "clippy::manual_try_fold",
21092        description: r##"Checks for usage of `Iterator::fold` with a type that implements `Try`."##,
21093        default_severity: Severity::Allow,
21094        warn_since: None,
21095        deny_since: None,
21096    },
21097    Lint {
21098        label: "clippy::manual_unwrap_or",
21099        description: r##"Finds patterns that reimplement `Option::unwrap_or` or `Result::unwrap_or`."##,
21100        default_severity: Severity::Allow,
21101        warn_since: None,
21102        deny_since: None,
21103    },
21104    Lint {
21105        label: "clippy::manual_unwrap_or_default",
21106        description: r##"Checks if a `match` or `if let` expression can be simplified using
21107`.unwrap_or_default()`."##,
21108        default_severity: Severity::Allow,
21109        warn_since: None,
21110        deny_since: None,
21111    },
21112    Lint {
21113        label: "clippy::manual_while_let_some",
21114        description: r##"Looks for loops that check for emptiness of a `Vec` in the condition and pop an element
21115in the body as a separate operation."##,
21116        default_severity: Severity::Allow,
21117        warn_since: None,
21118        deny_since: None,
21119    },
21120    Lint {
21121        label: "clippy::many_single_char_names",
21122        description: r##"Checks for too many variables whose name consists of a
21123single character."##,
21124        default_severity: Severity::Allow,
21125        warn_since: None,
21126        deny_since: None,
21127    },
21128    Lint {
21129        label: "clippy::map_clone",
21130        description: r##"Checks for usage of `map(|x| x.clone())` or
21131dereferencing closures for `Copy` types, on `Iterator` or `Option`,
21132and suggests `cloned()` or `copied()` instead"##,
21133        default_severity: Severity::Allow,
21134        warn_since: None,
21135        deny_since: None,
21136    },
21137    Lint {
21138        label: "clippy::map_collect_result_unit",
21139        description: r##"Checks for usage of `_.map(_).collect::<Result<(), _>()`."##,
21140        default_severity: Severity::Allow,
21141        warn_since: None,
21142        deny_since: None,
21143    },
21144    Lint {
21145        label: "clippy::map_entry",
21146        description: r##"Checks for usage of `contains_key` + `insert` on `HashMap`
21147or `BTreeMap`."##,
21148        default_severity: Severity::Allow,
21149        warn_since: None,
21150        deny_since: None,
21151    },
21152    Lint {
21153        label: "clippy::map_err_ignore",
21154        description: r##"Checks for instances of `map_err(|_| Some::Enum)`"##,
21155        default_severity: Severity::Allow,
21156        warn_since: None,
21157        deny_since: None,
21158    },
21159    Lint {
21160        label: "clippy::map_flatten",
21161        description: r##"Checks for usage of `_.map(_).flatten(_)` on `Iterator` and `Option`"##,
21162        default_severity: Severity::Allow,
21163        warn_since: None,
21164        deny_since: None,
21165    },
21166    Lint {
21167        label: "clippy::map_identity",
21168        description: r##"Checks for instances of `map(f)` where `f` is the identity function."##,
21169        default_severity: Severity::Allow,
21170        warn_since: None,
21171        deny_since: None,
21172    },
21173    Lint {
21174        label: "clippy::map_unwrap_or",
21175        description: r##"Checks for usage of `option.map(_).unwrap_or(_)` or `option.map(_).unwrap_or_else(_)` or
21176`result.map(_).unwrap_or_else(_)`."##,
21177        default_severity: Severity::Allow,
21178        warn_since: None,
21179        deny_since: None,
21180    },
21181    Lint {
21182        label: "clippy::match_as_ref",
21183        description: r##"Checks for match which is used to add a reference to an
21184`Option` value."##,
21185        default_severity: Severity::Allow,
21186        warn_since: None,
21187        deny_since: None,
21188    },
21189    Lint {
21190        label: "clippy::match_bool",
21191        description: r##"Checks for matches where match expression is a `bool`. It
21192suggests to replace the expression with an `if...else` block."##,
21193        default_severity: Severity::Allow,
21194        warn_since: None,
21195        deny_since: None,
21196    },
21197    Lint {
21198        label: "clippy::match_like_matches_macro",
21199        description: r##"Checks for `match`  or `if let` expressions producing a
21200`bool` that could be written using `matches!`"##,
21201        default_severity: Severity::Allow,
21202        warn_since: None,
21203        deny_since: None,
21204    },
21205    Lint {
21206        label: "clippy::match_on_vec_items",
21207        description: r##"Checks for `match vec[idx]` or `match vec[n..m]`."##,
21208        default_severity: Severity::Allow,
21209        warn_since: None,
21210        deny_since: None,
21211    },
21212    Lint {
21213        label: "clippy::match_overlapping_arm",
21214        description: r##"Checks for overlapping match arms."##,
21215        default_severity: Severity::Allow,
21216        warn_since: None,
21217        deny_since: None,
21218    },
21219    Lint {
21220        label: "clippy::match_ref_pats",
21221        description: r##"Checks for matches where all arms match a reference,
21222suggesting to remove the reference and deref the matched expression
21223instead. It also checks for `if let &foo = bar` blocks."##,
21224        default_severity: Severity::Allow,
21225        warn_since: None,
21226        deny_since: None,
21227    },
21228    Lint {
21229        label: "clippy::match_result_ok",
21230        description: r##"Checks for unnecessary `ok()` in `while let`."##,
21231        default_severity: Severity::Allow,
21232        warn_since: None,
21233        deny_since: None,
21234    },
21235    Lint {
21236        label: "clippy::match_same_arms",
21237        description: r##"Checks for `match` with identical arm bodies.
21238
21239Note: Does not lint on wildcards if the `non_exhaustive_omitted_patterns_lint` feature is
21240enabled and disallowed."##,
21241        default_severity: Severity::Allow,
21242        warn_since: None,
21243        deny_since: None,
21244    },
21245    Lint {
21246        label: "clippy::match_single_binding",
21247        description: r##"Checks for useless match that binds to only one value."##,
21248        default_severity: Severity::Allow,
21249        warn_since: None,
21250        deny_since: None,
21251    },
21252    Lint {
21253        label: "clippy::match_str_case_mismatch",
21254        description: r##"Checks for `match` expressions modifying the case of a string with non-compliant arms"##,
21255        default_severity: Severity::Allow,
21256        warn_since: None,
21257        deny_since: None,
21258    },
21259    Lint {
21260        label: "clippy::match_wild_err_arm",
21261        description: r##"Checks for arm which matches all errors with `Err(_)`
21262and take drastic actions like `panic!`."##,
21263        default_severity: Severity::Allow,
21264        warn_since: None,
21265        deny_since: None,
21266    },
21267    Lint {
21268        label: "clippy::match_wildcard_for_single_variants",
21269        description: r##"Checks for wildcard enum matches for a single variant."##,
21270        default_severity: Severity::Allow,
21271        warn_since: None,
21272        deny_since: None,
21273    },
21274    Lint {
21275        label: "clippy::maybe_infinite_iter",
21276        description: r##"Checks for iteration that may be infinite."##,
21277        default_severity: Severity::Allow,
21278        warn_since: None,
21279        deny_since: None,
21280    },
21281    Lint {
21282        label: "clippy::mem_forget",
21283        description: r##"Checks for usage of `std::mem::forget(t)` where `t` is
21284`Drop` or has a field that implements `Drop`."##,
21285        default_severity: Severity::Allow,
21286        warn_since: None,
21287        deny_since: None,
21288    },
21289    Lint {
21290        label: "clippy::mem_replace_option_with_none",
21291        description: r##"Checks for `mem::replace()` on an `Option` with
21292`None`."##,
21293        default_severity: Severity::Allow,
21294        warn_since: None,
21295        deny_since: None,
21296    },
21297    Lint {
21298        label: "clippy::mem_replace_with_default",
21299        description: r##"Checks for `std::mem::replace` on a value of type
21300`T` with `T::default()`."##,
21301        default_severity: Severity::Allow,
21302        warn_since: None,
21303        deny_since: None,
21304    },
21305    Lint {
21306        label: "clippy::mem_replace_with_uninit",
21307        description: r##"Checks for `mem::replace(&mut _, mem::uninitialized())`
21308and `mem::replace(&mut _, mem::zeroed())`."##,
21309        default_severity: Severity::Allow,
21310        warn_since: None,
21311        deny_since: None,
21312    },
21313    Lint {
21314        label: "clippy::min_ident_chars",
21315        description: r##"Checks for identifiers which consist of a single character (or fewer than the configured threshold).
21316
21317Note: This lint can be very noisy when enabled; it may be desirable to only enable it
21318temporarily."##,
21319        default_severity: Severity::Allow,
21320        warn_since: None,
21321        deny_since: None,
21322    },
21323    Lint {
21324        label: "clippy::min_max",
21325        description: r##"Checks for expressions where `std::cmp::min` and `max` are
21326used to clamp values, but switched so that the result is constant."##,
21327        default_severity: Severity::Allow,
21328        warn_since: None,
21329        deny_since: None,
21330    },
21331    Lint {
21332        label: "clippy::misaligned_transmute",
21333        description: r##"Nothing. This lint has been deprecated"##,
21334        default_severity: Severity::Allow,
21335        warn_since: None,
21336        deny_since: None,
21337    },
21338    Lint {
21339        label: "clippy::mismatching_type_param_order",
21340        description: r##"Checks for type parameters which are positioned inconsistently between
21341a type definition and impl block. Specifically, a parameter in an impl
21342block which has the same name as a parameter in the type def, but is in
21343a different place."##,
21344        default_severity: Severity::Allow,
21345        warn_since: None,
21346        deny_since: None,
21347    },
21348    Lint {
21349        label: "clippy::misnamed_getters",
21350        description: r##"Checks for getter methods that return a field that doesn't correspond
21351to the name of the method, when there is a field's whose name matches that of the method."##,
21352        default_severity: Severity::Allow,
21353        warn_since: None,
21354        deny_since: None,
21355    },
21356    Lint {
21357        label: "clippy::misrefactored_assign_op",
21358        description: r##"Checks for `a op= a op b` or `a op= b op a` patterns."##,
21359        default_severity: Severity::Allow,
21360        warn_since: None,
21361        deny_since: None,
21362    },
21363    Lint {
21364        label: "clippy::missing_assert_message",
21365        description: r##"Checks assertions without a custom panic message."##,
21366        default_severity: Severity::Allow,
21367        warn_since: None,
21368        deny_since: None,
21369    },
21370    Lint {
21371        label: "clippy::missing_asserts_for_indexing",
21372        description: r##"Checks for repeated slice indexing without asserting beforehand that the length
21373is greater than the largest index used to index into the slice."##,
21374        default_severity: Severity::Allow,
21375        warn_since: None,
21376        deny_since: None,
21377    },
21378    Lint {
21379        label: "clippy::missing_const_for_fn",
21380        description: r##"Suggests the use of `const` in functions and methods where possible."##,
21381        default_severity: Severity::Allow,
21382        warn_since: None,
21383        deny_since: None,
21384    },
21385    Lint {
21386        label: "clippy::missing_const_for_thread_local",
21387        description: r##"Suggests to use `const` in `thread_local!` macro if possible."##,
21388        default_severity: Severity::Allow,
21389        warn_since: None,
21390        deny_since: None,
21391    },
21392    Lint {
21393        label: "clippy::missing_docs_in_private_items",
21394        description: r##"Warns if there is missing documentation for any private documentable item."##,
21395        default_severity: Severity::Allow,
21396        warn_since: None,
21397        deny_since: None,
21398    },
21399    Lint {
21400        label: "clippy::missing_enforced_import_renames",
21401        description: r##"Checks for imports that do not rename the item as specified
21402in the `enforced-import-renames` config option.
21403
21404Note: Even though this lint is warn-by-default, it will only trigger if
21405import renames are defined in the `clippy.toml` file."##,
21406        default_severity: Severity::Allow,
21407        warn_since: None,
21408        deny_since: None,
21409    },
21410    Lint {
21411        label: "clippy::missing_errors_doc",
21412        description: r##"Checks the doc comments of publicly visible functions that
21413return a `Result` type and warns if there is no `# Errors` section."##,
21414        default_severity: Severity::Allow,
21415        warn_since: None,
21416        deny_since: None,
21417    },
21418    Lint {
21419        label: "clippy::missing_fields_in_debug",
21420        description: r##"Checks for manual [`core::fmt::Debug`](https://doc.rust-lang.org/core/fmt/trait.Debug.html) implementations that do not use all fields."##,
21421        default_severity: Severity::Allow,
21422        warn_since: None,
21423        deny_since: None,
21424    },
21425    Lint {
21426        label: "clippy::missing_inline_in_public_items",
21427        description: r##"It lints if an exported function, method, trait method with default impl,
21428or trait method impl is not `#[inline]`."##,
21429        default_severity: Severity::Allow,
21430        warn_since: None,
21431        deny_since: None,
21432    },
21433    Lint {
21434        label: "clippy::missing_panics_doc",
21435        description: r##"Checks the doc comments of publicly visible functions that
21436may panic and warns if there is no `# Panics` section."##,
21437        default_severity: Severity::Allow,
21438        warn_since: None,
21439        deny_since: None,
21440    },
21441    Lint {
21442        label: "clippy::missing_safety_doc",
21443        description: r##"Checks for the doc comments of publicly visible
21444unsafe functions and warns if there is no `# Safety` section."##,
21445        default_severity: Severity::Allow,
21446        warn_since: None,
21447        deny_since: None,
21448    },
21449    Lint {
21450        label: "clippy::missing_spin_loop",
21451        description: r##"Checks for empty spin loops"##,
21452        default_severity: Severity::Allow,
21453        warn_since: None,
21454        deny_since: None,
21455    },
21456    Lint {
21457        label: "clippy::missing_trait_methods",
21458        description: r##"Checks if a provided method is used implicitly by a trait
21459implementation."##,
21460        default_severity: Severity::Allow,
21461        warn_since: None,
21462        deny_since: None,
21463    },
21464    Lint {
21465        label: "clippy::missing_transmute_annotations",
21466        description: r##"Checks if transmute calls have all generics specified."##,
21467        default_severity: Severity::Allow,
21468        warn_since: None,
21469        deny_since: None,
21470    },
21471    Lint {
21472        label: "clippy::mistyped_literal_suffixes",
21473        description: r##"Warns for mistyped suffix in literals"##,
21474        default_severity: Severity::Allow,
21475        warn_since: None,
21476        deny_since: None,
21477    },
21478    Lint {
21479        label: "clippy::mixed_attributes_style",
21480        description: r##"Checks for items that have the same kind of attributes with mixed styles (inner/outer)."##,
21481        default_severity: Severity::Allow,
21482        warn_since: None,
21483        deny_since: None,
21484    },
21485    Lint {
21486        label: "clippy::mixed_case_hex_literals",
21487        description: r##"Warns on hexadecimal literals with mixed-case letter
21488digits."##,
21489        default_severity: Severity::Allow,
21490        warn_since: None,
21491        deny_since: None,
21492    },
21493    Lint {
21494        label: "clippy::mixed_read_write_in_expression",
21495        description: r##"Checks for a read and a write to the same variable where
21496whether the read occurs before or after the write depends on the evaluation
21497order of sub-expressions."##,
21498        default_severity: Severity::Allow,
21499        warn_since: None,
21500        deny_since: None,
21501    },
21502    Lint {
21503        label: "clippy::mod_module_files",
21504        description: r##"Checks that module layout uses only self named module files; bans `mod.rs` files."##,
21505        default_severity: Severity::Allow,
21506        warn_since: None,
21507        deny_since: None,
21508    },
21509    Lint {
21510        label: "clippy::module_inception",
21511        description: r##"Checks for modules that have the same name as their
21512parent module"##,
21513        default_severity: Severity::Allow,
21514        warn_since: None,
21515        deny_since: None,
21516    },
21517    Lint {
21518        label: "clippy::module_name_repetitions",
21519        description: r##"Detects type names that are prefixed or suffixed by the
21520containing module's name."##,
21521        default_severity: Severity::Allow,
21522        warn_since: None,
21523        deny_since: None,
21524    },
21525    Lint {
21526        label: "clippy::modulo_arithmetic",
21527        description: r##"Checks for modulo arithmetic."##,
21528        default_severity: Severity::Allow,
21529        warn_since: None,
21530        deny_since: None,
21531    },
21532    Lint {
21533        label: "clippy::modulo_one",
21534        description: r##"Checks for getting the remainder of integer division by one or minus
21535one."##,
21536        default_severity: Severity::Allow,
21537        warn_since: None,
21538        deny_since: None,
21539    },
21540    Lint {
21541        label: "clippy::multi_assignments",
21542        description: r##"Checks for nested assignments."##,
21543        default_severity: Severity::Allow,
21544        warn_since: None,
21545        deny_since: None,
21546    },
21547    Lint {
21548        label: "clippy::multiple_bound_locations",
21549        description: r##"Check if a generic is defined both in the bound predicate and in the `where` clause."##,
21550        default_severity: Severity::Allow,
21551        warn_since: None,
21552        deny_since: None,
21553    },
21554    Lint {
21555        label: "clippy::multiple_crate_versions",
21556        description: r##"Checks to see if multiple versions of a crate are being
21557used."##,
21558        default_severity: Severity::Allow,
21559        warn_since: None,
21560        deny_since: None,
21561    },
21562    Lint {
21563        label: "clippy::multiple_inherent_impl",
21564        description: r##"Checks for multiple inherent implementations of a struct"##,
21565        default_severity: Severity::Allow,
21566        warn_since: None,
21567        deny_since: None,
21568    },
21569    Lint {
21570        label: "clippy::multiple_unsafe_ops_per_block",
21571        description: r##"Checks for `unsafe` blocks that contain more than one unsafe operation."##,
21572        default_severity: Severity::Allow,
21573        warn_since: None,
21574        deny_since: None,
21575    },
21576    Lint {
21577        label: "clippy::must_use_candidate",
21578        description: r##"Checks for public functions that have no
21579`#[must_use]` attribute, but return something not already marked
21580must-use, have no mutable arg and mutate no statics."##,
21581        default_severity: Severity::Allow,
21582        warn_since: None,
21583        deny_since: None,
21584    },
21585    Lint {
21586        label: "clippy::must_use_unit",
21587        description: r##"Checks for a `#[must_use]` attribute on
21588unit-returning functions and methods."##,
21589        default_severity: Severity::Allow,
21590        warn_since: None,
21591        deny_since: None,
21592    },
21593    Lint {
21594        label: "clippy::mut_from_ref",
21595        description: r##"This lint checks for functions that take immutable references and return
21596mutable ones. This will not trigger if no unsafe code exists as there
21597are multiple safe functions which will do this transformation
21598
21599To be on the conservative side, if there's at least one mutable
21600reference with the output lifetime, this lint will not trigger."##,
21601        default_severity: Severity::Allow,
21602        warn_since: None,
21603        deny_since: None,
21604    },
21605    Lint {
21606        label: "clippy::mut_mut",
21607        description: r##"Checks for instances of `mut mut` references."##,
21608        default_severity: Severity::Allow,
21609        warn_since: None,
21610        deny_since: None,
21611    },
21612    Lint {
21613        label: "clippy::mut_mutex_lock",
21614        description: r##"Checks for `&mut Mutex::lock` calls"##,
21615        default_severity: Severity::Allow,
21616        warn_since: None,
21617        deny_since: None,
21618    },
21619    Lint {
21620        label: "clippy::mut_range_bound",
21621        description: r##"Checks for loops with a range bound that is a mutable variable."##,
21622        default_severity: Severity::Allow,
21623        warn_since: None,
21624        deny_since: None,
21625    },
21626    Lint {
21627        label: "clippy::mutable_key_type",
21628        description: r##"Checks for sets/maps with mutable key types."##,
21629        default_severity: Severity::Allow,
21630        warn_since: None,
21631        deny_since: None,
21632    },
21633    Lint {
21634        label: "clippy::mutex_atomic",
21635        description: r##"Checks for usage of `Mutex<X>` where an atomic will do."##,
21636        default_severity: Severity::Allow,
21637        warn_since: None,
21638        deny_since: None,
21639    },
21640    Lint {
21641        label: "clippy::mutex_integer",
21642        description: r##"Checks for usage of `Mutex<X>` where `X` is an integral
21643type."##,
21644        default_severity: Severity::Allow,
21645        warn_since: None,
21646        deny_since: None,
21647    },
21648    Lint {
21649        label: "clippy::naive_bytecount",
21650        description: r##"Checks for naive byte counts"##,
21651        default_severity: Severity::Allow,
21652        warn_since: None,
21653        deny_since: None,
21654    },
21655    Lint {
21656        label: "clippy::needless_arbitrary_self_type",
21657        description: r##"The lint checks for `self` in fn parameters that
21658specify the `Self`-type explicitly"##,
21659        default_severity: Severity::Allow,
21660        warn_since: None,
21661        deny_since: None,
21662    },
21663    Lint {
21664        label: "clippy::needless_bitwise_bool",
21665        description: r##"Checks for usage of bitwise and/or operators between booleans, where performance may be improved by using
21666a lazy and."##,
21667        default_severity: Severity::Allow,
21668        warn_since: None,
21669        deny_since: None,
21670    },
21671    Lint {
21672        label: "clippy::needless_bool",
21673        description: r##"Checks for expressions of the form `if c { true } else {
21674false }` (or vice versa) and suggests using the condition directly."##,
21675        default_severity: Severity::Allow,
21676        warn_since: None,
21677        deny_since: None,
21678    },
21679    Lint {
21680        label: "clippy::needless_bool_assign",
21681        description: r##"Checks for expressions of the form `if c { x = true } else { x = false }`
21682(or vice versa) and suggest assigning the variable directly from the
21683condition."##,
21684        default_severity: Severity::Allow,
21685        warn_since: None,
21686        deny_since: None,
21687    },
21688    Lint {
21689        label: "clippy::needless_borrow",
21690        description: r##"Checks for address of operations (`&`) that are going to
21691be dereferenced immediately by the compiler."##,
21692        default_severity: Severity::Allow,
21693        warn_since: None,
21694        deny_since: None,
21695    },
21696    Lint {
21697        label: "clippy::needless_borrowed_reference",
21698        description: r##"Checks for bindings that needlessly destructure a reference and borrow the inner
21699value with `&ref`."##,
21700        default_severity: Severity::Allow,
21701        warn_since: None,
21702        deny_since: None,
21703    },
21704    Lint {
21705        label: "clippy::needless_borrows_for_generic_args",
21706        description: r##"Checks for borrow operations (`&`) that are used as a generic argument to a
21707function when the borrowed value could be used."##,
21708        default_severity: Severity::Allow,
21709        warn_since: None,
21710        deny_since: None,
21711    },
21712    Lint {
21713        label: "clippy::needless_character_iteration",
21714        description: r##"Checks if an iterator is used to check if a string is ascii."##,
21715        default_severity: Severity::Allow,
21716        warn_since: None,
21717        deny_since: None,
21718    },
21719    Lint {
21720        label: "clippy::needless_collect",
21721        description: r##"Checks for functions collecting an iterator when collect
21722is not needed."##,
21723        default_severity: Severity::Allow,
21724        warn_since: None,
21725        deny_since: None,
21726    },
21727    Lint {
21728        label: "clippy::needless_continue",
21729        description: r##"The lint checks for `if`-statements appearing in loops
21730that contain a `continue` statement in either their main blocks or their
21731`else`-blocks, when omitting the `else`-block possibly with some
21732rearrangement of code can make the code easier to understand."##,
21733        default_severity: Severity::Allow,
21734        warn_since: None,
21735        deny_since: None,
21736    },
21737    Lint {
21738        label: "clippy::needless_doctest_main",
21739        description: r##"Checks for `fn main() { .. }` in doctests"##,
21740        default_severity: Severity::Allow,
21741        warn_since: None,
21742        deny_since: None,
21743    },
21744    Lint {
21745        label: "clippy::needless_else",
21746        description: r##"Checks for empty `else` branches."##,
21747        default_severity: Severity::Allow,
21748        warn_since: None,
21749        deny_since: None,
21750    },
21751    Lint {
21752        label: "clippy::needless_for_each",
21753        description: r##"Checks for usage of `for_each` that would be more simply written as a
21754`for` loop."##,
21755        default_severity: Severity::Allow,
21756        warn_since: None,
21757        deny_since: None,
21758    },
21759    Lint {
21760        label: "clippy::needless_if",
21761        description: r##"Checks for empty `if` branches with no else branch."##,
21762        default_severity: Severity::Allow,
21763        warn_since: None,
21764        deny_since: None,
21765    },
21766    Lint {
21767        label: "clippy::needless_late_init",
21768        description: r##"Checks for late initializations that can be replaced by a `let` statement
21769with an initializer."##,
21770        default_severity: Severity::Allow,
21771        warn_since: None,
21772        deny_since: None,
21773    },
21774    Lint {
21775        label: "clippy::needless_lifetimes",
21776        description: r##"Checks for lifetime annotations which can be removed by
21777relying on lifetime elision."##,
21778        default_severity: Severity::Allow,
21779        warn_since: None,
21780        deny_since: None,
21781    },
21782    Lint {
21783        label: "clippy::needless_match",
21784        description: r##"Checks for unnecessary `match` or match-like `if let` returns for `Option` and `Result`
21785when function signatures are the same."##,
21786        default_severity: Severity::Allow,
21787        warn_since: None,
21788        deny_since: None,
21789    },
21790    Lint {
21791        label: "clippy::needless_maybe_sized",
21792        description: r##"Lints `?Sized` bounds applied to type parameters that cannot be unsized"##,
21793        default_severity: Severity::Allow,
21794        warn_since: None,
21795        deny_since: None,
21796    },
21797    Lint {
21798        label: "clippy::needless_option_as_deref",
21799        description: r##"Checks for no-op uses of `Option::{as_deref, as_deref_mut}`,
21800for example, `Option<&T>::as_deref()` returns the same type."##,
21801        default_severity: Severity::Allow,
21802        warn_since: None,
21803        deny_since: None,
21804    },
21805    Lint {
21806        label: "clippy::needless_option_take",
21807        description: r##"Checks for calling `take` function after `as_ref`."##,
21808        default_severity: Severity::Allow,
21809        warn_since: None,
21810        deny_since: None,
21811    },
21812    Lint {
21813        label: "clippy::needless_parens_on_range_literals",
21814        description: r##"The lint checks for parenthesis on literals in range statements that are
21815superfluous."##,
21816        default_severity: Severity::Allow,
21817        warn_since: None,
21818        deny_since: None,
21819    },
21820    Lint {
21821        label: "clippy::needless_pass_by_ref_mut",
21822        description: r##"Check if a `&mut` function argument is actually used mutably.
21823
21824Be careful if the function is publicly reexported as it would break compatibility with
21825users of this function, when the users pass this function as an argument."##,
21826        default_severity: Severity::Allow,
21827        warn_since: None,
21828        deny_since: None,
21829    },
21830    Lint {
21831        label: "clippy::needless_pass_by_value",
21832        description: r##"Checks for functions taking arguments by value, but not
21833consuming them in its
21834body."##,
21835        default_severity: Severity::Allow,
21836        warn_since: None,
21837        deny_since: None,
21838    },
21839    Lint {
21840        label: "clippy::needless_pub_self",
21841        description: r##"Checks for usage of `pub(self)` and `pub(in self)`."##,
21842        default_severity: Severity::Allow,
21843        warn_since: None,
21844        deny_since: None,
21845    },
21846    Lint {
21847        label: "clippy::needless_question_mark",
21848        description: r##"Suggests alternatives for useless applications of `?` in terminating expressions"##,
21849        default_severity: Severity::Allow,
21850        warn_since: None,
21851        deny_since: None,
21852    },
21853    Lint {
21854        label: "clippy::needless_range_loop",
21855        description: r##"Checks for looping over the range of `0..len` of some
21856collection just to get the values by index."##,
21857        default_severity: Severity::Allow,
21858        warn_since: None,
21859        deny_since: None,
21860    },
21861    Lint {
21862        label: "clippy::needless_raw_string_hashes",
21863        description: r##"Checks for raw string literals with an unnecessary amount of hashes around them."##,
21864        default_severity: Severity::Allow,
21865        warn_since: None,
21866        deny_since: None,
21867    },
21868    Lint {
21869        label: "clippy::needless_raw_strings",
21870        description: r##"Checks for raw string literals where a string literal can be used instead."##,
21871        default_severity: Severity::Allow,
21872        warn_since: None,
21873        deny_since: None,
21874    },
21875    Lint {
21876        label: "clippy::needless_return",
21877        description: r##"Checks for return statements at the end of a block."##,
21878        default_severity: Severity::Allow,
21879        warn_since: None,
21880        deny_since: None,
21881    },
21882    Lint {
21883        label: "clippy::needless_return_with_question_mark",
21884        description: r##"Checks for return statements on `Err` paired with the `?` operator."##,
21885        default_severity: Severity::Allow,
21886        warn_since: None,
21887        deny_since: None,
21888    },
21889    Lint {
21890        label: "clippy::needless_splitn",
21891        description: r##"Checks for usage of `str::splitn` (or `str::rsplitn`) where using `str::split` would be the same."##,
21892        default_severity: Severity::Allow,
21893        warn_since: None,
21894        deny_since: None,
21895    },
21896    Lint {
21897        label: "clippy::needless_update",
21898        description: r##"Checks for needlessly including a base struct on update
21899when all fields are changed anyway.
21900
21901This lint is not applied to structs marked with
21902[non_exhaustive](https://doc.rust-lang.org/reference/attributes/type_system.html)."##,
21903        default_severity: Severity::Allow,
21904        warn_since: None,
21905        deny_since: None,
21906    },
21907    Lint {
21908        label: "clippy::neg_cmp_op_on_partial_ord",
21909        description: r##"Checks for the usage of negated comparison operators on types which only implement
21910`PartialOrd` (e.g., `f64`)."##,
21911        default_severity: Severity::Allow,
21912        warn_since: None,
21913        deny_since: None,
21914    },
21915    Lint {
21916        label: "clippy::neg_multiply",
21917        description: r##"Checks for multiplication by -1 as a form of negation."##,
21918        default_severity: Severity::Allow,
21919        warn_since: None,
21920        deny_since: None,
21921    },
21922    Lint {
21923        label: "clippy::negative_feature_names",
21924        description: r##"Checks for negative feature names with prefix `no-` or `not-`"##,
21925        default_severity: Severity::Allow,
21926        warn_since: None,
21927        deny_since: None,
21928    },
21929    Lint {
21930        label: "clippy::never_loop",
21931        description: r##"Checks for loops that will always `break`, `return` or
21932`continue` an outer loop."##,
21933        default_severity: Severity::Allow,
21934        warn_since: None,
21935        deny_since: None,
21936    },
21937    Lint {
21938        label: "clippy::new_ret_no_self",
21939        description: r##"Checks for `new` not returning a type that contains `Self`."##,
21940        default_severity: Severity::Allow,
21941        warn_since: None,
21942        deny_since: None,
21943    },
21944    Lint {
21945        label: "clippy::new_without_default",
21946        description: r##"Checks for public types with a `pub fn new() -> Self` method and no
21947implementation of
21948[`Default`](https://doc.rust-lang.org/std/default/trait.Default.html)."##,
21949        default_severity: Severity::Allow,
21950        warn_since: None,
21951        deny_since: None,
21952    },
21953    Lint {
21954        label: "clippy::no_effect",
21955        description: r##"Checks for statements which have no effect."##,
21956        default_severity: Severity::Allow,
21957        warn_since: None,
21958        deny_since: None,
21959    },
21960    Lint {
21961        label: "clippy::no_effect_replace",
21962        description: r##"Checks for `replace` statements which have no effect."##,
21963        default_severity: Severity::Allow,
21964        warn_since: None,
21965        deny_since: None,
21966    },
21967    Lint {
21968        label: "clippy::no_effect_underscore_binding",
21969        description: r##"Checks for binding to underscore prefixed variable without side-effects."##,
21970        default_severity: Severity::Allow,
21971        warn_since: None,
21972        deny_since: None,
21973    },
21974    Lint {
21975        label: "clippy::no_mangle_with_rust_abi",
21976        description: r##"Checks for Rust ABI functions with the `#[no_mangle]` attribute."##,
21977        default_severity: Severity::Allow,
21978        warn_since: None,
21979        deny_since: None,
21980    },
21981    Lint {
21982        label: "clippy::non_ascii_literal",
21983        description: r##"Checks for non-ASCII characters in string and char literals."##,
21984        default_severity: Severity::Allow,
21985        warn_since: None,
21986        deny_since: None,
21987    },
21988    Lint {
21989        label: "clippy::non_canonical_clone_impl",
21990        description: r##"Checks for non-canonical implementations of `Clone` when `Copy` is already implemented."##,
21991        default_severity: Severity::Allow,
21992        warn_since: None,
21993        deny_since: None,
21994    },
21995    Lint {
21996        label: "clippy::non_canonical_partial_ord_impl",
21997        description: r##"Checks for non-canonical implementations of `PartialOrd` when `Ord` is already implemented."##,
21998        default_severity: Severity::Allow,
21999        warn_since: None,
22000        deny_since: None,
22001    },
22002    Lint {
22003        label: "clippy::non_minimal_cfg",
22004        description: r##"Checks for `any` and `all` combinators in `cfg` with only one condition."##,
22005        default_severity: Severity::Allow,
22006        warn_since: None,
22007        deny_since: None,
22008    },
22009    Lint {
22010        label: "clippy::non_octal_unix_permissions",
22011        description: r##"Checks for non-octal values used to set Unix file permissions."##,
22012        default_severity: Severity::Allow,
22013        warn_since: None,
22014        deny_since: None,
22015    },
22016    Lint {
22017        label: "clippy::non_send_fields_in_send_ty",
22018        description: r##"This lint warns about a `Send` implementation for a type that
22019contains fields that are not safe to be sent across threads.
22020It tries to detect fields that can cause a soundness issue
22021when sent to another thread (e.g., `Rc`) while allowing `!Send` fields
22022that are expected to exist in a `Send` type, such as raw pointers."##,
22023        default_severity: Severity::Allow,
22024        warn_since: None,
22025        deny_since: None,
22026    },
22027    Lint {
22028        label: "clippy::non_zero_suggestions",
22029        description: r##"Checks for conversions from `NonZero` types to regular integer types,
22030and suggests using `NonZero` types for the target as well."##,
22031        default_severity: Severity::Allow,
22032        warn_since: None,
22033        deny_since: None,
22034    },
22035    Lint {
22036        label: "clippy::nonminimal_bool",
22037        description: r##"Checks for boolean expressions that can be written more
22038concisely."##,
22039        default_severity: Severity::Allow,
22040        warn_since: None,
22041        deny_since: None,
22042    },
22043    Lint {
22044        label: "clippy::nonsensical_open_options",
22045        description: r##"Checks for duplicate open options as well as combinations
22046that make no sense."##,
22047        default_severity: Severity::Allow,
22048        warn_since: None,
22049        deny_since: None,
22050    },
22051    Lint {
22052        label: "clippy::nonstandard_macro_braces",
22053        description: r##"Checks that common macros are used with consistent bracing."##,
22054        default_severity: Severity::Allow,
22055        warn_since: None,
22056        deny_since: None,
22057    },
22058    Lint {
22059        label: "clippy::not_unsafe_ptr_arg_deref",
22060        description: r##"Checks for public functions that dereference raw pointer
22061arguments but are not marked `unsafe`."##,
22062        default_severity: Severity::Allow,
22063        warn_since: None,
22064        deny_since: None,
22065    },
22066    Lint {
22067        label: "clippy::obfuscated_if_else",
22068        description: r##"Checks for usage of `.then_some(..).unwrap_or(..)`"##,
22069        default_severity: Severity::Allow,
22070        warn_since: None,
22071        deny_since: None,
22072    },
22073    Lint {
22074        label: "clippy::octal_escapes",
22075        description: r##"Checks for `\\0` escapes in string and byte literals that look like octal
22076character escapes in C."##,
22077        default_severity: Severity::Allow,
22078        warn_since: None,
22079        deny_since: None,
22080    },
22081    Lint {
22082        label: "clippy::ok_expect",
22083        description: r##"Checks for usage of `ok().expect(..)`."##,
22084        default_severity: Severity::Allow,
22085        warn_since: None,
22086        deny_since: None,
22087    },
22088    Lint {
22089        label: "clippy::only_used_in_recursion",
22090        description: r##"Checks for arguments that are only used in recursion with no side-effects."##,
22091        default_severity: Severity::Allow,
22092        warn_since: None,
22093        deny_since: None,
22094    },
22095    Lint {
22096        label: "clippy::op_ref",
22097        description: r##"Checks for arguments to `==` which have their address
22098taken to satisfy a bound
22099and suggests to dereference the other argument instead"##,
22100        default_severity: Severity::Allow,
22101        warn_since: None,
22102        deny_since: None,
22103    },
22104    Lint {
22105        label: "clippy::option_as_ref_cloned",
22106        description: r##"Checks for usage of `.as_ref().cloned()` and `.as_mut().cloned()` on `Option`s"##,
22107        default_severity: Severity::Allow,
22108        warn_since: None,
22109        deny_since: None,
22110    },
22111    Lint {
22112        label: "clippy::option_as_ref_deref",
22113        description: r##"Checks for usage of `_.as_ref().map(Deref::deref)` or its aliases (such as String::as_str)."##,
22114        default_severity: Severity::Allow,
22115        warn_since: None,
22116        deny_since: None,
22117    },
22118    Lint {
22119        label: "clippy::option_env_unwrap",
22120        description: r##"Checks for usage of `option_env!(...).unwrap()` and
22121suggests usage of the `env!` macro."##,
22122        default_severity: Severity::Allow,
22123        warn_since: None,
22124        deny_since: None,
22125    },
22126    Lint {
22127        label: "clippy::option_filter_map",
22128        description: r##"Checks for iterators of `Option`s using `.filter(Option::is_some).map(Option::unwrap)` that may
22129be replaced with a `.flatten()` call."##,
22130        default_severity: Severity::Allow,
22131        warn_since: None,
22132        deny_since: None,
22133    },
22134    Lint {
22135        label: "clippy::option_if_let_else",
22136        description: r##"Lints usage of `if let Some(v) = ... { y } else { x }` and
22137`match .. { Some(v) => y, None/_ => x }` which are more
22138idiomatically done with `Option::map_or` (if the else bit is a pure
22139expression) or `Option::map_or_else` (if the else bit is an impure
22140expression)."##,
22141        default_severity: Severity::Allow,
22142        warn_since: None,
22143        deny_since: None,
22144    },
22145    Lint {
22146        label: "clippy::option_map_or_err_ok",
22147        description: r##"Checks for usage of `_.map_or(Err(_), Ok)`."##,
22148        default_severity: Severity::Allow,
22149        warn_since: None,
22150        deny_since: None,
22151    },
22152    Lint {
22153        label: "clippy::option_map_or_none",
22154        description: r##"Checks for usage of `_.map_or(None, _)`."##,
22155        default_severity: Severity::Allow,
22156        warn_since: None,
22157        deny_since: None,
22158    },
22159    Lint {
22160        label: "clippy::option_map_unit_fn",
22161        description: r##"Checks for usage of `option.map(f)` where f is a function
22162or closure that returns the unit type `()`."##,
22163        default_severity: Severity::Allow,
22164        warn_since: None,
22165        deny_since: None,
22166    },
22167    Lint {
22168        label: "clippy::option_option",
22169        description: r##"Checks for usage of `Option<Option<_>>` in function signatures and type
22170definitions"##,
22171        default_severity: Severity::Allow,
22172        warn_since: None,
22173        deny_since: None,
22174    },
22175    Lint {
22176        label: "clippy::or_fun_call",
22177        description: r##"Checks for calls to `.or(foo(..))`, `.unwrap_or(foo(..))`,
22178`.or_insert(foo(..))` etc., and suggests to use `.or_else(|| foo(..))`,
22179`.unwrap_or_else(|| foo(..))`, `.unwrap_or_default()` or `.or_default()`
22180etc. instead."##,
22181        default_severity: Severity::Allow,
22182        warn_since: None,
22183        deny_since: None,
22184    },
22185    Lint {
22186        label: "clippy::or_then_unwrap",
22187        description: r##"Checks for `.or(…).unwrap()` calls to Options and Results."##,
22188        default_severity: Severity::Allow,
22189        warn_since: None,
22190        deny_since: None,
22191    },
22192    Lint {
22193        label: "clippy::out_of_bounds_indexing",
22194        description: r##"Checks for out of bounds array indexing with a constant
22195index."##,
22196        default_severity: Severity::Allow,
22197        warn_since: None,
22198        deny_since: None,
22199    },
22200    Lint {
22201        label: "clippy::overly_complex_bool_expr",
22202        description: r##"Checks for boolean expressions that contain terminals that
22203can be eliminated."##,
22204        default_severity: Severity::Allow,
22205        warn_since: None,
22206        deny_since: None,
22207    },
22208    Lint {
22209        label: "clippy::panic",
22210        description: r##"Checks for usage of `panic!`."##,
22211        default_severity: Severity::Allow,
22212        warn_since: None,
22213        deny_since: None,
22214    },
22215    Lint {
22216        label: "clippy::panic_in_result_fn",
22217        description: r##"Checks for usage of `panic!` or assertions in a function whose return type is `Result`."##,
22218        default_severity: Severity::Allow,
22219        warn_since: None,
22220        deny_since: None,
22221    },
22222    Lint {
22223        label: "clippy::panicking_overflow_checks",
22224        description: r##"Detects C-style underflow/overflow checks."##,
22225        default_severity: Severity::Allow,
22226        warn_since: None,
22227        deny_since: None,
22228    },
22229    Lint {
22230        label: "clippy::panicking_unwrap",
22231        description: r##"Checks for calls of `unwrap[_err]()` that will always fail."##,
22232        default_severity: Severity::Allow,
22233        warn_since: None,
22234        deny_since: None,
22235    },
22236    Lint {
22237        label: "clippy::partial_pub_fields",
22238        description: r##"Checks whether some but not all fields of a `struct` are public.
22239
22240Either make all fields of a type public, or make none of them public"##,
22241        default_severity: Severity::Allow,
22242        warn_since: None,
22243        deny_since: None,
22244    },
22245    Lint {
22246        label: "clippy::partialeq_ne_impl",
22247        description: r##"Checks for manual re-implementations of `PartialEq::ne`."##,
22248        default_severity: Severity::Allow,
22249        warn_since: None,
22250        deny_since: None,
22251    },
22252    Lint {
22253        label: "clippy::partialeq_to_none",
22254        description: r##"Checks for binary comparisons to a literal `Option::None`."##,
22255        default_severity: Severity::Allow,
22256        warn_since: None,
22257        deny_since: None,
22258    },
22259    Lint {
22260        label: "clippy::path_buf_push_overwrite",
22261        description: r##"* Checks for [push](https://doc.rust-lang.org/std/path/struct.PathBuf.html#method.push)
22262calls on `PathBuf` that can cause overwrites."##,
22263        default_severity: Severity::Allow,
22264        warn_since: None,
22265        deny_since: None,
22266    },
22267    Lint {
22268        label: "clippy::path_ends_with_ext",
22269        description: r##"Looks for calls to `Path::ends_with` calls where the argument looks like a file extension.
22270
22271By default, Clippy has a short list of known filenames that start with a dot
22272but aren't necessarily file extensions (e.g. the `.git` folder), which are allowed by default.
22273The `allowed-dotfiles` configuration can be used to allow additional
22274file extensions that Clippy should not lint."##,
22275        default_severity: Severity::Allow,
22276        warn_since: None,
22277        deny_since: None,
22278    },
22279    Lint {
22280        label: "clippy::pathbuf_init_then_push",
22281        description: r##"Checks for calls to `push` immediately after creating a new `PathBuf`."##,
22282        default_severity: Severity::Allow,
22283        warn_since: None,
22284        deny_since: None,
22285    },
22286    Lint {
22287        label: "clippy::pattern_type_mismatch",
22288        description: r##"Checks for patterns that aren't exact representations of the types
22289they are applied to.
22290
22291To satisfy this lint, you will have to adjust either the expression that is matched
22292against or the pattern itself, as well as the bindings that are introduced by the
22293adjusted patterns. For matching you will have to either dereference the expression
22294with the `*` operator, or amend the patterns to explicitly match against `&<pattern>`
22295or `&mut <pattern>` depending on the reference mutability. For the bindings you need
22296to use the inverse. You can leave them as plain bindings if you wish for the value
22297to be copied, but you must use `ref mut <variable>` or `ref <variable>` to construct
22298a reference into the matched structure.
22299
22300If you are looking for a way to learn about ownership semantics in more detail, it
22301is recommended to look at IDE options available to you to highlight types, lifetimes
22302and reference semantics in your code. The available tooling would expose these things
22303in a general way even outside of the various pattern matching mechanics. Of course
22304this lint can still be used to highlight areas of interest and ensure a good understanding
22305of ownership semantics."##,
22306        default_severity: Severity::Allow,
22307        warn_since: None,
22308        deny_since: None,
22309    },
22310    Lint {
22311        label: "clippy::permissions_set_readonly_false",
22312        description: r##"Checks for calls to `std::fs::Permissions.set_readonly` with argument `false`."##,
22313        default_severity: Severity::Allow,
22314        warn_since: None,
22315        deny_since: None,
22316    },
22317    Lint {
22318        label: "clippy::pointers_in_nomem_asm_block",
22319        description: r##"Checks if any pointer is being passed to an asm! block with `nomem` option."##,
22320        default_severity: Severity::Allow,
22321        warn_since: None,
22322        deny_since: None,
22323    },
22324    Lint {
22325        label: "clippy::possible_missing_comma",
22326        description: r##"Checks for possible missing comma in an array. It lints if
22327an array element is a binary operator expression and it lies on two lines."##,
22328        default_severity: Severity::Allow,
22329        warn_since: None,
22330        deny_since: None,
22331    },
22332    Lint {
22333        label: "clippy::precedence",
22334        description: r##"Checks for operations where precedence may be unclear
22335and suggests to add parentheses. Currently it catches the following:
22336* mixed usage of arithmetic and bit shifting/combining operators without
22337parentheses"##,
22338        default_severity: Severity::Allow,
22339        warn_since: None,
22340        deny_since: None,
22341    },
22342    Lint {
22343        label: "clippy::print_in_format_impl",
22344        description: r##"Checks for usage of `println`, `print`, `eprintln` or `eprint` in an
22345implementation of a formatting trait."##,
22346        default_severity: Severity::Allow,
22347        warn_since: None,
22348        deny_since: None,
22349    },
22350    Lint {
22351        label: "clippy::print_literal",
22352        description: r##"This lint warns about the use of literals as `print!`/`println!` args."##,
22353        default_severity: Severity::Allow,
22354        warn_since: None,
22355        deny_since: None,
22356    },
22357    Lint {
22358        label: "clippy::print_stderr",
22359        description: r##"Checks for printing on *stderr*. The purpose of this lint
22360is to catch debugging remnants."##,
22361        default_severity: Severity::Allow,
22362        warn_since: None,
22363        deny_since: None,
22364    },
22365    Lint {
22366        label: "clippy::print_stdout",
22367        description: r##"Checks for printing on *stdout*. The purpose of this lint
22368is to catch debugging remnants."##,
22369        default_severity: Severity::Allow,
22370        warn_since: None,
22371        deny_since: None,
22372    },
22373    Lint {
22374        label: "clippy::print_with_newline",
22375        description: r##"This lint warns when you use `print!()` with a format
22376string that ends in a newline."##,
22377        default_severity: Severity::Allow,
22378        warn_since: None,
22379        deny_since: None,
22380    },
22381    Lint {
22382        label: "clippy::println_empty_string",
22383        description: r##"This lint warns when you use `println!()` to
22384print a newline."##,
22385        default_severity: Severity::Allow,
22386        warn_since: None,
22387        deny_since: None,
22388    },
22389    Lint {
22390        label: "clippy::ptr_arg",
22391        description: r##"This lint checks for function arguments of type `&String`, `&Vec`,
22392`&PathBuf`, and `Cow<_>`. It will also suggest you replace `.clone()` calls
22393with the appropriate `.to_owned()`/`to_string()` calls."##,
22394        default_severity: Severity::Allow,
22395        warn_since: None,
22396        deny_since: None,
22397    },
22398    Lint {
22399        label: "clippy::ptr_as_ptr",
22400        description: r##"Checks for `as` casts between raw pointers that don't change their
22401constness, namely `*const T` to `*const U` and `*mut T` to `*mut U`."##,
22402        default_severity: Severity::Allow,
22403        warn_since: None,
22404        deny_since: None,
22405    },
22406    Lint {
22407        label: "clippy::ptr_cast_constness",
22408        description: r##"Checks for `as` casts between raw pointers that change their constness, namely `*const T` to
22409`*mut T` and `*mut T` to `*const T`."##,
22410        default_severity: Severity::Allow,
22411        warn_since: None,
22412        deny_since: None,
22413    },
22414    Lint {
22415        label: "clippy::ptr_eq",
22416        description: r##"Use `std::ptr::eq` when applicable"##,
22417        default_severity: Severity::Allow,
22418        warn_since: None,
22419        deny_since: None,
22420    },
22421    Lint {
22422        label: "clippy::ptr_offset_with_cast",
22423        description: r##"Checks for usage of the `offset` pointer method with a `usize` casted to an
22424`isize`."##,
22425        default_severity: Severity::Allow,
22426        warn_since: None,
22427        deny_since: None,
22428    },
22429    Lint {
22430        label: "clippy::pub_enum_variant_names",
22431        description: r##"Nothing. This lint has been deprecated"##,
22432        default_severity: Severity::Allow,
22433        warn_since: None,
22434        deny_since: None,
22435    },
22436    Lint {
22437        label: "clippy::pub_underscore_fields",
22438        description: r##"Checks whether any field of the struct is prefixed with an `_` (underscore) and also marked
22439`pub` (public)"##,
22440        default_severity: Severity::Allow,
22441        warn_since: None,
22442        deny_since: None,
22443    },
22444    Lint {
22445        label: "clippy::pub_use",
22446        description: r##"Restricts the usage of `pub use ...`"##,
22447        default_severity: Severity::Allow,
22448        warn_since: None,
22449        deny_since: None,
22450    },
22451    Lint {
22452        label: "clippy::pub_with_shorthand",
22453        description: r##"Checks for usage of `pub(<loc>)` with `in`."##,
22454        default_severity: Severity::Allow,
22455        warn_since: None,
22456        deny_since: None,
22457    },
22458    Lint {
22459        label: "clippy::pub_without_shorthand",
22460        description: r##"Checks for usage of `pub(<loc>)` without `in`.
22461
22462Note: As you cannot write a module's path in `pub(<loc>)`, this will only trigger on
22463`pub(super)` and the like."##,
22464        default_severity: Severity::Allow,
22465        warn_since: None,
22466        deny_since: None,
22467    },
22468    Lint {
22469        label: "clippy::question_mark",
22470        description: r##"Checks for expressions that could be replaced by the question mark operator."##,
22471        default_severity: Severity::Allow,
22472        warn_since: None,
22473        deny_since: None,
22474    },
22475    Lint {
22476        label: "clippy::question_mark_used",
22477        description: r##"Checks for expressions that use the question mark operator and rejects them."##,
22478        default_severity: Severity::Allow,
22479        warn_since: None,
22480        deny_since: None,
22481    },
22482    Lint {
22483        label: "clippy::range_minus_one",
22484        description: r##"Checks for inclusive ranges where 1 is subtracted from
22485the upper bound, e.g., `x..=(y-1)`."##,
22486        default_severity: Severity::Allow,
22487        warn_since: None,
22488        deny_since: None,
22489    },
22490    Lint {
22491        label: "clippy::range_plus_one",
22492        description: r##"Checks for exclusive ranges where 1 is added to the
22493upper bound, e.g., `x..(y+1)`."##,
22494        default_severity: Severity::Allow,
22495        warn_since: None,
22496        deny_since: None,
22497    },
22498    Lint {
22499        label: "clippy::range_step_by_zero",
22500        description: r##"Nothing. This lint has been deprecated"##,
22501        default_severity: Severity::Allow,
22502        warn_since: None,
22503        deny_since: None,
22504    },
22505    Lint {
22506        label: "clippy::range_zip_with_len",
22507        description: r##"Checks for zipping a collection with the range of
22508`0.._.len()`."##,
22509        default_severity: Severity::Allow,
22510        warn_since: None,
22511        deny_since: None,
22512    },
22513    Lint {
22514        label: "clippy::rc_buffer",
22515        description: r##"Checks for `Rc<T>` and `Arc<T>` when `T` is a mutable buffer type such as `String` or `Vec`."##,
22516        default_severity: Severity::Allow,
22517        warn_since: None,
22518        deny_since: None,
22519    },
22520    Lint {
22521        label: "clippy::rc_clone_in_vec_init",
22522        description: r##"Checks for reference-counted pointers (`Arc`, `Rc`, `rc::Weak`, and `sync::Weak`)
22523in `vec![elem; len]`"##,
22524        default_severity: Severity::Allow,
22525        warn_since: None,
22526        deny_since: None,
22527    },
22528    Lint {
22529        label: "clippy::rc_mutex",
22530        description: r##"Checks for `Rc<Mutex<T>>`."##,
22531        default_severity: Severity::Allow,
22532        warn_since: None,
22533        deny_since: None,
22534    },
22535    Lint {
22536        label: "clippy::read_line_without_trim",
22537        description: r##"Looks for calls to [`Stdin::read_line`] to read a line from the standard input
22538into a string, then later attempting to use that string for an operation that will never
22539work for strings with a trailing newline character in it (e.g. parsing into a `i32`)."##,
22540        default_severity: Severity::Allow,
22541        warn_since: None,
22542        deny_since: None,
22543    },
22544    Lint {
22545        label: "clippy::read_zero_byte_vec",
22546        description: r##"This lint catches reads into a zero-length `Vec`.
22547Especially in the case of a call to `with_capacity`, this lint warns that read
22548gets the number of bytes from the `Vec`'s length, not its capacity."##,
22549        default_severity: Severity::Allow,
22550        warn_since: None,
22551        deny_since: None,
22552    },
22553    Lint {
22554        label: "clippy::readonly_write_lock",
22555        description: r##"Looks for calls to `RwLock::write` where the lock is only used for reading."##,
22556        default_severity: Severity::Allow,
22557        warn_since: None,
22558        deny_since: None,
22559    },
22560    Lint {
22561        label: "clippy::recursive_format_impl",
22562        description: r##"Checks for format trait implementations (e.g. `Display`) with a recursive call to itself
22563which uses `self` as a parameter.
22564This is typically done indirectly with the `write!` macro or with `to_string()`."##,
22565        default_severity: Severity::Allow,
22566        warn_since: None,
22567        deny_since: None,
22568    },
22569    Lint {
22570        label: "clippy::redundant_allocation",
22571        description: r##"Checks for usage of redundant allocations anywhere in the code."##,
22572        default_severity: Severity::Allow,
22573        warn_since: None,
22574        deny_since: None,
22575    },
22576    Lint {
22577        label: "clippy::redundant_as_str",
22578        description: r##"Checks for usage of `as_str()` on a `String` chained with a method available on the `String` itself."##,
22579        default_severity: Severity::Allow,
22580        warn_since: None,
22581        deny_since: None,
22582    },
22583    Lint {
22584        label: "clippy::redundant_async_block",
22585        description: r##"Checks for `async` block that only returns `await` on a future."##,
22586        default_severity: Severity::Allow,
22587        warn_since: None,
22588        deny_since: None,
22589    },
22590    Lint {
22591        label: "clippy::redundant_at_rest_pattern",
22592        description: r##"Checks for `[all @ ..]` patterns."##,
22593        default_severity: Severity::Allow,
22594        warn_since: None,
22595        deny_since: None,
22596    },
22597    Lint {
22598        label: "clippy::redundant_clone",
22599        description: r##"Checks for a redundant `clone()` (and its relatives) which clones an owned
22600value that is going to be dropped without further use."##,
22601        default_severity: Severity::Allow,
22602        warn_since: None,
22603        deny_since: None,
22604    },
22605    Lint {
22606        label: "clippy::redundant_closure",
22607        description: r##"Checks for closures which just call another function where
22608the function can be called directly. `unsafe` functions, calls where types
22609get adjusted or where the callee is marked `#[track_caller]` are ignored."##,
22610        default_severity: Severity::Allow,
22611        warn_since: None,
22612        deny_since: None,
22613    },
22614    Lint {
22615        label: "clippy::redundant_closure_call",
22616        description: r##"Detects closures called in the same expression where they
22617are defined."##,
22618        default_severity: Severity::Allow,
22619        warn_since: None,
22620        deny_since: None,
22621    },
22622    Lint {
22623        label: "clippy::redundant_closure_for_method_calls",
22624        description: r##"Checks for closures which only invoke a method on the closure
22625argument and can be replaced by referencing the method directly."##,
22626        default_severity: Severity::Allow,
22627        warn_since: None,
22628        deny_since: None,
22629    },
22630    Lint {
22631        label: "clippy::redundant_comparisons",
22632        description: r##"Checks for ineffective double comparisons against constants."##,
22633        default_severity: Severity::Allow,
22634        warn_since: None,
22635        deny_since: None,
22636    },
22637    Lint {
22638        label: "clippy::redundant_else",
22639        description: r##"Checks for `else` blocks that can be removed without changing semantics."##,
22640        default_severity: Severity::Allow,
22641        warn_since: None,
22642        deny_since: None,
22643    },
22644    Lint {
22645        label: "clippy::redundant_feature_names",
22646        description: r##"Checks for feature names with prefix `use-`, `with-` or suffix `-support`"##,
22647        default_severity: Severity::Allow,
22648        warn_since: None,
22649        deny_since: None,
22650    },
22651    Lint {
22652        label: "clippy::redundant_field_names",
22653        description: r##"Checks for fields in struct literals where shorthands
22654could be used."##,
22655        default_severity: Severity::Allow,
22656        warn_since: None,
22657        deny_since: None,
22658    },
22659    Lint {
22660        label: "clippy::redundant_guards",
22661        description: r##"Checks for unnecessary guards in match expressions."##,
22662        default_severity: Severity::Allow,
22663        warn_since: None,
22664        deny_since: None,
22665    },
22666    Lint {
22667        label: "clippy::redundant_locals",
22668        description: r##"Checks for redundant redefinitions of local bindings."##,
22669        default_severity: Severity::Allow,
22670        warn_since: None,
22671        deny_since: None,
22672    },
22673    Lint {
22674        label: "clippy::redundant_pattern",
22675        description: r##"Checks for patterns in the form `name @ _`."##,
22676        default_severity: Severity::Allow,
22677        warn_since: None,
22678        deny_since: None,
22679    },
22680    Lint {
22681        label: "clippy::redundant_pattern_matching",
22682        description: r##"Lint for redundant pattern matching over `Result`, `Option`,
22683`std::task::Poll`, `std::net::IpAddr` or `bool`s"##,
22684        default_severity: Severity::Allow,
22685        warn_since: None,
22686        deny_since: None,
22687    },
22688    Lint {
22689        label: "clippy::redundant_pub_crate",
22690        description: r##"Checks for items declared `pub(crate)` that are not crate visible because they
22691are inside a private module."##,
22692        default_severity: Severity::Allow,
22693        warn_since: None,
22694        deny_since: None,
22695    },
22696    Lint {
22697        label: "clippy::redundant_slicing",
22698        description: r##"Checks for redundant slicing expressions which use the full range, and
22699do not change the type."##,
22700        default_severity: Severity::Allow,
22701        warn_since: None,
22702        deny_since: None,
22703    },
22704    Lint {
22705        label: "clippy::redundant_static_lifetimes",
22706        description: r##"Checks for constants and statics with an explicit `'static` lifetime."##,
22707        default_severity: Severity::Allow,
22708        warn_since: None,
22709        deny_since: None,
22710    },
22711    Lint {
22712        label: "clippy::redundant_type_annotations",
22713        description: r##"Warns about needless / redundant type annotations."##,
22714        default_severity: Severity::Allow,
22715        warn_since: None,
22716        deny_since: None,
22717    },
22718    Lint {
22719        label: "clippy::ref_as_ptr",
22720        description: r##"Checks for casts of references to pointer using `as`
22721and suggests `std::ptr::from_ref` and `std::ptr::from_mut` instead."##,
22722        default_severity: Severity::Allow,
22723        warn_since: None,
22724        deny_since: None,
22725    },
22726    Lint {
22727        label: "clippy::ref_binding_to_reference",
22728        description: r##"Checks for `ref` bindings which create a reference to a reference."##,
22729        default_severity: Severity::Allow,
22730        warn_since: None,
22731        deny_since: None,
22732    },
22733    Lint {
22734        label: "clippy::ref_option",
22735        description: r##"Warns when a function signature uses `&Option<T>` instead of `Option<&T>`."##,
22736        default_severity: Severity::Allow,
22737        warn_since: None,
22738        deny_since: None,
22739    },
22740    Lint {
22741        label: "clippy::ref_option_ref",
22742        description: r##"Checks for usage of `&Option<&T>`."##,
22743        default_severity: Severity::Allow,
22744        warn_since: None,
22745        deny_since: None,
22746    },
22747    Lint {
22748        label: "clippy::ref_patterns",
22749        description: r##"Checks for usages of the `ref` keyword."##,
22750        default_severity: Severity::Allow,
22751        warn_since: None,
22752        deny_since: None,
22753    },
22754    Lint {
22755        label: "clippy::regex_macro",
22756        description: r##"Nothing. This lint has been deprecated"##,
22757        default_severity: Severity::Allow,
22758        warn_since: None,
22759        deny_since: None,
22760    },
22761    Lint {
22762        label: "clippy::renamed_function_params",
22763        description: r##"Lints when the name of function parameters from trait impl is
22764different than its default implementation."##,
22765        default_severity: Severity::Allow,
22766        warn_since: None,
22767        deny_since: None,
22768    },
22769    Lint {
22770        label: "clippy::repeat_once",
22771        description: r##"Checks for usage of `.repeat(1)` and suggest the following method for each types.
22772- `.to_string()` for `str`
22773- `.clone()` for `String`
22774- `.to_vec()` for `slice`
22775
22776The lint will evaluate constant expressions and values as arguments of `.repeat(..)` and emit a message if
22777they are equivalent to `1`. (Related discussion in [rust-clippy#7306](https://github.com/rust-lang/rust-clippy/issues/7306))"##,
22778        default_severity: Severity::Allow,
22779        warn_since: None,
22780        deny_since: None,
22781    },
22782    Lint {
22783        label: "clippy::repeat_vec_with_capacity",
22784        description: r##"Looks for patterns such as `vec![Vec::with_capacity(x); n]` or `iter::repeat(Vec::with_capacity(x))`."##,
22785        default_severity: Severity::Allow,
22786        warn_since: None,
22787        deny_since: None,
22788    },
22789    Lint {
22790        label: "clippy::replace_consts",
22791        description: r##"Nothing. This lint has been deprecated"##,
22792        default_severity: Severity::Allow,
22793        warn_since: None,
22794        deny_since: None,
22795    },
22796    Lint {
22797        label: "clippy::reserve_after_initialization",
22798        description: r##"Informs the user about a more concise way to create a vector with a known capacity."##,
22799        default_severity: Severity::Allow,
22800        warn_since: None,
22801        deny_since: None,
22802    },
22803    Lint {
22804        label: "clippy::rest_pat_in_fully_bound_structs",
22805        description: r##"Checks for unnecessary '..' pattern binding on struct when all fields are explicitly matched."##,
22806        default_severity: Severity::Allow,
22807        warn_since: None,
22808        deny_since: None,
22809    },
22810    Lint {
22811        label: "clippy::result_filter_map",
22812        description: r##"Checks for iterators of `Result`s using `.filter(Result::is_ok).map(Result::unwrap)` that may
22813be replaced with a `.flatten()` call."##,
22814        default_severity: Severity::Allow,
22815        warn_since: None,
22816        deny_since: None,
22817    },
22818    Lint {
22819        label: "clippy::result_large_err",
22820        description: r##"Checks for functions that return `Result` with an unusually large
22821`Err`-variant."##,
22822        default_severity: Severity::Allow,
22823        warn_since: None,
22824        deny_since: None,
22825    },
22826    Lint {
22827        label: "clippy::result_map_or_into_option",
22828        description: r##"Checks for usage of `_.map_or(None, Some)`."##,
22829        default_severity: Severity::Allow,
22830        warn_since: None,
22831        deny_since: None,
22832    },
22833    Lint {
22834        label: "clippy::result_map_unit_fn",
22835        description: r##"Checks for usage of `result.map(f)` where f is a function
22836or closure that returns the unit type `()`."##,
22837        default_severity: Severity::Allow,
22838        warn_since: None,
22839        deny_since: None,
22840    },
22841    Lint {
22842        label: "clippy::result_unit_err",
22843        description: r##"Checks for public functions that return a `Result`
22844with an `Err` type of `()`. It suggests using a custom type that
22845implements `std::error::Error`."##,
22846        default_severity: Severity::Allow,
22847        warn_since: None,
22848        deny_since: None,
22849    },
22850    Lint {
22851        label: "clippy::return_self_not_must_use",
22852        description: r##"This lint warns when a method returning `Self` doesn't have the `#[must_use]` attribute."##,
22853        default_severity: Severity::Allow,
22854        warn_since: None,
22855        deny_since: None,
22856    },
22857    Lint {
22858        label: "clippy::reversed_empty_ranges",
22859        description: r##"Checks for range expressions `x..y` where both `x` and `y`
22860are constant and `x` is greater to `y`. Also triggers if `x` is equal to `y` when they are conditions to a `for` loop."##,
22861        default_severity: Severity::Allow,
22862        warn_since: None,
22863        deny_since: None,
22864    },
22865    Lint {
22866        label: "clippy::same_functions_in_if_condition",
22867        description: r##"Checks for consecutive `if`s with the same function call."##,
22868        default_severity: Severity::Allow,
22869        warn_since: None,
22870        deny_since: None,
22871    },
22872    Lint {
22873        label: "clippy::same_item_push",
22874        description: r##"Checks whether a for loop is being used to push a constant
22875value into a Vec."##,
22876        default_severity: Severity::Allow,
22877        warn_since: None,
22878        deny_since: None,
22879    },
22880    Lint {
22881        label: "clippy::same_name_method",
22882        description: r##"It lints if a struct has two methods with the same name:
22883one from a trait, another not from a trait."##,
22884        default_severity: Severity::Allow,
22885        warn_since: None,
22886        deny_since: None,
22887    },
22888    Lint {
22889        label: "clippy::search_is_some",
22890        description: r##"Checks for an iterator or string search (such as `find()`,
22891`position()`, or `rposition()`) followed by a call to `is_some()` or `is_none()`."##,
22892        default_severity: Severity::Allow,
22893        warn_since: None,
22894        deny_since: None,
22895    },
22896    Lint {
22897        label: "clippy::seek_from_current",
22898        description: r##"Checks if the `seek` method of the `Seek` trait is called with `SeekFrom::Current(0)`,
22899and if it is, suggests using `stream_position` instead."##,
22900        default_severity: Severity::Allow,
22901        warn_since: None,
22902        deny_since: None,
22903    },
22904    Lint {
22905        label: "clippy::seek_to_start_instead_of_rewind",
22906        description: r##"Checks for jumps to the start of a stream that implements `Seek`
22907and uses the `seek` method providing `Start` as parameter."##,
22908        default_severity: Severity::Allow,
22909        warn_since: None,
22910        deny_since: None,
22911    },
22912    Lint {
22913        label: "clippy::self_assignment",
22914        description: r##"Checks for explicit self-assignments."##,
22915        default_severity: Severity::Allow,
22916        warn_since: None,
22917        deny_since: None,
22918    },
22919    Lint {
22920        label: "clippy::self_named_constructors",
22921        description: r##"Warns when constructors have the same name as their types."##,
22922        default_severity: Severity::Allow,
22923        warn_since: None,
22924        deny_since: None,
22925    },
22926    Lint {
22927        label: "clippy::self_named_module_files",
22928        description: r##"Checks that module layout uses only `mod.rs` files."##,
22929        default_severity: Severity::Allow,
22930        warn_since: None,
22931        deny_since: None,
22932    },
22933    Lint {
22934        label: "clippy::semicolon_if_nothing_returned",
22935        description: r##"Looks for blocks of expressions and fires if the last expression returns
22936`()` but is not followed by a semicolon."##,
22937        default_severity: Severity::Allow,
22938        warn_since: None,
22939        deny_since: None,
22940    },
22941    Lint {
22942        label: "clippy::semicolon_inside_block",
22943        description: r##"Suggests moving the semicolon after a block to the inside of the block, after its last
22944expression."##,
22945        default_severity: Severity::Allow,
22946        warn_since: None,
22947        deny_since: None,
22948    },
22949    Lint {
22950        label: "clippy::semicolon_outside_block",
22951        description: r##"Suggests moving the semicolon from a block's final expression outside of the block."##,
22952        default_severity: Severity::Allow,
22953        warn_since: None,
22954        deny_since: None,
22955    },
22956    Lint {
22957        label: "clippy::separated_literal_suffix",
22958        description: r##"Warns if literal suffixes are separated by an underscore.
22959To enforce separated literal suffix style,
22960see the `unseparated_literal_suffix` lint."##,
22961        default_severity: Severity::Allow,
22962        warn_since: None,
22963        deny_since: None,
22964    },
22965    Lint {
22966        label: "clippy::serde_api_misuse",
22967        description: r##"Checks for misuses of the serde API."##,
22968        default_severity: Severity::Allow,
22969        warn_since: None,
22970        deny_since: None,
22971    },
22972    Lint {
22973        label: "clippy::set_contains_or_insert",
22974        description: r##"Checks for usage of `contains` to see if a value is not present
22975in a set like `HashSet` or `BTreeSet`, followed by an `insert`."##,
22976        default_severity: Severity::Allow,
22977        warn_since: None,
22978        deny_since: None,
22979    },
22980    Lint {
22981        label: "clippy::shadow_reuse",
22982        description: r##"Checks for bindings that shadow other bindings already in
22983scope, while reusing the original value."##,
22984        default_severity: Severity::Allow,
22985        warn_since: None,
22986        deny_since: None,
22987    },
22988    Lint {
22989        label: "clippy::shadow_same",
22990        description: r##"Checks for bindings that shadow other bindings already in
22991scope, while just changing reference level or mutability."##,
22992        default_severity: Severity::Allow,
22993        warn_since: None,
22994        deny_since: None,
22995    },
22996    Lint {
22997        label: "clippy::shadow_unrelated",
22998        description: r##"Checks for bindings that shadow other bindings already in
22999scope, either without an initialization or with one that does not even use
23000the original value."##,
23001        default_severity: Severity::Allow,
23002        warn_since: None,
23003        deny_since: None,
23004    },
23005    Lint {
23006        label: "clippy::short_circuit_statement",
23007        description: r##"Checks for the use of short circuit boolean conditions as
23008a
23009statement."##,
23010        default_severity: Severity::Allow,
23011        warn_since: None,
23012        deny_since: None,
23013    },
23014    Lint {
23015        label: "clippy::should_assert_eq",
23016        description: r##"Nothing. This lint has been deprecated"##,
23017        default_severity: Severity::Allow,
23018        warn_since: None,
23019        deny_since: None,
23020    },
23021    Lint {
23022        label: "clippy::should_implement_trait",
23023        description: r##"Checks for methods that should live in a trait
23024implementation of a `std` trait (see [llogiq's blog
23025post](http://llogiq.github.io/2015/07/30/traits.html) for further
23026information) instead of an inherent implementation."##,
23027        default_severity: Severity::Allow,
23028        warn_since: None,
23029        deny_since: None,
23030    },
23031    Lint {
23032        label: "clippy::should_panic_without_expect",
23033        description: r##"Checks for `#[should_panic]` attributes without specifying the expected panic message."##,
23034        default_severity: Severity::Allow,
23035        warn_since: None,
23036        deny_since: None,
23037    },
23038    Lint {
23039        label: "clippy::significant_drop_in_scrutinee",
23040        description: r##"Checks for temporaries returned from function calls in a match scrutinee that have the
23041`clippy::has_significant_drop` attribute."##,
23042        default_severity: Severity::Allow,
23043        warn_since: None,
23044        deny_since: None,
23045    },
23046    Lint {
23047        label: "clippy::significant_drop_tightening",
23048        description: r##"Searches for elements marked with `#[clippy::has_significant_drop]` that could be early
23049dropped but are in fact dropped at the end of their scopes. In other words, enforces the
23050tightening of their possible lifetimes."##,
23051        default_severity: Severity::Allow,
23052        warn_since: None,
23053        deny_since: None,
23054    },
23055    Lint {
23056        label: "clippy::similar_names",
23057        description: r##"Checks for names that are very similar and thus confusing.
23058
23059Note: this lint looks for similar names throughout each
23060scope. To allow it, you need to allow it on the scope
23061level, not on the name that is reported."##,
23062        default_severity: Severity::Allow,
23063        warn_since: None,
23064        deny_since: None,
23065    },
23066    Lint {
23067        label: "clippy::single_call_fn",
23068        description: r##"Checks for functions that are only used once. Does not lint tests."##,
23069        default_severity: Severity::Allow,
23070        warn_since: None,
23071        deny_since: None,
23072    },
23073    Lint {
23074        label: "clippy::single_char_add_str",
23075        description: r##"Warns when using `push_str`/`insert_str` with a single-character string literal
23076where `push`/`insert` with a `char` would work fine."##,
23077        default_severity: Severity::Allow,
23078        warn_since: None,
23079        deny_since: None,
23080    },
23081    Lint {
23082        label: "clippy::single_char_lifetime_names",
23083        description: r##"Checks for lifetimes with names which are one character
23084long."##,
23085        default_severity: Severity::Allow,
23086        warn_since: None,
23087        deny_since: None,
23088    },
23089    Lint {
23090        label: "clippy::single_char_pattern",
23091        description: r##"Checks for string methods that receive a single-character
23092`str` as an argument, e.g., `_.split(x)`."##,
23093        default_severity: Severity::Allow,
23094        warn_since: None,
23095        deny_since: None,
23096    },
23097    Lint {
23098        label: "clippy::single_component_path_imports",
23099        description: r##"Checking for imports with single component use path."##,
23100        default_severity: Severity::Allow,
23101        warn_since: None,
23102        deny_since: None,
23103    },
23104    Lint {
23105        label: "clippy::single_element_loop",
23106        description: r##"Checks whether a for loop has a single element."##,
23107        default_severity: Severity::Allow,
23108        warn_since: None,
23109        deny_since: None,
23110    },
23111    Lint {
23112        label: "clippy::single_match",
23113        description: r##"Checks for matches with a single arm where an `if let`
23114will usually suffice.
23115
23116This intentionally does not lint if there are comments
23117inside of the other arm, so as to allow the user to document
23118why having another explicit pattern with an empty body is necessary,
23119or because the comments need to be preserved for other reasons."##,
23120        default_severity: Severity::Allow,
23121        warn_since: None,
23122        deny_since: None,
23123    },
23124    Lint {
23125        label: "clippy::single_match_else",
23126        description: r##"Checks for matches with two arms where an `if let else` will
23127usually suffice."##,
23128        default_severity: Severity::Allow,
23129        warn_since: None,
23130        deny_since: None,
23131    },
23132    Lint {
23133        label: "clippy::single_range_in_vec_init",
23134        description: r##"Checks for `Vec` or array initializations that contain only one range."##,
23135        default_severity: Severity::Allow,
23136        warn_since: None,
23137        deny_since: None,
23138    },
23139    Lint {
23140        label: "clippy::size_of_in_element_count",
23141        description: r##"Detects expressions where
23142`size_of::<T>` or `size_of_val::<T>` is used as a
23143count of elements of type `T`"##,
23144        default_severity: Severity::Allow,
23145        warn_since: None,
23146        deny_since: None,
23147    },
23148    Lint {
23149        label: "clippy::size_of_ref",
23150        description: r##"Checks for calls to `std::mem::size_of_val()` where the argument is
23151a reference to a reference."##,
23152        default_severity: Severity::Allow,
23153        warn_since: None,
23154        deny_since: None,
23155    },
23156    Lint {
23157        label: "clippy::skip_while_next",
23158        description: r##"Checks for usage of `_.skip_while(condition).next()`."##,
23159        default_severity: Severity::Allow,
23160        warn_since: None,
23161        deny_since: None,
23162    },
23163    Lint {
23164        label: "clippy::slow_vector_initialization",
23165        description: r##"Checks slow zero-filled vector initialization"##,
23166        default_severity: Severity::Allow,
23167        warn_since: None,
23168        deny_since: None,
23169    },
23170    Lint {
23171        label: "clippy::stable_sort_primitive",
23172        description: r##"When sorting primitive values (integers, bools, chars, as well
23173as arrays, slices, and tuples of such items), it is typically better to
23174use an unstable sort than a stable sort."##,
23175        default_severity: Severity::Allow,
23176        warn_since: None,
23177        deny_since: None,
23178    },
23179    Lint {
23180        label: "clippy::std_instead_of_alloc",
23181        description: r##"Finds items imported through `std` when available through `alloc`."##,
23182        default_severity: Severity::Allow,
23183        warn_since: None,
23184        deny_since: None,
23185    },
23186    Lint {
23187        label: "clippy::std_instead_of_core",
23188        description: r##"Finds items imported through `std` when available through `core`."##,
23189        default_severity: Severity::Allow,
23190        warn_since: None,
23191        deny_since: None,
23192    },
23193    Lint {
23194        label: "clippy::str_split_at_newline",
23195        description: r##"Checks for usages of `str.trim().split(\
23196)` and `str.trim().split(\\
23197)`."##,
23198        default_severity: Severity::Allow,
23199        warn_since: None,
23200        deny_since: None,
23201    },
23202    Lint {
23203        label: "clippy::str_to_string",
23204        description: r##"This lint checks for `.to_string()` method calls on values of type `&str`."##,
23205        default_severity: Severity::Allow,
23206        warn_since: None,
23207        deny_since: None,
23208    },
23209    Lint {
23210        label: "clippy::string_add",
23211        description: r##"Checks for all instances of `x + _` where `x` is of type
23212`String`, but only if [`string_add_assign`](#string_add_assign) does *not*
23213match."##,
23214        default_severity: Severity::Allow,
23215        warn_since: None,
23216        deny_since: None,
23217    },
23218    Lint {
23219        label: "clippy::string_add_assign",
23220        description: r##"Checks for string appends of the form `x = x + y` (without
23221`let`!)."##,
23222        default_severity: Severity::Allow,
23223        warn_since: None,
23224        deny_since: None,
23225    },
23226    Lint {
23227        label: "clippy::string_extend_chars",
23228        description: r##"Checks for the use of `.extend(s.chars())` where s is a
23229`&str` or `String`."##,
23230        default_severity: Severity::Allow,
23231        warn_since: None,
23232        deny_since: None,
23233    },
23234    Lint {
23235        label: "clippy::string_from_utf8_as_bytes",
23236        description: r##"Check if the string is transformed to byte array and casted back to string."##,
23237        default_severity: Severity::Allow,
23238        warn_since: None,
23239        deny_since: None,
23240    },
23241    Lint {
23242        label: "clippy::string_lit_as_bytes",
23243        description: r##"Checks for the `as_bytes` method called on string literals
23244that contain only ASCII characters."##,
23245        default_severity: Severity::Allow,
23246        warn_since: None,
23247        deny_since: None,
23248    },
23249    Lint {
23250        label: "clippy::string_lit_chars_any",
23251        description: r##"Checks for `<string_lit>.chars().any(|i| i == c)`."##,
23252        default_severity: Severity::Allow,
23253        warn_since: None,
23254        deny_since: None,
23255    },
23256    Lint {
23257        label: "clippy::string_slice",
23258        description: r##"Checks for slice operations on strings"##,
23259        default_severity: Severity::Allow,
23260        warn_since: None,
23261        deny_since: None,
23262    },
23263    Lint {
23264        label: "clippy::string_to_string",
23265        description: r##"This lint checks for `.to_string()` method calls on values of type `String`."##,
23266        default_severity: Severity::Allow,
23267        warn_since: None,
23268        deny_since: None,
23269    },
23270    Lint {
23271        label: "clippy::strlen_on_c_strings",
23272        description: r##"Checks for usage of `libc::strlen` on a `CString` or `CStr` value,
23273and suggest calling `as_bytes().len()` or `to_bytes().len()` respectively instead."##,
23274        default_severity: Severity::Allow,
23275        warn_since: None,
23276        deny_since: None,
23277    },
23278    Lint {
23279        label: "clippy::struct_excessive_bools",
23280        description: r##"Checks for excessive
23281use of bools in structs."##,
23282        default_severity: Severity::Allow,
23283        warn_since: None,
23284        deny_since: None,
23285    },
23286    Lint {
23287        label: "clippy::struct_field_names",
23288        description: r##"Detects struct fields that are prefixed or suffixed
23289by the same characters or the name of the struct itself."##,
23290        default_severity: Severity::Allow,
23291        warn_since: None,
23292        deny_since: None,
23293    },
23294    Lint {
23295        label: "clippy::suboptimal_flops",
23296        description: r##"Looks for floating-point expressions that
23297can be expressed using built-in methods to improve both
23298accuracy and performance."##,
23299        default_severity: Severity::Allow,
23300        warn_since: None,
23301        deny_since: None,
23302    },
23303    Lint {
23304        label: "clippy::suspicious_arithmetic_impl",
23305        description: r##"Lints for suspicious operations in impls of arithmetic operators, e.g.
23306subtracting elements in an Add impl."##,
23307        default_severity: Severity::Allow,
23308        warn_since: None,
23309        deny_since: None,
23310    },
23311    Lint {
23312        label: "clippy::suspicious_assignment_formatting",
23313        description: r##"Checks for usage of the non-existent `=*`, `=!` and `=-`
23314operators."##,
23315        default_severity: Severity::Allow,
23316        warn_since: None,
23317        deny_since: None,
23318    },
23319    Lint {
23320        label: "clippy::suspicious_command_arg_space",
23321        description: r##"Checks for `Command::arg()` invocations that look like they
23322should be multiple arguments instead, such as `arg(-t ext2)`."##,
23323        default_severity: Severity::Allow,
23324        warn_since: None,
23325        deny_since: None,
23326    },
23327    Lint {
23328        label: "clippy::suspicious_doc_comments",
23329        description: r##"Detects the use of outer doc comments (`///`, `/**`) followed by a bang (`!`): `///!`"##,
23330        default_severity: Severity::Allow,
23331        warn_since: None,
23332        deny_since: None,
23333    },
23334    Lint {
23335        label: "clippy::suspicious_else_formatting",
23336        description: r##"Checks for formatting of `else`. It lints if the `else`
23337is followed immediately by a newline or the `else` seems to be missing."##,
23338        default_severity: Severity::Allow,
23339        warn_since: None,
23340        deny_since: None,
23341    },
23342    Lint {
23343        label: "clippy::suspicious_map",
23344        description: r##"Checks for calls to `map` followed by a `count`."##,
23345        default_severity: Severity::Allow,
23346        warn_since: None,
23347        deny_since: None,
23348    },
23349    Lint {
23350        label: "clippy::suspicious_op_assign_impl",
23351        description: r##"Lints for suspicious operations in impls of OpAssign, e.g.
23352subtracting elements in an AddAssign impl."##,
23353        default_severity: Severity::Allow,
23354        warn_since: None,
23355        deny_since: None,
23356    },
23357    Lint {
23358        label: "clippy::suspicious_open_options",
23359        description: r##"Checks for the suspicious use of `OpenOptions::create()`
23360without an explicit `OpenOptions::truncate()`."##,
23361        default_severity: Severity::Allow,
23362        warn_since: None,
23363        deny_since: None,
23364    },
23365    Lint {
23366        label: "clippy::suspicious_operation_groupings",
23367        description: r##"Checks for unlikely usages of binary operators that are almost
23368certainly typos and/or copy/paste errors, given the other usages
23369of binary operators nearby."##,
23370        default_severity: Severity::Allow,
23371        warn_since: None,
23372        deny_since: None,
23373    },
23374    Lint {
23375        label: "clippy::suspicious_splitn",
23376        description: r##"Checks for calls to [`splitn`]
23377(https://doc.rust-lang.org/std/primitive.str.html#method.splitn) and
23378related functions with either zero or one splits."##,
23379        default_severity: Severity::Allow,
23380        warn_since: None,
23381        deny_since: None,
23382    },
23383    Lint {
23384        label: "clippy::suspicious_to_owned",
23385        description: r##"Checks for the usage of `_.to_owned()`, on a `Cow<'_, _>`."##,
23386        default_severity: Severity::Allow,
23387        warn_since: None,
23388        deny_since: None,
23389    },
23390    Lint {
23391        label: "clippy::suspicious_unary_op_formatting",
23392        description: r##"Checks the formatting of a unary operator on the right hand side
23393of a binary operator. It lints if there is no space between the binary and unary operators,
23394but there is a space between the unary and its operand."##,
23395        default_severity: Severity::Allow,
23396        warn_since: None,
23397        deny_since: None,
23398    },
23399    Lint {
23400        label: "clippy::suspicious_xor_used_as_pow",
23401        description: r##"Warns for a Bitwise XOR (`^`) operator being probably confused as a powering. It will not trigger if any of the numbers are not in decimal."##,
23402        default_severity: Severity::Allow,
23403        warn_since: None,
23404        deny_since: None,
23405    },
23406    Lint {
23407        label: "clippy::swap_ptr_to_ref",
23408        description: r##"Checks for calls to `core::mem::swap` where either parameter is derived from a pointer"##,
23409        default_severity: Severity::Allow,
23410        warn_since: None,
23411        deny_since: None,
23412    },
23413    Lint {
23414        label: "clippy::tabs_in_doc_comments",
23415        description: r##"Checks doc comments for usage of tab characters."##,
23416        default_severity: Severity::Allow,
23417        warn_since: None,
23418        deny_since: None,
23419    },
23420    Lint {
23421        label: "clippy::temporary_assignment",
23422        description: r##"Checks for construction of a structure or tuple just to
23423assign a value in it."##,
23424        default_severity: Severity::Allow,
23425        warn_since: None,
23426        deny_since: None,
23427    },
23428    Lint {
23429        label: "clippy::test_attr_in_doctest",
23430        description: r##"Checks for `#[test]` in doctests unless they are marked with
23431either `ignore`, `no_run` or `compile_fail`."##,
23432        default_severity: Severity::Allow,
23433        warn_since: None,
23434        deny_since: None,
23435    },
23436    Lint {
23437        label: "clippy::tests_outside_test_module",
23438        description: r##"Triggers when a testing function (marked with the `#[test]` attribute) isn't inside a testing module
23439(marked with `#[cfg(test)]`)."##,
23440        default_severity: Severity::Allow,
23441        warn_since: None,
23442        deny_since: None,
23443    },
23444    Lint {
23445        label: "clippy::to_digit_is_some",
23446        description: r##"Checks for `.to_digit(..).is_some()` on `char`s."##,
23447        default_severity: Severity::Allow,
23448        warn_since: None,
23449        deny_since: None,
23450    },
23451    Lint {
23452        label: "clippy::to_string_in_format_args",
23453        description: r##"Checks for [`ToString::to_string`](https://doc.rust-lang.org/std/string/trait.ToString.html#tymethod.to_string)
23454applied to a type that implements [`Display`](https://doc.rust-lang.org/std/fmt/trait.Display.html)
23455in a macro that does formatting."##,
23456        default_severity: Severity::Allow,
23457        warn_since: None,
23458        deny_since: None,
23459    },
23460    Lint {
23461        label: "clippy::to_string_trait_impl",
23462        description: r##"Checks for direct implementations of `ToString`."##,
23463        default_severity: Severity::Allow,
23464        warn_since: None,
23465        deny_since: None,
23466    },
23467    Lint {
23468        label: "clippy::todo",
23469        description: r##"Checks for usage of `todo!`."##,
23470        default_severity: Severity::Allow,
23471        warn_since: None,
23472        deny_since: None,
23473    },
23474    Lint {
23475        label: "clippy::too_long_first_doc_paragraph",
23476        description: r##"Checks if the first line in the documentation of items listed in module page is too long."##,
23477        default_severity: Severity::Allow,
23478        warn_since: None,
23479        deny_since: None,
23480    },
23481    Lint {
23482        label: "clippy::too_many_arguments",
23483        description: r##"Checks for functions with too many parameters."##,
23484        default_severity: Severity::Allow,
23485        warn_since: None,
23486        deny_since: None,
23487    },
23488    Lint {
23489        label: "clippy::too_many_lines",
23490        description: r##"Checks for functions with a large amount of lines."##,
23491        default_severity: Severity::Allow,
23492        warn_since: None,
23493        deny_since: None,
23494    },
23495    Lint {
23496        label: "clippy::toplevel_ref_arg",
23497        description: r##"Checks for function arguments and let bindings denoted as
23498`ref`."##,
23499        default_severity: Severity::Allow,
23500        warn_since: None,
23501        deny_since: None,
23502    },
23503    Lint {
23504        label: "clippy::trailing_empty_array",
23505        description: r##"Displays a warning when a struct with a trailing zero-sized array is declared without a `repr` attribute."##,
23506        default_severity: Severity::Allow,
23507        warn_since: None,
23508        deny_since: None,
23509    },
23510    Lint {
23511        label: "clippy::trait_duplication_in_bounds",
23512        description: r##"Checks for cases where generics or trait objects are being used and multiple
23513syntax specifications for trait bounds are used simultaneously."##,
23514        default_severity: Severity::Allow,
23515        warn_since: None,
23516        deny_since: None,
23517    },
23518    Lint {
23519        label: "clippy::transmute_bytes_to_str",
23520        description: r##"Checks for transmutes from a `&[u8]` to a `&str`."##,
23521        default_severity: Severity::Allow,
23522        warn_since: None,
23523        deny_since: None,
23524    },
23525    Lint {
23526        label: "clippy::transmute_float_to_int",
23527        description: r##"Checks for transmutes from a float to an integer."##,
23528        default_severity: Severity::Allow,
23529        warn_since: None,
23530        deny_since: None,
23531    },
23532    Lint {
23533        label: "clippy::transmute_int_to_bool",
23534        description: r##"Checks for transmutes from an integer to a `bool`."##,
23535        default_severity: Severity::Allow,
23536        warn_since: None,
23537        deny_since: None,
23538    },
23539    Lint {
23540        label: "clippy::transmute_int_to_char",
23541        description: r##"Checks for transmutes from an integer to a `char`."##,
23542        default_severity: Severity::Allow,
23543        warn_since: None,
23544        deny_since: None,
23545    },
23546    Lint {
23547        label: "clippy::transmute_int_to_float",
23548        description: r##"Checks for transmutes from an integer to a float."##,
23549        default_severity: Severity::Allow,
23550        warn_since: None,
23551        deny_since: None,
23552    },
23553    Lint {
23554        label: "clippy::transmute_int_to_non_zero",
23555        description: r##"Checks for transmutes from `T` to `NonZero<T>`, and suggests the `new_unchecked`
23556method instead."##,
23557        default_severity: Severity::Allow,
23558        warn_since: None,
23559        deny_since: None,
23560    },
23561    Lint {
23562        label: "clippy::transmute_null_to_fn",
23563        description: r##"Checks for null function pointer creation through transmute."##,
23564        default_severity: Severity::Allow,
23565        warn_since: None,
23566        deny_since: None,
23567    },
23568    Lint {
23569        label: "clippy::transmute_num_to_bytes",
23570        description: r##"Checks for transmutes from a number to an array of `u8`"##,
23571        default_severity: Severity::Allow,
23572        warn_since: None,
23573        deny_since: None,
23574    },
23575    Lint {
23576        label: "clippy::transmute_ptr_to_ptr",
23577        description: r##"Checks for transmutes from a pointer to a pointer, or
23578from a reference to a reference."##,
23579        default_severity: Severity::Allow,
23580        warn_since: None,
23581        deny_since: None,
23582    },
23583    Lint {
23584        label: "clippy::transmute_ptr_to_ref",
23585        description: r##"Checks for transmutes from a pointer to a reference."##,
23586        default_severity: Severity::Allow,
23587        warn_since: None,
23588        deny_since: None,
23589    },
23590    Lint {
23591        label: "clippy::transmute_undefined_repr",
23592        description: r##"Checks for transmutes between types which do not have a representation defined relative to
23593each other."##,
23594        default_severity: Severity::Allow,
23595        warn_since: None,
23596        deny_since: None,
23597    },
23598    Lint {
23599        label: "clippy::transmutes_expressible_as_ptr_casts",
23600        description: r##"Checks for transmutes that could be a pointer cast."##,
23601        default_severity: Severity::Allow,
23602        warn_since: None,
23603        deny_since: None,
23604    },
23605    Lint {
23606        label: "clippy::transmuting_null",
23607        description: r##"Checks for transmute calls which would receive a null pointer."##,
23608        default_severity: Severity::Allow,
23609        warn_since: None,
23610        deny_since: None,
23611    },
23612    Lint {
23613        label: "clippy::trim_split_whitespace",
23614        description: r##"Warns about calling `str::trim` (or variants) before `str::split_whitespace`."##,
23615        default_severity: Severity::Allow,
23616        warn_since: None,
23617        deny_since: None,
23618    },
23619    Lint {
23620        label: "clippy::trivial_regex",
23621        description: r##"Checks for trivial [regex](https://crates.io/crates/regex)
23622creation (with `Regex::new`, `RegexBuilder::new`, or `RegexSet::new`)."##,
23623        default_severity: Severity::Allow,
23624        warn_since: None,
23625        deny_since: None,
23626    },
23627    Lint {
23628        label: "clippy::trivially_copy_pass_by_ref",
23629        description: r##"Checks for functions taking arguments by reference, where
23630the argument type is `Copy` and small enough to be more efficient to always
23631pass by value."##,
23632        default_severity: Severity::Allow,
23633        warn_since: None,
23634        deny_since: None,
23635    },
23636    Lint {
23637        label: "clippy::try_err",
23638        description: r##"Checks for usage of `Err(x)?`."##,
23639        default_severity: Severity::Allow,
23640        warn_since: None,
23641        deny_since: None,
23642    },
23643    Lint {
23644        label: "clippy::tuple_array_conversions",
23645        description: r##"Checks for tuple<=>array conversions that are not done with `.into()`."##,
23646        default_severity: Severity::Allow,
23647        warn_since: None,
23648        deny_since: None,
23649    },
23650    Lint {
23651        label: "clippy::type_complexity",
23652        description: r##"Checks for types used in structs, parameters and `let`
23653declarations above a certain complexity threshold."##,
23654        default_severity: Severity::Allow,
23655        warn_since: None,
23656        deny_since: None,
23657    },
23658    Lint {
23659        label: "clippy::type_id_on_box",
23660        description: r##"Looks for calls to `.type_id()` on a `Box<dyn _>`."##,
23661        default_severity: Severity::Allow,
23662        warn_since: None,
23663        deny_since: None,
23664    },
23665    Lint {
23666        label: "clippy::type_repetition_in_bounds",
23667        description: r##"This lint warns about unnecessary type repetitions in trait bounds"##,
23668        default_severity: Severity::Allow,
23669        warn_since: None,
23670        deny_since: None,
23671    },
23672    Lint {
23673        label: "clippy::unchecked_duration_subtraction",
23674        description: r##"Lints subtraction between an `Instant` and a `Duration`."##,
23675        default_severity: Severity::Allow,
23676        warn_since: None,
23677        deny_since: None,
23678    },
23679    Lint {
23680        label: "clippy::unconditional_recursion",
23681        description: r##"Checks that there isn't an infinite recursion in trait
23682implementations."##,
23683        default_severity: Severity::Allow,
23684        warn_since: None,
23685        deny_since: None,
23686    },
23687    Lint {
23688        label: "clippy::undocumented_unsafe_blocks",
23689        description: r##"Checks for `unsafe` blocks and impls without a `// SAFETY: ` comment
23690explaining why the unsafe operations performed inside
23691the block are safe.
23692
23693Note the comment must appear on the line(s) preceding the unsafe block
23694with nothing appearing in between. The following is ok:
23695```rust
23696foo(
23697    // SAFETY:
23698    // This is a valid safety comment
23699    unsafe { *x }
23700)
23701```
23702But neither of these are:
23703```rust
23704// SAFETY:
23705// This is not a valid safety comment
23706foo(
23707    /* SAFETY: Neither is this */ unsafe { *x },
23708);
23709```"##,
23710        default_severity: Severity::Allow,
23711        warn_since: None,
23712        deny_since: None,
23713    },
23714    Lint {
23715        label: "clippy::unicode_not_nfc",
23716        description: r##"Checks for string literals that contain Unicode in a form
23717that is not equal to its
23718[NFC-recomposition](http://www.unicode.org/reports/tr15/#Norm_Forms)."##,
23719        default_severity: Severity::Allow,
23720        warn_since: None,
23721        deny_since: None,
23722    },
23723    Lint {
23724        label: "clippy::unimplemented",
23725        description: r##"Checks for usage of `unimplemented!`."##,
23726        default_severity: Severity::Allow,
23727        warn_since: None,
23728        deny_since: None,
23729    },
23730    Lint {
23731        label: "clippy::uninhabited_references",
23732        description: r##"It detects references to uninhabited types, such as `!` and
23733warns when those are either dereferenced or returned from a function."##,
23734        default_severity: Severity::Allow,
23735        warn_since: None,
23736        deny_since: None,
23737    },
23738    Lint {
23739        label: "clippy::uninit_assumed_init",
23740        description: r##"Checks for `MaybeUninit::uninit().assume_init()`."##,
23741        default_severity: Severity::Allow,
23742        warn_since: None,
23743        deny_since: None,
23744    },
23745    Lint {
23746        label: "clippy::uninit_vec",
23747        description: r##"Checks for `set_len()` call that creates `Vec` with uninitialized elements.
23748This is commonly caused by calling `set_len()` right after allocating or
23749reserving a buffer with `new()`, `default()`, `with_capacity()`, or `reserve()`."##,
23750        default_severity: Severity::Allow,
23751        warn_since: None,
23752        deny_since: None,
23753    },
23754    Lint {
23755        label: "clippy::uninlined_format_args",
23756        description: r##"Detect when a variable is not inlined in a format string,
23757and suggests to inline it."##,
23758        default_severity: Severity::Allow,
23759        warn_since: None,
23760        deny_since: None,
23761    },
23762    Lint {
23763        label: "clippy::unit_arg",
23764        description: r##"Checks for passing a unit value as an argument to a function without using a
23765unit literal (`()`)."##,
23766        default_severity: Severity::Allow,
23767        warn_since: None,
23768        deny_since: None,
23769    },
23770    Lint {
23771        label: "clippy::unit_cmp",
23772        description: r##"Checks for comparisons to unit. This includes all binary
23773comparisons (like `==` and `<`) and asserts."##,
23774        default_severity: Severity::Allow,
23775        warn_since: None,
23776        deny_since: None,
23777    },
23778    Lint {
23779        label: "clippy::unit_hash",
23780        description: r##"Detects `().hash(_)`."##,
23781        default_severity: Severity::Allow,
23782        warn_since: None,
23783        deny_since: None,
23784    },
23785    Lint {
23786        label: "clippy::unit_return_expecting_ord",
23787        description: r##"Checks for functions that expect closures of type
23788Fn(...) -> Ord where the implemented closure returns the unit type.
23789The lint also suggests to remove the semi-colon at the end of the statement if present."##,
23790        default_severity: Severity::Allow,
23791        warn_since: None,
23792        deny_since: None,
23793    },
23794    Lint {
23795        label: "clippy::unnecessary_box_returns",
23796        description: r##"Checks for a return type containing a `Box<T>` where `T` implements `Sized`
23797
23798The lint ignores `Box<T>` where `T` is larger than `unnecessary_box_size`,
23799as returning a large `T` directly may be detrimental to performance."##,
23800        default_severity: Severity::Allow,
23801        warn_since: None,
23802        deny_since: None,
23803    },
23804    Lint {
23805        label: "clippy::unnecessary_cast",
23806        description: r##"Checks for casts to the same type, casts of int literals to integer
23807types, casts of float literals to float types, and casts between raw
23808pointers that don't change type or constness."##,
23809        default_severity: Severity::Allow,
23810        warn_since: None,
23811        deny_since: None,
23812    },
23813    Lint {
23814        label: "clippy::unnecessary_clippy_cfg",
23815        description: r##"Checks for `#[cfg_attr(clippy, allow(clippy::lint))]`
23816and suggests to replace it with `#[allow(clippy::lint)]`."##,
23817        default_severity: Severity::Allow,
23818        warn_since: None,
23819        deny_since: None,
23820    },
23821    Lint {
23822        label: "clippy::unnecessary_fallible_conversions",
23823        description: r##"Checks for calls to `TryInto::try_into` and `TryFrom::try_from` when their infallible counterparts
23824could be used."##,
23825        default_severity: Severity::Allow,
23826        warn_since: None,
23827        deny_since: None,
23828    },
23829    Lint {
23830        label: "clippy::unnecessary_filter_map",
23831        description: r##"Checks for `filter_map` calls that could be replaced by `filter` or `map`.
23832More specifically it checks if the closure provided is only performing one of the
23833filter or map operations and suggests the appropriate option."##,
23834        default_severity: Severity::Allow,
23835        warn_since: None,
23836        deny_since: None,
23837    },
23838    Lint {
23839        label: "clippy::unnecessary_find_map",
23840        description: r##"Checks for `find_map` calls that could be replaced by `find` or `map`. More
23841specifically it checks if the closure provided is only performing one of the
23842find or map operations and suggests the appropriate option."##,
23843        default_severity: Severity::Allow,
23844        warn_since: None,
23845        deny_since: None,
23846    },
23847    Lint {
23848        label: "clippy::unnecessary_first_then_check",
23849        description: r##"Checks the usage of `.first().is_some()` or `.first().is_none()` to check if a slice is
23850empty."##,
23851        default_severity: Severity::Allow,
23852        warn_since: None,
23853        deny_since: None,
23854    },
23855    Lint {
23856        label: "clippy::unnecessary_fold",
23857        description: r##"Checks for usage of `fold` when a more succinct alternative exists.
23858Specifically, this checks for `fold`s which could be replaced by `any`, `all`,
23859`sum` or `product`."##,
23860        default_severity: Severity::Allow,
23861        warn_since: None,
23862        deny_since: None,
23863    },
23864    Lint {
23865        label: "clippy::unnecessary_get_then_check",
23866        description: r##"Checks the usage of `.get().is_some()` or `.get().is_none()` on std map types."##,
23867        default_severity: Severity::Allow,
23868        warn_since: None,
23869        deny_since: None,
23870    },
23871    Lint {
23872        label: "clippy::unnecessary_join",
23873        description: r##"Checks for usage of `.collect::<Vec<String>>().join()` on iterators."##,
23874        default_severity: Severity::Allow,
23875        warn_since: None,
23876        deny_since: None,
23877    },
23878    Lint {
23879        label: "clippy::unnecessary_lazy_evaluations",
23880        description: r##"As the counterpart to `or_fun_call`, this lint looks for unnecessary
23881lazily evaluated closures on `Option` and `Result`.
23882
23883This lint suggests changing the following functions, when eager evaluation results in
23884simpler code:
23885 - `unwrap_or_else` to `unwrap_or`
23886 - `and_then` to `and`
23887 - `or_else` to `or`
23888 - `get_or_insert_with` to `get_or_insert`
23889 - `ok_or_else` to `ok_or`
23890 - `then` to `then_some` (for msrv >= 1.62.0)"##,
23891        default_severity: Severity::Allow,
23892        warn_since: None,
23893        deny_since: None,
23894    },
23895    Lint {
23896        label: "clippy::unnecessary_literal_unwrap",
23897        description: r##"Checks for `.unwrap()` related calls on `Result`s and `Option`s that are constructed."##,
23898        default_severity: Severity::Allow,
23899        warn_since: None,
23900        deny_since: None,
23901    },
23902    Lint {
23903        label: "clippy::unnecessary_map_on_constructor",
23904        description: r##"Suggests removing the use of a `map()` (or `map_err()`) method when an `Option` or `Result`
23905is being constructed."##,
23906        default_severity: Severity::Allow,
23907        warn_since: None,
23908        deny_since: None,
23909    },
23910    Lint {
23911        label: "clippy::unnecessary_min_or_max",
23912        description: r##"Checks for unnecessary calls to `min()` or `max()` in the following cases
23913- Either both side is constant
23914- One side is clearly larger than the other, like i32::MIN and an i32 variable"##,
23915        default_severity: Severity::Allow,
23916        warn_since: None,
23917        deny_since: None,
23918    },
23919    Lint {
23920        label: "clippy::unnecessary_mut_passed",
23921        description: r##"Detects passing a mutable reference to a function that only
23922requires an immutable reference."##,
23923        default_severity: Severity::Allow,
23924        warn_since: None,
23925        deny_since: None,
23926    },
23927    Lint {
23928        label: "clippy::unnecessary_operation",
23929        description: r##"Checks for expression statements that can be reduced to a
23930sub-expression."##,
23931        default_severity: Severity::Allow,
23932        warn_since: None,
23933        deny_since: None,
23934    },
23935    Lint {
23936        label: "clippy::unnecessary_owned_empty_strings",
23937        description: r##"Detects cases of owned empty strings being passed as an argument to a function expecting `&str`"##,
23938        default_severity: Severity::Allow,
23939        warn_since: None,
23940        deny_since: None,
23941    },
23942    Lint {
23943        label: "clippy::unnecessary_result_map_or_else",
23944        description: r##"Checks for usage of `.map_or_else()` map closure for `Result` type."##,
23945        default_severity: Severity::Allow,
23946        warn_since: None,
23947        deny_since: None,
23948    },
23949    Lint {
23950        label: "clippy::unnecessary_safety_comment",
23951        description: r##"Checks for `// SAFETY: ` comments on safe code."##,
23952        default_severity: Severity::Allow,
23953        warn_since: None,
23954        deny_since: None,
23955    },
23956    Lint {
23957        label: "clippy::unnecessary_safety_doc",
23958        description: r##"Checks for the doc comments of publicly visible
23959safe functions and traits and warns if there is a `# Safety` section."##,
23960        default_severity: Severity::Allow,
23961        warn_since: None,
23962        deny_since: None,
23963    },
23964    Lint {
23965        label: "clippy::unnecessary_self_imports",
23966        description: r##"Checks for imports ending in `::{self}`."##,
23967        default_severity: Severity::Allow,
23968        warn_since: None,
23969        deny_since: None,
23970    },
23971    Lint {
23972        label: "clippy::unnecessary_sort_by",
23973        description: r##"Checks for usage of `Vec::sort_by` passing in a closure
23974which compares the two arguments, either directly or indirectly."##,
23975        default_severity: Severity::Allow,
23976        warn_since: None,
23977        deny_since: None,
23978    },
23979    Lint {
23980        label: "clippy::unnecessary_struct_initialization",
23981        description: r##"Checks for initialization of an identical `struct` from another instance
23982of the type, either by copying a base without setting any field or by
23983moving all fields individually."##,
23984        default_severity: Severity::Allow,
23985        warn_since: None,
23986        deny_since: None,
23987    },
23988    Lint {
23989        label: "clippy::unnecessary_to_owned",
23990        description: r##"Checks for unnecessary calls to [`ToOwned::to_owned`](https://doc.rust-lang.org/std/borrow/trait.ToOwned.html#tymethod.to_owned)
23991and other `to_owned`-like functions."##,
23992        default_severity: Severity::Allow,
23993        warn_since: None,
23994        deny_since: None,
23995    },
23996    Lint {
23997        label: "clippy::unnecessary_unwrap",
23998        description: r##"Checks for calls of `unwrap[_err]()` that cannot fail."##,
23999        default_severity: Severity::Allow,
24000        warn_since: None,
24001        deny_since: None,
24002    },
24003    Lint {
24004        label: "clippy::unnecessary_wraps",
24005        description: r##"Checks for private functions that only return `Ok` or `Some`."##,
24006        default_severity: Severity::Allow,
24007        warn_since: None,
24008        deny_since: None,
24009    },
24010    Lint {
24011        label: "clippy::unneeded_field_pattern",
24012        description: r##"Checks for structure field patterns bound to wildcards."##,
24013        default_severity: Severity::Allow,
24014        warn_since: None,
24015        deny_since: None,
24016    },
24017    Lint {
24018        label: "clippy::unneeded_wildcard_pattern",
24019        description: r##"Checks for tuple patterns with a wildcard
24020pattern (`_`) is next to a rest pattern (`..`).
24021
24022_NOTE_: While `_, ..` means there is at least one element left, `..`
24023means there are 0 or more elements left. This can make a difference
24024when refactoring, but shouldn't result in errors in the refactored code,
24025since the wildcard pattern isn't used anyway."##,
24026        default_severity: Severity::Allow,
24027        warn_since: None,
24028        deny_since: None,
24029    },
24030    Lint {
24031        label: "clippy::unnested_or_patterns",
24032        description: r##"Checks for unnested or-patterns, e.g., `Some(0) | Some(2)` and
24033suggests replacing the pattern with a nested one, `Some(0 | 2)`.
24034
24035Another way to think of this is that it rewrites patterns in
24036*disjunctive normal form (DNF)* into *conjunctive normal form (CNF)*."##,
24037        default_severity: Severity::Allow,
24038        warn_since: None,
24039        deny_since: None,
24040    },
24041    Lint {
24042        label: "clippy::unreachable",
24043        description: r##"Checks for usage of `unreachable!`."##,
24044        default_severity: Severity::Allow,
24045        warn_since: None,
24046        deny_since: None,
24047    },
24048    Lint {
24049        label: "clippy::unreadable_literal",
24050        description: r##"Warns if a long integral or floating-point constant does
24051not contain underscores."##,
24052        default_severity: Severity::Allow,
24053        warn_since: None,
24054        deny_since: None,
24055    },
24056    Lint {
24057        label: "clippy::unsafe_derive_deserialize",
24058        description: r##"Checks for deriving `serde::Deserialize` on a type that
24059has methods using `unsafe`."##,
24060        default_severity: Severity::Allow,
24061        warn_since: None,
24062        deny_since: None,
24063    },
24064    Lint {
24065        label: "clippy::unsafe_removed_from_name",
24066        description: r##"Checks for imports that remove unsafe from an item's
24067name."##,
24068        default_severity: Severity::Allow,
24069        warn_since: None,
24070        deny_since: None,
24071    },
24072    Lint {
24073        label: "clippy::unsafe_vector_initialization",
24074        description: r##"Nothing. This lint has been deprecated"##,
24075        default_severity: Severity::Allow,
24076        warn_since: None,
24077        deny_since: None,
24078    },
24079    Lint {
24080        label: "clippy::unseparated_literal_suffix",
24081        description: r##"Warns if literal suffixes are not separated by an
24082underscore.
24083To enforce unseparated literal suffix style,
24084see the `separated_literal_suffix` lint."##,
24085        default_severity: Severity::Allow,
24086        warn_since: None,
24087        deny_since: None,
24088    },
24089    Lint {
24090        label: "clippy::unsound_collection_transmute",
24091        description: r##"Checks for transmutes between collections whose
24092types have different ABI, size or alignment."##,
24093        default_severity: Severity::Allow,
24094        warn_since: None,
24095        deny_since: None,
24096    },
24097    Lint {
24098        label: "clippy::unstable_as_mut_slice",
24099        description: r##"Nothing. This lint has been deprecated"##,
24100        default_severity: Severity::Allow,
24101        warn_since: None,
24102        deny_since: None,
24103    },
24104    Lint {
24105        label: "clippy::unstable_as_slice",
24106        description: r##"Nothing. This lint has been deprecated"##,
24107        default_severity: Severity::Allow,
24108        warn_since: None,
24109        deny_since: None,
24110    },
24111    Lint {
24112        label: "clippy::unused_async",
24113        description: r##"Checks for functions that are declared `async` but have no `.await`s inside of them."##,
24114        default_severity: Severity::Allow,
24115        warn_since: None,
24116        deny_since: None,
24117    },
24118    Lint {
24119        label: "clippy::unused_collect",
24120        description: r##"Nothing. This lint has been deprecated"##,
24121        default_severity: Severity::Allow,
24122        warn_since: None,
24123        deny_since: None,
24124    },
24125    Lint {
24126        label: "clippy::unused_enumerate_index",
24127        description: r##"Checks for uses of the `enumerate` method where the index is unused (`_`)"##,
24128        default_severity: Severity::Allow,
24129        warn_since: None,
24130        deny_since: None,
24131    },
24132    Lint {
24133        label: "clippy::unused_format_specs",
24134        description: r##"Detects [formatting parameters] that have no effect on the output of
24135`format!()`, `println!()` or similar macros."##,
24136        default_severity: Severity::Allow,
24137        warn_since: None,
24138        deny_since: None,
24139    },
24140    Lint {
24141        label: "clippy::unused_io_amount",
24142        description: r##"Checks for unused written/read amount."##,
24143        default_severity: Severity::Allow,
24144        warn_since: None,
24145        deny_since: None,
24146    },
24147    Lint {
24148        label: "clippy::unused_peekable",
24149        description: r##"Checks for the creation of a `peekable` iterator that is never `.peek()`ed"##,
24150        default_severity: Severity::Allow,
24151        warn_since: None,
24152        deny_since: None,
24153    },
24154    Lint {
24155        label: "clippy::unused_result_ok",
24156        description: r##"Checks for calls to `Result::ok()` without using the returned `Option`."##,
24157        default_severity: Severity::Allow,
24158        warn_since: None,
24159        deny_since: None,
24160    },
24161    Lint {
24162        label: "clippy::unused_rounding",
24163        description: r##"Detects cases where a whole-number literal float is being rounded, using
24164the `floor`, `ceil`, or `round` methods."##,
24165        default_severity: Severity::Allow,
24166        warn_since: None,
24167        deny_since: None,
24168    },
24169    Lint {
24170        label: "clippy::unused_self",
24171        description: r##"Checks methods that contain a `self` argument but don't use it"##,
24172        default_severity: Severity::Allow,
24173        warn_since: None,
24174        deny_since: None,
24175    },
24176    Lint {
24177        label: "clippy::unused_trait_names",
24178        description: r##"Checks for `use Trait` where the Trait is only used for its methods and not referenced by a path directly."##,
24179        default_severity: Severity::Allow,
24180        warn_since: None,
24181        deny_since: None,
24182    },
24183    Lint {
24184        label: "clippy::unused_unit",
24185        description: r##"Checks for unit (`()`) expressions that can be removed."##,
24186        default_severity: Severity::Allow,
24187        warn_since: None,
24188        deny_since: None,
24189    },
24190    Lint {
24191        label: "clippy::unusual_byte_groupings",
24192        description: r##"Warns if hexadecimal or binary literals are not grouped
24193by nibble or byte."##,
24194        default_severity: Severity::Allow,
24195        warn_since: None,
24196        deny_since: None,
24197    },
24198    Lint {
24199        label: "clippy::unwrap_in_result",
24200        description: r##"Checks for functions of type `Result` that contain `expect()` or `unwrap()`"##,
24201        default_severity: Severity::Allow,
24202        warn_since: None,
24203        deny_since: None,
24204    },
24205    Lint {
24206        label: "clippy::unwrap_or_default",
24207        description: r##"Checks for usages of the following functions with an argument that constructs a default value
24208(e.g., `Default::default` or `String::new`):
24209- `unwrap_or`
24210- `unwrap_or_else`
24211- `or_insert`
24212- `or_insert_with`"##,
24213        default_severity: Severity::Allow,
24214        warn_since: None,
24215        deny_since: None,
24216    },
24217    Lint {
24218        label: "clippy::unwrap_used",
24219        description: r##"Checks for `.unwrap()` or `.unwrap_err()` calls on `Result`s and `.unwrap()` call on `Option`s."##,
24220        default_severity: Severity::Allow,
24221        warn_since: None,
24222        deny_since: None,
24223    },
24224    Lint {
24225        label: "clippy::upper_case_acronyms",
24226        description: r##"Checks for fully capitalized names and optionally names containing a capitalized acronym."##,
24227        default_severity: Severity::Allow,
24228        warn_since: None,
24229        deny_since: None,
24230    },
24231    Lint {
24232        label: "clippy::use_debug",
24233        description: r##"Checks for usage of `Debug` formatting. The purpose of this
24234lint is to catch debugging remnants."##,
24235        default_severity: Severity::Allow,
24236        warn_since: None,
24237        deny_since: None,
24238    },
24239    Lint {
24240        label: "clippy::use_self",
24241        description: r##"Checks for unnecessary repetition of structure name when a
24242replacement with `Self` is applicable."##,
24243        default_severity: Severity::Allow,
24244        warn_since: None,
24245        deny_since: None,
24246    },
24247    Lint {
24248        label: "clippy::used_underscore_binding",
24249        description: r##"Checks for the use of bindings with a single leading
24250underscore."##,
24251        default_severity: Severity::Allow,
24252        warn_since: None,
24253        deny_since: None,
24254    },
24255    Lint {
24256        label: "clippy::used_underscore_items",
24257        description: r##"Checks for the use of item with a single leading
24258underscore."##,
24259        default_severity: Severity::Allow,
24260        warn_since: None,
24261        deny_since: None,
24262    },
24263    Lint {
24264        label: "clippy::useless_asref",
24265        description: r##"Checks for usage of `.as_ref()` or `.as_mut()` where the
24266types before and after the call are the same."##,
24267        default_severity: Severity::Allow,
24268        warn_since: None,
24269        deny_since: None,
24270    },
24271    Lint {
24272        label: "clippy::useless_attribute",
24273        description: r##"Checks for `extern crate` and `use` items annotated with
24274lint attributes.
24275
24276This lint permits lint attributes for lints emitted on the items themself.
24277For `use` items these lints are:
24278* ambiguous_glob_reexports
24279* dead_code
24280* deprecated
24281* hidden_glob_reexports
24282* unreachable_pub
24283* unused
24284* unused_braces
24285* unused_import_braces
24286* clippy::disallowed_types
24287* clippy::enum_glob_use
24288* clippy::macro_use_imports
24289* clippy::module_name_repetitions
24290* clippy::redundant_pub_crate
24291* clippy::single_component_path_imports
24292* clippy::unsafe_removed_from_name
24293* clippy::wildcard_imports
24294
24295For `extern crate` items these lints are:
24296* `unused_imports` on items with `#[macro_use]`"##,
24297        default_severity: Severity::Allow,
24298        warn_since: None,
24299        deny_since: None,
24300    },
24301    Lint {
24302        label: "clippy::useless_conversion",
24303        description: r##"Checks for `Into`, `TryInto`, `From`, `TryFrom`, or `IntoIter` calls
24304which uselessly convert to the same type."##,
24305        default_severity: Severity::Allow,
24306        warn_since: None,
24307        deny_since: None,
24308    },
24309    Lint {
24310        label: "clippy::useless_format",
24311        description: r##"Checks for the use of `format!(string literal with no
24312argument)` and `format!({}, foo)` where `foo` is a string."##,
24313        default_severity: Severity::Allow,
24314        warn_since: None,
24315        deny_since: None,
24316    },
24317    Lint {
24318        label: "clippy::useless_let_if_seq",
24319        description: r##"Checks for variable declarations immediately followed by a
24320conditional affectation."##,
24321        default_severity: Severity::Allow,
24322        warn_since: None,
24323        deny_since: None,
24324    },
24325    Lint {
24326        label: "clippy::useless_transmute",
24327        description: r##"Checks for transmutes to the original type of the object
24328and transmutes that could be a cast."##,
24329        default_severity: Severity::Allow,
24330        warn_since: None,
24331        deny_since: None,
24332    },
24333    Lint {
24334        label: "clippy::useless_vec",
24335        description: r##"Checks for usage of `vec![..]` when using `[..]` would
24336be possible."##,
24337        default_severity: Severity::Allow,
24338        warn_since: None,
24339        deny_since: None,
24340    },
24341    Lint {
24342        label: "clippy::vec_box",
24343        description: r##"Checks for usage of `Vec<Box<T>>` where T: Sized anywhere in the code.
24344Check the [Box documentation](https://doc.rust-lang.org/std/boxed/index.html) for more information."##,
24345        default_severity: Severity::Allow,
24346        warn_since: None,
24347        deny_since: None,
24348    },
24349    Lint {
24350        label: "clippy::vec_init_then_push",
24351        description: r##"Checks for calls to `push` immediately after creating a new `Vec`.
24352
24353If the `Vec` is created using `with_capacity` this will only lint if the capacity is a
24354constant and the number of pushes is greater than or equal to the initial capacity.
24355
24356If the `Vec` is extended after the initial sequence of pushes and it was default initialized
24357then this will only lint after there were at least four pushes. This number may change in
24358the future."##,
24359        default_severity: Severity::Allow,
24360        warn_since: None,
24361        deny_since: None,
24362    },
24363    Lint {
24364        label: "clippy::vec_resize_to_zero",
24365        description: r##"Finds occurrences of `Vec::resize(0, an_int)`"##,
24366        default_severity: Severity::Allow,
24367        warn_since: None,
24368        deny_since: None,
24369    },
24370    Lint {
24371        label: "clippy::verbose_bit_mask",
24372        description: r##"Checks for bit masks that can be replaced by a call
24373to `trailing_zeros`"##,
24374        default_severity: Severity::Allow,
24375        warn_since: None,
24376        deny_since: None,
24377    },
24378    Lint {
24379        label: "clippy::verbose_file_reads",
24380        description: r##"Checks for usage of File::read_to_end and File::read_to_string."##,
24381        default_severity: Severity::Allow,
24382        warn_since: None,
24383        deny_since: None,
24384    },
24385    Lint {
24386        label: "clippy::waker_clone_wake",
24387        description: r##"Checks for usage of `waker.clone().wake()`"##,
24388        default_severity: Severity::Allow,
24389        warn_since: None,
24390        deny_since: None,
24391    },
24392    Lint {
24393        label: "clippy::while_float",
24394        description: r##"Checks for while loops comparing floating point values."##,
24395        default_severity: Severity::Allow,
24396        warn_since: None,
24397        deny_since: None,
24398    },
24399    Lint {
24400        label: "clippy::while_immutable_condition",
24401        description: r##"Checks whether variables used within while loop condition
24402can be (and are) mutated in the body."##,
24403        default_severity: Severity::Allow,
24404        warn_since: None,
24405        deny_since: None,
24406    },
24407    Lint {
24408        label: "clippy::while_let_loop",
24409        description: r##"Detects `loop + match` combinations that are easier
24410written as a `while let` loop."##,
24411        default_severity: Severity::Allow,
24412        warn_since: None,
24413        deny_since: None,
24414    },
24415    Lint {
24416        label: "clippy::while_let_on_iterator",
24417        description: r##"Checks for `while let` expressions on iterators."##,
24418        default_severity: Severity::Allow,
24419        warn_since: None,
24420        deny_since: None,
24421    },
24422    Lint {
24423        label: "clippy::wildcard_dependencies",
24424        description: r##"Checks for wildcard dependencies in the `Cargo.toml`."##,
24425        default_severity: Severity::Allow,
24426        warn_since: None,
24427        deny_since: None,
24428    },
24429    Lint {
24430        label: "clippy::wildcard_enum_match_arm",
24431        description: r##"Checks for wildcard enum matches using `_`."##,
24432        default_severity: Severity::Allow,
24433        warn_since: None,
24434        deny_since: None,
24435    },
24436    Lint {
24437        label: "clippy::wildcard_imports",
24438        description: r##"Checks for wildcard imports `use _::*`."##,
24439        default_severity: Severity::Allow,
24440        warn_since: None,
24441        deny_since: None,
24442    },
24443    Lint {
24444        label: "clippy::wildcard_in_or_patterns",
24445        description: r##"Checks for wildcard pattern used with others patterns in same match arm."##,
24446        default_severity: Severity::Allow,
24447        warn_since: None,
24448        deny_since: None,
24449    },
24450    Lint {
24451        label: "clippy::write_literal",
24452        description: r##"This lint warns about the use of literals as `write!`/`writeln!` args."##,
24453        default_severity: Severity::Allow,
24454        warn_since: None,
24455        deny_since: None,
24456    },
24457    Lint {
24458        label: "clippy::write_with_newline",
24459        description: r##"This lint warns when you use `write!()` with a format
24460string that
24461ends in a newline."##,
24462        default_severity: Severity::Allow,
24463        warn_since: None,
24464        deny_since: None,
24465    },
24466    Lint {
24467        label: "clippy::writeln_empty_string",
24468        description: r##"This lint warns when you use `writeln!(buf, )` to
24469print a newline."##,
24470        default_severity: Severity::Allow,
24471        warn_since: None,
24472        deny_since: None,
24473    },
24474    Lint {
24475        label: "clippy::wrong_pub_self_convention",
24476        description: r##"Nothing. This lint has been deprecated"##,
24477        default_severity: Severity::Allow,
24478        warn_since: None,
24479        deny_since: None,
24480    },
24481    Lint {
24482        label: "clippy::wrong_self_convention",
24483        description: r##"Checks for methods with certain name prefixes or suffixes, and which
24484do not adhere to standard conventions regarding how `self` is taken.
24485The actual rules are:
24486
24487|Prefix |Postfix     |`self` taken                   | `self` type  |
24488|-------|------------|-------------------------------|--------------|
24489|`as_`  | none       |`&self` or `&mut self`         | any          |
24490|`from_`| none       | none                          | any          |
24491|`into_`| none       |`self`                         | any          |
24492|`is_`  | none       |`&mut self` or `&self` or none | any          |
24493|`to_`  | `_mut`     |`&mut self`                    | any          |
24494|`to_`  | not `_mut` |`self`                         | `Copy`       |
24495|`to_`  | not `_mut` |`&self`                        | not `Copy`   |
24496
24497Note: Clippy doesn't trigger methods with `to_` prefix in:
24498- Traits definition.
24499Clippy can not tell if a type that implements a trait is `Copy` or not.
24500- Traits implementation, when `&self` is taken.
24501The method signature is controlled by the trait and often `&self` is required for all types that implement the trait
24502(see e.g. the `std::string::ToString` trait).
24503
24504Clippy allows `Pin<&Self>` and `Pin<&mut Self>` if `&self` and `&mut self` is required.
24505
24506Please find more info here:
24507https://rust-lang.github.io/api-guidelines/naming.html#ad-hoc-conversions-follow-as_-to_-into_-conventions-c-conv"##,
24508        default_severity: Severity::Allow,
24509        warn_since: None,
24510        deny_since: None,
24511    },
24512    Lint {
24513        label: "clippy::wrong_transmute",
24514        description: r##"Checks for transmutes that can't ever be correct on any
24515architecture."##,
24516        default_severity: Severity::Allow,
24517        warn_since: None,
24518        deny_since: None,
24519    },
24520    Lint {
24521        label: "clippy::zero_divided_by_zero",
24522        description: r##"Checks for `0.0 / 0.0`."##,
24523        default_severity: Severity::Allow,
24524        warn_since: None,
24525        deny_since: None,
24526    },
24527    Lint {
24528        label: "clippy::zero_prefixed_literal",
24529        description: r##"Warns if an integral constant literal starts with `0`."##,
24530        default_severity: Severity::Allow,
24531        warn_since: None,
24532        deny_since: None,
24533    },
24534    Lint {
24535        label: "clippy::zero_ptr",
24536        description: r##"Catch casts from `0` to some pointer type"##,
24537        default_severity: Severity::Allow,
24538        warn_since: None,
24539        deny_since: None,
24540    },
24541    Lint {
24542        label: "clippy::zero_repeat_side_effects",
24543        description: r##"Checks for array or vec initializations which call a function or method,
24544but which have a repeat count of zero."##,
24545        default_severity: Severity::Allow,
24546        warn_since: None,
24547        deny_since: None,
24548    },
24549    Lint {
24550        label: "clippy::zero_sized_map_values",
24551        description: r##"Checks for maps with zero-sized value types anywhere in the code."##,
24552        default_severity: Severity::Allow,
24553        warn_since: None,
24554        deny_since: None,
24555    },
24556    Lint {
24557        label: "clippy::zombie_processes",
24558        description: r##"Looks for code that spawns a process but never calls `wait()` on the child."##,
24559        default_severity: Severity::Allow,
24560        warn_since: None,
24561        deny_since: None,
24562    },
24563    Lint {
24564        label: "clippy::zst_offset",
24565        description: r##"Checks for `offset(_)`, `wrapping_`{`add`, `sub`}, etc. on raw pointers to
24566zero-sized types"##,
24567        default_severity: Severity::Allow,
24568        warn_since: None,
24569        deny_since: None,
24570    },
24571];
24572pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
24573    LintGroup {
24574        lint: Lint {
24575            label: "clippy::cargo",
24576            description: r##"lint group for: clippy::cargo_common_metadata, clippy::multiple_crate_versions, clippy::negative_feature_names, clippy::redundant_feature_names, clippy::wildcard_dependencies"##,
24577            default_severity: Severity::Allow,
24578            warn_since: None,
24579            deny_since: None,
24580        },
24581        children: &[
24582            "clippy::cargo_common_metadata",
24583            "clippy::multiple_crate_versions",
24584            "clippy::negative_feature_names",
24585            "clippy::redundant_feature_names",
24586            "clippy::wildcard_dependencies",
24587        ],
24588    },
24589    LintGroup {
24590        lint: Lint {
24591            label: "clippy::complexity",
24592            description: r##"lint group for: clippy::bind_instead_of_map, clippy::bool_comparison, clippy::borrow_deref_ref, clippy::borrowed_box, clippy::bytes_count_to_len, clippy::char_lit_as_u8, clippy::clone_on_copy, clippy::crosspointer_transmute, clippy::default_constructed_unit_structs, clippy::deprecated_cfg_attr, clippy::deref_addrof, clippy::derivable_impls, clippy::diverging_sub_expression, clippy::double_comparisons, clippy::double_parens, clippy::duration_subsec, clippy::excessive_nesting, clippy::explicit_auto_deref, clippy::explicit_counter_loop, clippy::explicit_write, clippy::extra_unused_lifetimes, clippy::extra_unused_type_parameters, clippy::filter_map_identity, clippy::filter_next, clippy::flat_map_identity, clippy::get_last_with_len, clippy::identity_op, clippy::implied_bounds_in_impls, clippy::inspect_for_each, clippy::int_plus_one, clippy::iter_count, clippy::iter_kv_map, clippy::let_with_type_underscore, clippy::manual_c_str_literals, clippy::manual_clamp, clippy::manual_div_ceil, clippy::manual_filter, clippy::manual_filter_map, clippy::manual_find, clippy::manual_find_map, clippy::manual_flatten, clippy::manual_hash_one, clippy::manual_inspect, clippy::manual_is_power_of_two, clippy::manual_main_separator_str, clippy::manual_range_patterns, clippy::manual_rem_euclid, clippy::manual_slice_size_calculation, clippy::manual_split_once, clippy::manual_strip, clippy::manual_swap, clippy::manual_unwrap_or, clippy::map_flatten, clippy::map_identity, clippy::match_as_ref, clippy::match_single_binding, clippy::needless_arbitrary_self_type, clippy::needless_bool, clippy::needless_bool_assign, clippy::needless_borrowed_reference, clippy::needless_if, clippy::needless_lifetimes, clippy::needless_match, clippy::needless_option_as_deref, clippy::needless_option_take, clippy::needless_question_mark, clippy::needless_splitn, clippy::needless_update, clippy::neg_cmp_op_on_partial_ord, clippy::no_effect, clippy::nonminimal_bool, clippy::only_used_in_recursion, clippy::option_as_ref_deref, clippy::option_filter_map, clippy::option_map_unit_fn, clippy::or_then_unwrap, clippy::partialeq_ne_impl, clippy::precedence, clippy::ptr_offset_with_cast, clippy::range_zip_with_len, clippy::redundant_as_str, clippy::redundant_async_block, clippy::redundant_at_rest_pattern, clippy::redundant_closure_call, clippy::redundant_guards, clippy::redundant_slicing, clippy::repeat_once, clippy::reserve_after_initialization, clippy::result_filter_map, clippy::result_map_unit_fn, clippy::search_is_some, clippy::seek_from_current, clippy::seek_to_start_instead_of_rewind, clippy::short_circuit_statement, clippy::single_element_loop, clippy::skip_while_next, clippy::string_from_utf8_as_bytes, clippy::strlen_on_c_strings, clippy::temporary_assignment, clippy::too_many_arguments, clippy::transmute_bytes_to_str, clippy::transmute_float_to_int, clippy::transmute_int_to_bool, clippy::transmute_int_to_char, clippy::transmute_int_to_float, clippy::transmute_int_to_non_zero, clippy::transmute_num_to_bytes, clippy::transmute_ptr_to_ref, clippy::transmutes_expressible_as_ptr_casts, clippy::type_complexity, clippy::unit_arg, clippy::unnecessary_cast, clippy::unnecessary_filter_map, clippy::unnecessary_find_map, clippy::unnecessary_first_then_check, clippy::unnecessary_literal_unwrap, clippy::unnecessary_map_on_constructor, clippy::unnecessary_min_or_max, clippy::unnecessary_operation, clippy::unnecessary_sort_by, clippy::unnecessary_unwrap, clippy::unneeded_wildcard_pattern, clippy::unused_format_specs, clippy::useless_asref, clippy::useless_conversion, clippy::useless_format, clippy::useless_transmute, clippy::vec_box, clippy::while_let_loop, clippy::wildcard_in_or_patterns, clippy::zero_divided_by_zero, clippy::zero_prefixed_literal"##,
24593            default_severity: Severity::Allow,
24594            warn_since: None,
24595            deny_since: None,
24596        },
24597        children: &[
24598            "clippy::bind_instead_of_map",
24599            "clippy::bool_comparison",
24600            "clippy::borrow_deref_ref",
24601            "clippy::borrowed_box",
24602            "clippy::bytes_count_to_len",
24603            "clippy::char_lit_as_u8",
24604            "clippy::clone_on_copy",
24605            "clippy::crosspointer_transmute",
24606            "clippy::default_constructed_unit_structs",
24607            "clippy::deprecated_cfg_attr",
24608            "clippy::deref_addrof",
24609            "clippy::derivable_impls",
24610            "clippy::diverging_sub_expression",
24611            "clippy::double_comparisons",
24612            "clippy::double_parens",
24613            "clippy::duration_subsec",
24614            "clippy::excessive_nesting",
24615            "clippy::explicit_auto_deref",
24616            "clippy::explicit_counter_loop",
24617            "clippy::explicit_write",
24618            "clippy::extra_unused_lifetimes",
24619            "clippy::extra_unused_type_parameters",
24620            "clippy::filter_map_identity",
24621            "clippy::filter_next",
24622            "clippy::flat_map_identity",
24623            "clippy::get_last_with_len",
24624            "clippy::identity_op",
24625            "clippy::implied_bounds_in_impls",
24626            "clippy::inspect_for_each",
24627            "clippy::int_plus_one",
24628            "clippy::iter_count",
24629            "clippy::iter_kv_map",
24630            "clippy::let_with_type_underscore",
24631            "clippy::manual_c_str_literals",
24632            "clippy::manual_clamp",
24633            "clippy::manual_div_ceil",
24634            "clippy::manual_filter",
24635            "clippy::manual_filter_map",
24636            "clippy::manual_find",
24637            "clippy::manual_find_map",
24638            "clippy::manual_flatten",
24639            "clippy::manual_hash_one",
24640            "clippy::manual_inspect",
24641            "clippy::manual_is_power_of_two",
24642            "clippy::manual_main_separator_str",
24643            "clippy::manual_range_patterns",
24644            "clippy::manual_rem_euclid",
24645            "clippy::manual_slice_size_calculation",
24646            "clippy::manual_split_once",
24647            "clippy::manual_strip",
24648            "clippy::manual_swap",
24649            "clippy::manual_unwrap_or",
24650            "clippy::map_flatten",
24651            "clippy::map_identity",
24652            "clippy::match_as_ref",
24653            "clippy::match_single_binding",
24654            "clippy::needless_arbitrary_self_type",
24655            "clippy::needless_bool",
24656            "clippy::needless_bool_assign",
24657            "clippy::needless_borrowed_reference",
24658            "clippy::needless_if",
24659            "clippy::needless_lifetimes",
24660            "clippy::needless_match",
24661            "clippy::needless_option_as_deref",
24662            "clippy::needless_option_take",
24663            "clippy::needless_question_mark",
24664            "clippy::needless_splitn",
24665            "clippy::needless_update",
24666            "clippy::neg_cmp_op_on_partial_ord",
24667            "clippy::no_effect",
24668            "clippy::nonminimal_bool",
24669            "clippy::only_used_in_recursion",
24670            "clippy::option_as_ref_deref",
24671            "clippy::option_filter_map",
24672            "clippy::option_map_unit_fn",
24673            "clippy::or_then_unwrap",
24674            "clippy::partialeq_ne_impl",
24675            "clippy::precedence",
24676            "clippy::ptr_offset_with_cast",
24677            "clippy::range_zip_with_len",
24678            "clippy::redundant_as_str",
24679            "clippy::redundant_async_block",
24680            "clippy::redundant_at_rest_pattern",
24681            "clippy::redundant_closure_call",
24682            "clippy::redundant_guards",
24683            "clippy::redundant_slicing",
24684            "clippy::repeat_once",
24685            "clippy::reserve_after_initialization",
24686            "clippy::result_filter_map",
24687            "clippy::result_map_unit_fn",
24688            "clippy::search_is_some",
24689            "clippy::seek_from_current",
24690            "clippy::seek_to_start_instead_of_rewind",
24691            "clippy::short_circuit_statement",
24692            "clippy::single_element_loop",
24693            "clippy::skip_while_next",
24694            "clippy::string_from_utf8_as_bytes",
24695            "clippy::strlen_on_c_strings",
24696            "clippy::temporary_assignment",
24697            "clippy::too_many_arguments",
24698            "clippy::transmute_bytes_to_str",
24699            "clippy::transmute_float_to_int",
24700            "clippy::transmute_int_to_bool",
24701            "clippy::transmute_int_to_char",
24702            "clippy::transmute_int_to_float",
24703            "clippy::transmute_int_to_non_zero",
24704            "clippy::transmute_num_to_bytes",
24705            "clippy::transmute_ptr_to_ref",
24706            "clippy::transmutes_expressible_as_ptr_casts",
24707            "clippy::type_complexity",
24708            "clippy::unit_arg",
24709            "clippy::unnecessary_cast",
24710            "clippy::unnecessary_filter_map",
24711            "clippy::unnecessary_find_map",
24712            "clippy::unnecessary_first_then_check",
24713            "clippy::unnecessary_literal_unwrap",
24714            "clippy::unnecessary_map_on_constructor",
24715            "clippy::unnecessary_min_or_max",
24716            "clippy::unnecessary_operation",
24717            "clippy::unnecessary_sort_by",
24718            "clippy::unnecessary_unwrap",
24719            "clippy::unneeded_wildcard_pattern",
24720            "clippy::unused_format_specs",
24721            "clippy::useless_asref",
24722            "clippy::useless_conversion",
24723            "clippy::useless_format",
24724            "clippy::useless_transmute",
24725            "clippy::vec_box",
24726            "clippy::while_let_loop",
24727            "clippy::wildcard_in_or_patterns",
24728            "clippy::zero_divided_by_zero",
24729            "clippy::zero_prefixed_literal",
24730        ],
24731    },
24732    LintGroup {
24733        lint: Lint {
24734            label: "clippy::correctness",
24735            description: r##"lint group for: clippy::absurd_extreme_comparisons, clippy::almost_swapped, clippy::approx_constant, clippy::async_yields_async, clippy::bad_bit_mask, clippy::cast_slice_different_sizes, clippy::deprecated_semver, clippy::derive_ord_xor_partial_ord, clippy::derived_hash_with_manual_eq, clippy::eager_transmute, clippy::enum_clike_unportable_variant, clippy::eq_op, clippy::erasing_op, clippy::fn_address_comparisons, clippy::if_let_mutex, clippy::ifs_same_cond, clippy::impl_hash_borrow_with_str_and_bytes, clippy::impossible_comparisons, clippy::ineffective_bit_mask, clippy::infinite_iter, clippy::inherent_to_string_shadow_display, clippy::inline_fn_without_body, clippy::invalid_null_ptr_usage, clippy::invalid_regex, clippy::inverted_saturating_sub, clippy::invisible_characters, clippy::iter_next_loop, clippy::iter_skip_zero, clippy::iterator_step_by_zero, clippy::let_underscore_lock, clippy::lint_groups_priority, clippy::match_str_case_mismatch, clippy::mem_replace_with_uninit, clippy::min_max, clippy::mistyped_literal_suffixes, clippy::modulo_one, clippy::mut_from_ref, clippy::never_loop, clippy::non_octal_unix_permissions, clippy::nonsensical_open_options, clippy::not_unsafe_ptr_arg_deref, clippy::option_env_unwrap, clippy::out_of_bounds_indexing, clippy::overly_complex_bool_expr, clippy::panicking_overflow_checks, clippy::panicking_unwrap, clippy::possible_missing_comma, clippy::read_line_without_trim, clippy::recursive_format_impl, clippy::redundant_comparisons, clippy::redundant_locals, clippy::reversed_empty_ranges, clippy::self_assignment, clippy::serde_api_misuse, clippy::size_of_in_element_count, clippy::suspicious_splitn, clippy::transmute_null_to_fn, clippy::transmuting_null, clippy::uninit_assumed_init, clippy::uninit_vec, clippy::unit_cmp, clippy::unit_hash, clippy::unit_return_expecting_ord, clippy::unsound_collection_transmute, clippy::unused_io_amount, clippy::useless_attribute, clippy::vec_resize_to_zero, clippy::while_immutable_condition, clippy::wrong_transmute, clippy::zst_offset"##,
24736            default_severity: Severity::Allow,
24737            warn_since: None,
24738            deny_since: None,
24739        },
24740        children: &[
24741            "clippy::absurd_extreme_comparisons",
24742            "clippy::almost_swapped",
24743            "clippy::approx_constant",
24744            "clippy::async_yields_async",
24745            "clippy::bad_bit_mask",
24746            "clippy::cast_slice_different_sizes",
24747            "clippy::deprecated_semver",
24748            "clippy::derive_ord_xor_partial_ord",
24749            "clippy::derived_hash_with_manual_eq",
24750            "clippy::eager_transmute",
24751            "clippy::enum_clike_unportable_variant",
24752            "clippy::eq_op",
24753            "clippy::erasing_op",
24754            "clippy::fn_address_comparisons",
24755            "clippy::if_let_mutex",
24756            "clippy::ifs_same_cond",
24757            "clippy::impl_hash_borrow_with_str_and_bytes",
24758            "clippy::impossible_comparisons",
24759            "clippy::ineffective_bit_mask",
24760            "clippy::infinite_iter",
24761            "clippy::inherent_to_string_shadow_display",
24762            "clippy::inline_fn_without_body",
24763            "clippy::invalid_null_ptr_usage",
24764            "clippy::invalid_regex",
24765            "clippy::inverted_saturating_sub",
24766            "clippy::invisible_characters",
24767            "clippy::iter_next_loop",
24768            "clippy::iter_skip_zero",
24769            "clippy::iterator_step_by_zero",
24770            "clippy::let_underscore_lock",
24771            "clippy::lint_groups_priority",
24772            "clippy::match_str_case_mismatch",
24773            "clippy::mem_replace_with_uninit",
24774            "clippy::min_max",
24775            "clippy::mistyped_literal_suffixes",
24776            "clippy::modulo_one",
24777            "clippy::mut_from_ref",
24778            "clippy::never_loop",
24779            "clippy::non_octal_unix_permissions",
24780            "clippy::nonsensical_open_options",
24781            "clippy::not_unsafe_ptr_arg_deref",
24782            "clippy::option_env_unwrap",
24783            "clippy::out_of_bounds_indexing",
24784            "clippy::overly_complex_bool_expr",
24785            "clippy::panicking_overflow_checks",
24786            "clippy::panicking_unwrap",
24787            "clippy::possible_missing_comma",
24788            "clippy::read_line_without_trim",
24789            "clippy::recursive_format_impl",
24790            "clippy::redundant_comparisons",
24791            "clippy::redundant_locals",
24792            "clippy::reversed_empty_ranges",
24793            "clippy::self_assignment",
24794            "clippy::serde_api_misuse",
24795            "clippy::size_of_in_element_count",
24796            "clippy::suspicious_splitn",
24797            "clippy::transmute_null_to_fn",
24798            "clippy::transmuting_null",
24799            "clippy::uninit_assumed_init",
24800            "clippy::uninit_vec",
24801            "clippy::unit_cmp",
24802            "clippy::unit_hash",
24803            "clippy::unit_return_expecting_ord",
24804            "clippy::unsound_collection_transmute",
24805            "clippy::unused_io_amount",
24806            "clippy::useless_attribute",
24807            "clippy::vec_resize_to_zero",
24808            "clippy::while_immutable_condition",
24809            "clippy::wrong_transmute",
24810            "clippy::zst_offset",
24811        ],
24812    },
24813    LintGroup {
24814        lint: Lint {
24815            label: "clippy::deprecated",
24816            description: r##"lint group for: clippy::assign_ops, clippy::extend_from_slice, clippy::misaligned_transmute, clippy::pub_enum_variant_names, clippy::range_step_by_zero, clippy::regex_macro, clippy::replace_consts, clippy::should_assert_eq, clippy::unsafe_vector_initialization, clippy::unstable_as_mut_slice, clippy::unstable_as_slice, clippy::unused_collect, clippy::wrong_pub_self_convention"##,
24817            default_severity: Severity::Allow,
24818            warn_since: None,
24819            deny_since: None,
24820        },
24821        children: &[
24822            "clippy::assign_ops",
24823            "clippy::extend_from_slice",
24824            "clippy::misaligned_transmute",
24825            "clippy::pub_enum_variant_names",
24826            "clippy::range_step_by_zero",
24827            "clippy::regex_macro",
24828            "clippy::replace_consts",
24829            "clippy::should_assert_eq",
24830            "clippy::unsafe_vector_initialization",
24831            "clippy::unstable_as_mut_slice",
24832            "clippy::unstable_as_slice",
24833            "clippy::unused_collect",
24834            "clippy::wrong_pub_self_convention",
24835        ],
24836    },
24837    LintGroup {
24838        lint: Lint {
24839            label: "clippy::nursery",
24840            description: r##"lint group for: clippy::as_ptr_cast_mut, clippy::branches_sharing_code, clippy::clear_with_drain, clippy::cognitive_complexity, clippy::collection_is_never_read, clippy::debug_assert_with_mut_call, clippy::derive_partial_eq_without_eq, clippy::equatable_if_let, clippy::fallible_impl_from, clippy::future_not_send, clippy::imprecise_flops, clippy::iter_on_empty_collections, clippy::iter_on_single_items, clippy::iter_with_drain, clippy::large_stack_frames, clippy::missing_const_for_fn, clippy::mutex_integer, clippy::needless_collect, clippy::needless_pass_by_ref_mut, clippy::non_send_fields_in_send_ty, clippy::nonstandard_macro_braces, clippy::option_if_let_else, clippy::or_fun_call, clippy::path_buf_push_overwrite, clippy::read_zero_byte_vec, clippy::redundant_clone, clippy::redundant_pub_crate, clippy::set_contains_or_insert, clippy::significant_drop_in_scrutinee, clippy::significant_drop_tightening, clippy::string_lit_as_bytes, clippy::suboptimal_flops, clippy::suspicious_operation_groupings, clippy::trailing_empty_array, clippy::trait_duplication_in_bounds, clippy::transmute_undefined_repr, clippy::trivial_regex, clippy::tuple_array_conversions, clippy::type_repetition_in_bounds, clippy::uninhabited_references, clippy::unnecessary_struct_initialization, clippy::unused_peekable, clippy::unused_rounding, clippy::use_self, clippy::useless_let_if_seq, clippy::while_float"##,
24841            default_severity: Severity::Allow,
24842            warn_since: None,
24843            deny_since: None,
24844        },
24845        children: &[
24846            "clippy::as_ptr_cast_mut",
24847            "clippy::branches_sharing_code",
24848            "clippy::clear_with_drain",
24849            "clippy::cognitive_complexity",
24850            "clippy::collection_is_never_read",
24851            "clippy::debug_assert_with_mut_call",
24852            "clippy::derive_partial_eq_without_eq",
24853            "clippy::equatable_if_let",
24854            "clippy::fallible_impl_from",
24855            "clippy::future_not_send",
24856            "clippy::imprecise_flops",
24857            "clippy::iter_on_empty_collections",
24858            "clippy::iter_on_single_items",
24859            "clippy::iter_with_drain",
24860            "clippy::large_stack_frames",
24861            "clippy::missing_const_for_fn",
24862            "clippy::mutex_integer",
24863            "clippy::needless_collect",
24864            "clippy::needless_pass_by_ref_mut",
24865            "clippy::non_send_fields_in_send_ty",
24866            "clippy::nonstandard_macro_braces",
24867            "clippy::option_if_let_else",
24868            "clippy::or_fun_call",
24869            "clippy::path_buf_push_overwrite",
24870            "clippy::read_zero_byte_vec",
24871            "clippy::redundant_clone",
24872            "clippy::redundant_pub_crate",
24873            "clippy::set_contains_or_insert",
24874            "clippy::significant_drop_in_scrutinee",
24875            "clippy::significant_drop_tightening",
24876            "clippy::string_lit_as_bytes",
24877            "clippy::suboptimal_flops",
24878            "clippy::suspicious_operation_groupings",
24879            "clippy::trailing_empty_array",
24880            "clippy::trait_duplication_in_bounds",
24881            "clippy::transmute_undefined_repr",
24882            "clippy::trivial_regex",
24883            "clippy::tuple_array_conversions",
24884            "clippy::type_repetition_in_bounds",
24885            "clippy::uninhabited_references",
24886            "clippy::unnecessary_struct_initialization",
24887            "clippy::unused_peekable",
24888            "clippy::unused_rounding",
24889            "clippy::use_self",
24890            "clippy::useless_let_if_seq",
24891            "clippy::while_float",
24892        ],
24893    },
24894    LintGroup {
24895        lint: Lint {
24896            label: "clippy::pedantic",
24897            description: r##"lint group for: clippy::assigning_clones, clippy::bool_to_int_with_if, clippy::borrow_as_ptr, clippy::case_sensitive_file_extension_comparisons, clippy::cast_lossless, clippy::cast_possible_truncation, clippy::cast_possible_wrap, clippy::cast_precision_loss, clippy::cast_ptr_alignment, clippy::cast_sign_loss, clippy::checked_conversions, clippy::cloned_instead_of_copied, clippy::copy_iterator, clippy::default_trait_access, clippy::doc_link_with_quotes, clippy::doc_markdown, clippy::empty_enum, clippy::enum_glob_use, clippy::expl_impl_clone_on_copy, clippy::explicit_deref_methods, clippy::explicit_into_iter_loop, clippy::explicit_iter_loop, clippy::filter_map_next, clippy::flat_map_option, clippy::float_cmp, clippy::fn_params_excessive_bools, clippy::from_iter_instead_of_collect, clippy::if_not_else, clippy::ignored_unit_patterns, clippy::implicit_clone, clippy::implicit_hasher, clippy::inconsistent_struct_constructor, clippy::index_refutable_slice, clippy::inefficient_to_string, clippy::inline_always, clippy::into_iter_without_iter, clippy::invalid_upcast_comparisons, clippy::items_after_statements, clippy::iter_filter_is_ok, clippy::iter_filter_is_some, clippy::iter_not_returning_iterator, clippy::iter_without_into_iter, clippy::large_digit_groups, clippy::large_futures, clippy::large_stack_arrays, clippy::large_types_passed_by_value, clippy::linkedlist, clippy::macro_use_imports, clippy::manual_assert, clippy::manual_instant_elapsed, clippy::manual_is_variant_and, clippy::manual_let_else, clippy::manual_ok_or, clippy::manual_string_new, clippy::many_single_char_names, clippy::map_unwrap_or, clippy::match_bool, clippy::match_on_vec_items, clippy::match_same_arms, clippy::match_wild_err_arm, clippy::match_wildcard_for_single_variants, clippy::maybe_infinite_iter, clippy::mismatching_type_param_order, clippy::missing_errors_doc, clippy::missing_fields_in_debug, clippy::missing_panics_doc, clippy::module_name_repetitions, clippy::must_use_candidate, clippy::mut_mut, clippy::naive_bytecount, clippy::needless_bitwise_bool, clippy::needless_continue, clippy::needless_for_each, clippy::needless_pass_by_value, clippy::needless_raw_string_hashes, clippy::no_effect_underscore_binding, clippy::no_mangle_with_rust_abi, clippy::option_as_ref_cloned, clippy::option_option, clippy::ptr_as_ptr, clippy::ptr_cast_constness, clippy::pub_underscore_fields, clippy::range_minus_one, clippy::range_plus_one, clippy::redundant_closure_for_method_calls, clippy::redundant_else, clippy::ref_as_ptr, clippy::ref_binding_to_reference, clippy::ref_option, clippy::ref_option_ref, clippy::return_self_not_must_use, clippy::same_functions_in_if_condition, clippy::semicolon_if_nothing_returned, clippy::should_panic_without_expect, clippy::similar_names, clippy::single_char_pattern, clippy::single_match_else, clippy::stable_sort_primitive, clippy::str_split_at_newline, clippy::string_add_assign, clippy::struct_excessive_bools, clippy::struct_field_names, clippy::too_many_lines, clippy::transmute_ptr_to_ptr, clippy::trivially_copy_pass_by_ref, clippy::unchecked_duration_subtraction, clippy::unicode_not_nfc, clippy::uninlined_format_args, clippy::unnecessary_box_returns, clippy::unnecessary_join, clippy::unnecessary_wraps, clippy::unnested_or_patterns, clippy::unreadable_literal, clippy::unsafe_derive_deserialize, clippy::unused_async, clippy::unused_self, clippy::used_underscore_binding, clippy::used_underscore_items, clippy::verbose_bit_mask, clippy::wildcard_imports, clippy::zero_sized_map_values"##,
24898            default_severity: Severity::Allow,
24899            warn_since: None,
24900            deny_since: None,
24901        },
24902        children: &[
24903            "clippy::assigning_clones",
24904            "clippy::bool_to_int_with_if",
24905            "clippy::borrow_as_ptr",
24906            "clippy::case_sensitive_file_extension_comparisons",
24907            "clippy::cast_lossless",
24908            "clippy::cast_possible_truncation",
24909            "clippy::cast_possible_wrap",
24910            "clippy::cast_precision_loss",
24911            "clippy::cast_ptr_alignment",
24912            "clippy::cast_sign_loss",
24913            "clippy::checked_conversions",
24914            "clippy::cloned_instead_of_copied",
24915            "clippy::copy_iterator",
24916            "clippy::default_trait_access",
24917            "clippy::doc_link_with_quotes",
24918            "clippy::doc_markdown",
24919            "clippy::empty_enum",
24920            "clippy::enum_glob_use",
24921            "clippy::expl_impl_clone_on_copy",
24922            "clippy::explicit_deref_methods",
24923            "clippy::explicit_into_iter_loop",
24924            "clippy::explicit_iter_loop",
24925            "clippy::filter_map_next",
24926            "clippy::flat_map_option",
24927            "clippy::float_cmp",
24928            "clippy::fn_params_excessive_bools",
24929            "clippy::from_iter_instead_of_collect",
24930            "clippy::if_not_else",
24931            "clippy::ignored_unit_patterns",
24932            "clippy::implicit_clone",
24933            "clippy::implicit_hasher",
24934            "clippy::inconsistent_struct_constructor",
24935            "clippy::index_refutable_slice",
24936            "clippy::inefficient_to_string",
24937            "clippy::inline_always",
24938            "clippy::into_iter_without_iter",
24939            "clippy::invalid_upcast_comparisons",
24940            "clippy::items_after_statements",
24941            "clippy::iter_filter_is_ok",
24942            "clippy::iter_filter_is_some",
24943            "clippy::iter_not_returning_iterator",
24944            "clippy::iter_without_into_iter",
24945            "clippy::large_digit_groups",
24946            "clippy::large_futures",
24947            "clippy::large_stack_arrays",
24948            "clippy::large_types_passed_by_value",
24949            "clippy::linkedlist",
24950            "clippy::macro_use_imports",
24951            "clippy::manual_assert",
24952            "clippy::manual_instant_elapsed",
24953            "clippy::manual_is_variant_and",
24954            "clippy::manual_let_else",
24955            "clippy::manual_ok_or",
24956            "clippy::manual_string_new",
24957            "clippy::many_single_char_names",
24958            "clippy::map_unwrap_or",
24959            "clippy::match_bool",
24960            "clippy::match_on_vec_items",
24961            "clippy::match_same_arms",
24962            "clippy::match_wild_err_arm",
24963            "clippy::match_wildcard_for_single_variants",
24964            "clippy::maybe_infinite_iter",
24965            "clippy::mismatching_type_param_order",
24966            "clippy::missing_errors_doc",
24967            "clippy::missing_fields_in_debug",
24968            "clippy::missing_panics_doc",
24969            "clippy::module_name_repetitions",
24970            "clippy::must_use_candidate",
24971            "clippy::mut_mut",
24972            "clippy::naive_bytecount",
24973            "clippy::needless_bitwise_bool",
24974            "clippy::needless_continue",
24975            "clippy::needless_for_each",
24976            "clippy::needless_pass_by_value",
24977            "clippy::needless_raw_string_hashes",
24978            "clippy::no_effect_underscore_binding",
24979            "clippy::no_mangle_with_rust_abi",
24980            "clippy::option_as_ref_cloned",
24981            "clippy::option_option",
24982            "clippy::ptr_as_ptr",
24983            "clippy::ptr_cast_constness",
24984            "clippy::pub_underscore_fields",
24985            "clippy::range_minus_one",
24986            "clippy::range_plus_one",
24987            "clippy::redundant_closure_for_method_calls",
24988            "clippy::redundant_else",
24989            "clippy::ref_as_ptr",
24990            "clippy::ref_binding_to_reference",
24991            "clippy::ref_option",
24992            "clippy::ref_option_ref",
24993            "clippy::return_self_not_must_use",
24994            "clippy::same_functions_in_if_condition",
24995            "clippy::semicolon_if_nothing_returned",
24996            "clippy::should_panic_without_expect",
24997            "clippy::similar_names",
24998            "clippy::single_char_pattern",
24999            "clippy::single_match_else",
25000            "clippy::stable_sort_primitive",
25001            "clippy::str_split_at_newline",
25002            "clippy::string_add_assign",
25003            "clippy::struct_excessive_bools",
25004            "clippy::struct_field_names",
25005            "clippy::too_many_lines",
25006            "clippy::transmute_ptr_to_ptr",
25007            "clippy::trivially_copy_pass_by_ref",
25008            "clippy::unchecked_duration_subtraction",
25009            "clippy::unicode_not_nfc",
25010            "clippy::uninlined_format_args",
25011            "clippy::unnecessary_box_returns",
25012            "clippy::unnecessary_join",
25013            "clippy::unnecessary_wraps",
25014            "clippy::unnested_or_patterns",
25015            "clippy::unreadable_literal",
25016            "clippy::unsafe_derive_deserialize",
25017            "clippy::unused_async",
25018            "clippy::unused_self",
25019            "clippy::used_underscore_binding",
25020            "clippy::used_underscore_items",
25021            "clippy::verbose_bit_mask",
25022            "clippy::wildcard_imports",
25023            "clippy::zero_sized_map_values",
25024        ],
25025    },
25026    LintGroup {
25027        lint: Lint {
25028            label: "clippy::perf",
25029            description: r##"lint group for: clippy::box_collection, clippy::boxed_local, clippy::cmp_owned, clippy::collapsible_str_replace, clippy::drain_collect, clippy::expect_fun_call, clippy::extend_with_drain, clippy::format_collect, clippy::format_in_format_args, clippy::iter_overeager_cloned, clippy::large_const_arrays, clippy::large_enum_variant, clippy::manual_memcpy, clippy::manual_retain, clippy::manual_str_repeat, clippy::manual_try_fold, clippy::map_entry, clippy::missing_const_for_thread_local, clippy::missing_spin_loop, clippy::readonly_write_lock, clippy::redundant_allocation, clippy::result_large_err, clippy::slow_vector_initialization, clippy::to_string_in_format_args, clippy::unnecessary_to_owned, clippy::useless_vec, clippy::vec_init_then_push, clippy::waker_clone_wake"##,
25030            default_severity: Severity::Allow,
25031            warn_since: None,
25032            deny_since: None,
25033        },
25034        children: &[
25035            "clippy::box_collection",
25036            "clippy::boxed_local",
25037            "clippy::cmp_owned",
25038            "clippy::collapsible_str_replace",
25039            "clippy::drain_collect",
25040            "clippy::expect_fun_call",
25041            "clippy::extend_with_drain",
25042            "clippy::format_collect",
25043            "clippy::format_in_format_args",
25044            "clippy::iter_overeager_cloned",
25045            "clippy::large_const_arrays",
25046            "clippy::large_enum_variant",
25047            "clippy::manual_memcpy",
25048            "clippy::manual_retain",
25049            "clippy::manual_str_repeat",
25050            "clippy::manual_try_fold",
25051            "clippy::map_entry",
25052            "clippy::missing_const_for_thread_local",
25053            "clippy::missing_spin_loop",
25054            "clippy::readonly_write_lock",
25055            "clippy::redundant_allocation",
25056            "clippy::result_large_err",
25057            "clippy::slow_vector_initialization",
25058            "clippy::to_string_in_format_args",
25059            "clippy::unnecessary_to_owned",
25060            "clippy::useless_vec",
25061            "clippy::vec_init_then_push",
25062            "clippy::waker_clone_wake",
25063        ],
25064    },
25065    LintGroup {
25066        lint: Lint {
25067            label: "clippy::restriction",
25068            description: r##"lint group for: clippy::absolute_paths, clippy::alloc_instead_of_core, clippy::allow_attributes, clippy::allow_attributes_without_reason, clippy::arithmetic_side_effects, clippy::as_conversions, clippy::as_underscore, clippy::assertions_on_result_states, clippy::big_endian_bytes, clippy::cfg_not_test, clippy::clone_on_ref_ptr, clippy::create_dir, clippy::dbg_macro, clippy::decimal_literal_representation, clippy::default_numeric_fallback, clippy::default_union_representation, clippy::deref_by_slicing, clippy::disallowed_script_idents, clippy::else_if_without_else, clippy::empty_drop, clippy::empty_enum_variants_with_brackets, clippy::empty_structs_with_brackets, clippy::error_impl_error, clippy::exhaustive_enums, clippy::exhaustive_structs, clippy::exit, clippy::expect_used, clippy::field_scoped_visibility_modifiers, clippy::filetype_is_file, clippy::float_arithmetic, clippy::float_cmp_const, clippy::fn_to_numeric_cast_any, clippy::format_push_string, clippy::get_unwrap, clippy::host_endian_bytes, clippy::if_then_some_else_none, clippy::impl_trait_in_params, clippy::implicit_return, clippy::indexing_slicing, clippy::infinite_loop, clippy::inline_asm_x86_att_syntax, clippy::inline_asm_x86_intel_syntax, clippy::integer_division, clippy::integer_division_remainder_used, clippy::iter_over_hash_type, clippy::large_include_file, clippy::let_underscore_must_use, clippy::let_underscore_untyped, clippy::little_endian_bytes, clippy::lossy_float_literal, clippy::map_err_ignore, clippy::mem_forget, clippy::min_ident_chars, clippy::missing_assert_message, clippy::missing_asserts_for_indexing, clippy::missing_docs_in_private_items, clippy::missing_inline_in_public_items, clippy::missing_trait_methods, clippy::mixed_read_write_in_expression, clippy::mod_module_files, clippy::modulo_arithmetic, clippy::multiple_inherent_impl, clippy::multiple_unsafe_ops_per_block, clippy::mutex_atomic, clippy::needless_raw_strings, clippy::non_ascii_literal, clippy::non_zero_suggestions, clippy::panic, clippy::panic_in_result_fn, clippy::partial_pub_fields, clippy::pathbuf_init_then_push, clippy::pattern_type_mismatch, clippy::print_stderr, clippy::print_stdout, clippy::pub_use, clippy::pub_with_shorthand, clippy::pub_without_shorthand, clippy::question_mark_used, clippy::rc_buffer, clippy::rc_mutex, clippy::redundant_type_annotations, clippy::ref_patterns, clippy::renamed_function_params, clippy::rest_pat_in_fully_bound_structs, clippy::same_name_method, clippy::self_named_module_files, clippy::semicolon_inside_block, clippy::semicolon_outside_block, clippy::separated_literal_suffix, clippy::shadow_reuse, clippy::shadow_same, clippy::shadow_unrelated, clippy::single_call_fn, clippy::single_char_lifetime_names, clippy::std_instead_of_alloc, clippy::std_instead_of_core, clippy::str_to_string, clippy::string_add, clippy::string_lit_chars_any, clippy::string_slice, clippy::string_to_string, clippy::suspicious_xor_used_as_pow, clippy::tests_outside_test_module, clippy::todo, clippy::try_err, clippy::undocumented_unsafe_blocks, clippy::unimplemented, clippy::unnecessary_safety_comment, clippy::unnecessary_safety_doc, clippy::unnecessary_self_imports, clippy::unneeded_field_pattern, clippy::unreachable, clippy::unseparated_literal_suffix, clippy::unused_result_ok, clippy::unused_trait_names, clippy::unwrap_in_result, clippy::unwrap_used, clippy::use_debug, clippy::verbose_file_reads, clippy::wildcard_enum_match_arm"##,
25069            default_severity: Severity::Allow,
25070            warn_since: None,
25071            deny_since: None,
25072        },
25073        children: &[
25074            "clippy::absolute_paths",
25075            "clippy::alloc_instead_of_core",
25076            "clippy::allow_attributes",
25077            "clippy::allow_attributes_without_reason",
25078            "clippy::arithmetic_side_effects",
25079            "clippy::as_conversions",
25080            "clippy::as_underscore",
25081            "clippy::assertions_on_result_states",
25082            "clippy::big_endian_bytes",
25083            "clippy::cfg_not_test",
25084            "clippy::clone_on_ref_ptr",
25085            "clippy::create_dir",
25086            "clippy::dbg_macro",
25087            "clippy::decimal_literal_representation",
25088            "clippy::default_numeric_fallback",
25089            "clippy::default_union_representation",
25090            "clippy::deref_by_slicing",
25091            "clippy::disallowed_script_idents",
25092            "clippy::else_if_without_else",
25093            "clippy::empty_drop",
25094            "clippy::empty_enum_variants_with_brackets",
25095            "clippy::empty_structs_with_brackets",
25096            "clippy::error_impl_error",
25097            "clippy::exhaustive_enums",
25098            "clippy::exhaustive_structs",
25099            "clippy::exit",
25100            "clippy::expect_used",
25101            "clippy::field_scoped_visibility_modifiers",
25102            "clippy::filetype_is_file",
25103            "clippy::float_arithmetic",
25104            "clippy::float_cmp_const",
25105            "clippy::fn_to_numeric_cast_any",
25106            "clippy::format_push_string",
25107            "clippy::get_unwrap",
25108            "clippy::host_endian_bytes",
25109            "clippy::if_then_some_else_none",
25110            "clippy::impl_trait_in_params",
25111            "clippy::implicit_return",
25112            "clippy::indexing_slicing",
25113            "clippy::infinite_loop",
25114            "clippy::inline_asm_x86_att_syntax",
25115            "clippy::inline_asm_x86_intel_syntax",
25116            "clippy::integer_division",
25117            "clippy::integer_division_remainder_used",
25118            "clippy::iter_over_hash_type",
25119            "clippy::large_include_file",
25120            "clippy::let_underscore_must_use",
25121            "clippy::let_underscore_untyped",
25122            "clippy::little_endian_bytes",
25123            "clippy::lossy_float_literal",
25124            "clippy::map_err_ignore",
25125            "clippy::mem_forget",
25126            "clippy::min_ident_chars",
25127            "clippy::missing_assert_message",
25128            "clippy::missing_asserts_for_indexing",
25129            "clippy::missing_docs_in_private_items",
25130            "clippy::missing_inline_in_public_items",
25131            "clippy::missing_trait_methods",
25132            "clippy::mixed_read_write_in_expression",
25133            "clippy::mod_module_files",
25134            "clippy::modulo_arithmetic",
25135            "clippy::multiple_inherent_impl",
25136            "clippy::multiple_unsafe_ops_per_block",
25137            "clippy::mutex_atomic",
25138            "clippy::needless_raw_strings",
25139            "clippy::non_ascii_literal",
25140            "clippy::non_zero_suggestions",
25141            "clippy::panic",
25142            "clippy::panic_in_result_fn",
25143            "clippy::partial_pub_fields",
25144            "clippy::pathbuf_init_then_push",
25145            "clippy::pattern_type_mismatch",
25146            "clippy::print_stderr",
25147            "clippy::print_stdout",
25148            "clippy::pub_use",
25149            "clippy::pub_with_shorthand",
25150            "clippy::pub_without_shorthand",
25151            "clippy::question_mark_used",
25152            "clippy::rc_buffer",
25153            "clippy::rc_mutex",
25154            "clippy::redundant_type_annotations",
25155            "clippy::ref_patterns",
25156            "clippy::renamed_function_params",
25157            "clippy::rest_pat_in_fully_bound_structs",
25158            "clippy::same_name_method",
25159            "clippy::self_named_module_files",
25160            "clippy::semicolon_inside_block",
25161            "clippy::semicolon_outside_block",
25162            "clippy::separated_literal_suffix",
25163            "clippy::shadow_reuse",
25164            "clippy::shadow_same",
25165            "clippy::shadow_unrelated",
25166            "clippy::single_call_fn",
25167            "clippy::single_char_lifetime_names",
25168            "clippy::std_instead_of_alloc",
25169            "clippy::std_instead_of_core",
25170            "clippy::str_to_string",
25171            "clippy::string_add",
25172            "clippy::string_lit_chars_any",
25173            "clippy::string_slice",
25174            "clippy::string_to_string",
25175            "clippy::suspicious_xor_used_as_pow",
25176            "clippy::tests_outside_test_module",
25177            "clippy::todo",
25178            "clippy::try_err",
25179            "clippy::undocumented_unsafe_blocks",
25180            "clippy::unimplemented",
25181            "clippy::unnecessary_safety_comment",
25182            "clippy::unnecessary_safety_doc",
25183            "clippy::unnecessary_self_imports",
25184            "clippy::unneeded_field_pattern",
25185            "clippy::unreachable",
25186            "clippy::unseparated_literal_suffix",
25187            "clippy::unused_result_ok",
25188            "clippy::unused_trait_names",
25189            "clippy::unwrap_in_result",
25190            "clippy::unwrap_used",
25191            "clippy::use_debug",
25192            "clippy::verbose_file_reads",
25193            "clippy::wildcard_enum_match_arm",
25194        ],
25195    },
25196    LintGroup {
25197        lint: Lint {
25198            label: "clippy::style",
25199            description: r##"lint group for: clippy::assertions_on_constants, clippy::assign_op_pattern, clippy::blocks_in_conditions, clippy::bool_assert_comparison, clippy::borrow_interior_mutable_const, clippy::box_default, clippy::builtin_type_shadow, clippy::byte_char_slices, clippy::bytes_nth, clippy::chars_last_cmp, clippy::chars_next_cmp, clippy::cmp_null, clippy::collapsible_else_if, clippy::collapsible_if, clippy::collapsible_match, clippy::comparison_chain, clippy::comparison_to_empty, clippy::declare_interior_mutable_const, clippy::default_instead_of_iter_empty, clippy::disallowed_macros, clippy::disallowed_methods, clippy::disallowed_names, clippy::disallowed_types, clippy::doc_lazy_continuation, clippy::double_must_use, clippy::double_neg, clippy::duplicate_underscore_argument, clippy::enum_variant_names, clippy::err_expect, clippy::excessive_precision, clippy::field_reassign_with_default, clippy::filter_map_bool_then, clippy::fn_to_numeric_cast, clippy::fn_to_numeric_cast_with_truncation, clippy::for_kv_map, clippy::from_over_into, clippy::from_str_radix_10, clippy::get_first, clippy::if_same_then_else, clippy::implicit_saturating_add, clippy::implicit_saturating_sub, clippy::inconsistent_digit_grouping, clippy::infallible_destructuring_match, clippy::inherent_to_string, clippy::init_numbered_fields, clippy::into_iter_on_ref, clippy::is_digit_ascii_radix, clippy::items_after_test_module, clippy::iter_cloned_collect, clippy::iter_next_slice, clippy::iter_nth, clippy::iter_nth_zero, clippy::iter_skip_next, clippy::just_underscores_and_digits, clippy::legacy_numeric_constants, clippy::len_without_is_empty, clippy::len_zero, clippy::let_and_return, clippy::let_unit_value, clippy::main_recursion, clippy::manual_async_fn, clippy::manual_bits, clippy::manual_is_ascii_check, clippy::manual_is_finite, clippy::manual_is_infinite, clippy::manual_map, clippy::manual_next_back, clippy::manual_non_exhaustive, clippy::manual_pattern_char_comparison, clippy::manual_range_contains, clippy::manual_rotate, clippy::manual_saturating_arithmetic, clippy::manual_while_let_some, clippy::map_clone, clippy::map_collect_result_unit, clippy::match_like_matches_macro, clippy::match_overlapping_arm, clippy::match_ref_pats, clippy::match_result_ok, clippy::mem_replace_option_with_none, clippy::mem_replace_with_default, clippy::missing_enforced_import_renames, clippy::missing_safety_doc, clippy::mixed_attributes_style, clippy::mixed_case_hex_literals, clippy::module_inception, clippy::must_use_unit, clippy::mut_mutex_lock, clippy::needless_borrow, clippy::needless_borrows_for_generic_args, clippy::needless_doctest_main, clippy::needless_else, clippy::needless_late_init, clippy::needless_parens_on_range_literals, clippy::needless_pub_self, clippy::needless_range_loop, clippy::needless_return, clippy::needless_return_with_question_mark, clippy::neg_multiply, clippy::new_ret_no_self, clippy::new_without_default, clippy::non_minimal_cfg, clippy::obfuscated_if_else, clippy::ok_expect, clippy::op_ref, clippy::option_map_or_err_ok, clippy::option_map_or_none, clippy::partialeq_to_none, clippy::print_literal, clippy::print_with_newline, clippy::println_empty_string, clippy::ptr_arg, clippy::ptr_eq, clippy::question_mark, clippy::redundant_closure, clippy::redundant_field_names, clippy::redundant_pattern, clippy::redundant_pattern_matching, clippy::redundant_static_lifetimes, clippy::result_map_or_into_option, clippy::result_unit_err, clippy::same_item_push, clippy::self_named_constructors, clippy::should_implement_trait, clippy::single_char_add_str, clippy::single_component_path_imports, clippy::single_match, clippy::string_extend_chars, clippy::tabs_in_doc_comments, clippy::to_digit_is_some, clippy::to_string_trait_impl, clippy::too_long_first_doc_paragraph, clippy::toplevel_ref_arg, clippy::trim_split_whitespace, clippy::unnecessary_fallible_conversions, clippy::unnecessary_fold, clippy::unnecessary_lazy_evaluations, clippy::unnecessary_mut_passed, clippy::unnecessary_owned_empty_strings, clippy::unsafe_removed_from_name, clippy::unused_enumerate_index, clippy::unused_unit, clippy::unusual_byte_groupings, clippy::unwrap_or_default, clippy::upper_case_acronyms, clippy::while_let_on_iterator, clippy::write_literal, clippy::write_with_newline, clippy::writeln_empty_string, clippy::wrong_self_convention, clippy::zero_ptr"##,
25200            default_severity: Severity::Allow,
25201            warn_since: None,
25202            deny_since: None,
25203        },
25204        children: &[
25205            "clippy::assertions_on_constants",
25206            "clippy::assign_op_pattern",
25207            "clippy::blocks_in_conditions",
25208            "clippy::bool_assert_comparison",
25209            "clippy::borrow_interior_mutable_const",
25210            "clippy::box_default",
25211            "clippy::builtin_type_shadow",
25212            "clippy::byte_char_slices",
25213            "clippy::bytes_nth",
25214            "clippy::chars_last_cmp",
25215            "clippy::chars_next_cmp",
25216            "clippy::cmp_null",
25217            "clippy::collapsible_else_if",
25218            "clippy::collapsible_if",
25219            "clippy::collapsible_match",
25220            "clippy::comparison_chain",
25221            "clippy::comparison_to_empty",
25222            "clippy::declare_interior_mutable_const",
25223            "clippy::default_instead_of_iter_empty",
25224            "clippy::disallowed_macros",
25225            "clippy::disallowed_methods",
25226            "clippy::disallowed_names",
25227            "clippy::disallowed_types",
25228            "clippy::doc_lazy_continuation",
25229            "clippy::double_must_use",
25230            "clippy::double_neg",
25231            "clippy::duplicate_underscore_argument",
25232            "clippy::enum_variant_names",
25233            "clippy::err_expect",
25234            "clippy::excessive_precision",
25235            "clippy::field_reassign_with_default",
25236            "clippy::filter_map_bool_then",
25237            "clippy::fn_to_numeric_cast",
25238            "clippy::fn_to_numeric_cast_with_truncation",
25239            "clippy::for_kv_map",
25240            "clippy::from_over_into",
25241            "clippy::from_str_radix_10",
25242            "clippy::get_first",
25243            "clippy::if_same_then_else",
25244            "clippy::implicit_saturating_add",
25245            "clippy::implicit_saturating_sub",
25246            "clippy::inconsistent_digit_grouping",
25247            "clippy::infallible_destructuring_match",
25248            "clippy::inherent_to_string",
25249            "clippy::init_numbered_fields",
25250            "clippy::into_iter_on_ref",
25251            "clippy::is_digit_ascii_radix",
25252            "clippy::items_after_test_module",
25253            "clippy::iter_cloned_collect",
25254            "clippy::iter_next_slice",
25255            "clippy::iter_nth",
25256            "clippy::iter_nth_zero",
25257            "clippy::iter_skip_next",
25258            "clippy::just_underscores_and_digits",
25259            "clippy::legacy_numeric_constants",
25260            "clippy::len_without_is_empty",
25261            "clippy::len_zero",
25262            "clippy::let_and_return",
25263            "clippy::let_unit_value",
25264            "clippy::main_recursion",
25265            "clippy::manual_async_fn",
25266            "clippy::manual_bits",
25267            "clippy::manual_is_ascii_check",
25268            "clippy::manual_is_finite",
25269            "clippy::manual_is_infinite",
25270            "clippy::manual_map",
25271            "clippy::manual_next_back",
25272            "clippy::manual_non_exhaustive",
25273            "clippy::manual_pattern_char_comparison",
25274            "clippy::manual_range_contains",
25275            "clippy::manual_rotate",
25276            "clippy::manual_saturating_arithmetic",
25277            "clippy::manual_while_let_some",
25278            "clippy::map_clone",
25279            "clippy::map_collect_result_unit",
25280            "clippy::match_like_matches_macro",
25281            "clippy::match_overlapping_arm",
25282            "clippy::match_ref_pats",
25283            "clippy::match_result_ok",
25284            "clippy::mem_replace_option_with_none",
25285            "clippy::mem_replace_with_default",
25286            "clippy::missing_enforced_import_renames",
25287            "clippy::missing_safety_doc",
25288            "clippy::mixed_attributes_style",
25289            "clippy::mixed_case_hex_literals",
25290            "clippy::module_inception",
25291            "clippy::must_use_unit",
25292            "clippy::mut_mutex_lock",
25293            "clippy::needless_borrow",
25294            "clippy::needless_borrows_for_generic_args",
25295            "clippy::needless_doctest_main",
25296            "clippy::needless_else",
25297            "clippy::needless_late_init",
25298            "clippy::needless_parens_on_range_literals",
25299            "clippy::needless_pub_self",
25300            "clippy::needless_range_loop",
25301            "clippy::needless_return",
25302            "clippy::needless_return_with_question_mark",
25303            "clippy::neg_multiply",
25304            "clippy::new_ret_no_self",
25305            "clippy::new_without_default",
25306            "clippy::non_minimal_cfg",
25307            "clippy::obfuscated_if_else",
25308            "clippy::ok_expect",
25309            "clippy::op_ref",
25310            "clippy::option_map_or_err_ok",
25311            "clippy::option_map_or_none",
25312            "clippy::partialeq_to_none",
25313            "clippy::print_literal",
25314            "clippy::print_with_newline",
25315            "clippy::println_empty_string",
25316            "clippy::ptr_arg",
25317            "clippy::ptr_eq",
25318            "clippy::question_mark",
25319            "clippy::redundant_closure",
25320            "clippy::redundant_field_names",
25321            "clippy::redundant_pattern",
25322            "clippy::redundant_pattern_matching",
25323            "clippy::redundant_static_lifetimes",
25324            "clippy::result_map_or_into_option",
25325            "clippy::result_unit_err",
25326            "clippy::same_item_push",
25327            "clippy::self_named_constructors",
25328            "clippy::should_implement_trait",
25329            "clippy::single_char_add_str",
25330            "clippy::single_component_path_imports",
25331            "clippy::single_match",
25332            "clippy::string_extend_chars",
25333            "clippy::tabs_in_doc_comments",
25334            "clippy::to_digit_is_some",
25335            "clippy::to_string_trait_impl",
25336            "clippy::too_long_first_doc_paragraph",
25337            "clippy::toplevel_ref_arg",
25338            "clippy::trim_split_whitespace",
25339            "clippy::unnecessary_fallible_conversions",
25340            "clippy::unnecessary_fold",
25341            "clippy::unnecessary_lazy_evaluations",
25342            "clippy::unnecessary_mut_passed",
25343            "clippy::unnecessary_owned_empty_strings",
25344            "clippy::unsafe_removed_from_name",
25345            "clippy::unused_enumerate_index",
25346            "clippy::unused_unit",
25347            "clippy::unusual_byte_groupings",
25348            "clippy::unwrap_or_default",
25349            "clippy::upper_case_acronyms",
25350            "clippy::while_let_on_iterator",
25351            "clippy::write_literal",
25352            "clippy::write_with_newline",
25353            "clippy::writeln_empty_string",
25354            "clippy::wrong_self_convention",
25355            "clippy::zero_ptr",
25356        ],
25357    },
25358    LintGroup {
25359        lint: Lint {
25360            label: "clippy::suspicious",
25361            description: r##"lint group for: clippy::almost_complete_range, clippy::arc_with_non_send_sync, clippy::await_holding_invalid_type, clippy::await_holding_lock, clippy::await_holding_refcell_ref, clippy::blanket_clippy_restriction_lints, clippy::cast_abs_to_unsigned, clippy::cast_enum_constructor, clippy::cast_enum_truncation, clippy::cast_nan_to_int, clippy::cast_slice_from_raw_parts, clippy::const_is_empty, clippy::crate_in_macro_def, clippy::deprecated_clippy_cfg_attr, clippy::drop_non_drop, clippy::duplicate_mod, clippy::duplicated_attributes, clippy::empty_docs, clippy::empty_line_after_doc_comments, clippy::empty_line_after_outer_attr, clippy::empty_loop, clippy::float_equality_without_abs, clippy::forget_non_drop, clippy::four_forward_slashes, clippy::from_raw_with_void_ptr, clippy::incompatible_msrv, clippy::ineffective_open_options, clippy::iter_out_of_bounds, clippy::join_absolute_paths, clippy::let_underscore_future, clippy::lines_filter_map_ok, clippy::macro_metavars_in_unsafe, clippy::manual_unwrap_or_default, clippy::misnamed_getters, clippy::misrefactored_assign_op, clippy::missing_transmute_annotations, clippy::multi_assignments, clippy::multiple_bound_locations, clippy::mut_range_bound, clippy::mutable_key_type, clippy::needless_character_iteration, clippy::needless_maybe_sized, clippy::no_effect_replace, clippy::non_canonical_clone_impl, clippy::non_canonical_partial_ord_impl, clippy::octal_escapes, clippy::path_ends_with_ext, clippy::permissions_set_readonly_false, clippy::pointers_in_nomem_asm_block, clippy::print_in_format_impl, clippy::rc_clone_in_vec_init, clippy::repeat_vec_with_capacity, clippy::single_range_in_vec_init, clippy::size_of_ref, clippy::suspicious_arithmetic_impl, clippy::suspicious_assignment_formatting, clippy::suspicious_command_arg_space, clippy::suspicious_doc_comments, clippy::suspicious_else_formatting, clippy::suspicious_map, clippy::suspicious_op_assign_impl, clippy::suspicious_open_options, clippy::suspicious_to_owned, clippy::suspicious_unary_op_formatting, clippy::swap_ptr_to_ref, clippy::test_attr_in_doctest, clippy::type_id_on_box, clippy::unconditional_recursion, clippy::unnecessary_clippy_cfg, clippy::unnecessary_get_then_check, clippy::unnecessary_result_map_or_else, clippy::zero_repeat_side_effects, clippy::zombie_processes"##,
25362            default_severity: Severity::Allow,
25363            warn_since: None,
25364            deny_since: None,
25365        },
25366        children: &[
25367            "clippy::almost_complete_range",
25368            "clippy::arc_with_non_send_sync",
25369            "clippy::await_holding_invalid_type",
25370            "clippy::await_holding_lock",
25371            "clippy::await_holding_refcell_ref",
25372            "clippy::blanket_clippy_restriction_lints",
25373            "clippy::cast_abs_to_unsigned",
25374            "clippy::cast_enum_constructor",
25375            "clippy::cast_enum_truncation",
25376            "clippy::cast_nan_to_int",
25377            "clippy::cast_slice_from_raw_parts",
25378            "clippy::const_is_empty",
25379            "clippy::crate_in_macro_def",
25380            "clippy::deprecated_clippy_cfg_attr",
25381            "clippy::drop_non_drop",
25382            "clippy::duplicate_mod",
25383            "clippy::duplicated_attributes",
25384            "clippy::empty_docs",
25385            "clippy::empty_line_after_doc_comments",
25386            "clippy::empty_line_after_outer_attr",
25387            "clippy::empty_loop",
25388            "clippy::float_equality_without_abs",
25389            "clippy::forget_non_drop",
25390            "clippy::four_forward_slashes",
25391            "clippy::from_raw_with_void_ptr",
25392            "clippy::incompatible_msrv",
25393            "clippy::ineffective_open_options",
25394            "clippy::iter_out_of_bounds",
25395            "clippy::join_absolute_paths",
25396            "clippy::let_underscore_future",
25397            "clippy::lines_filter_map_ok",
25398            "clippy::macro_metavars_in_unsafe",
25399            "clippy::manual_unwrap_or_default",
25400            "clippy::misnamed_getters",
25401            "clippy::misrefactored_assign_op",
25402            "clippy::missing_transmute_annotations",
25403            "clippy::multi_assignments",
25404            "clippy::multiple_bound_locations",
25405            "clippy::mut_range_bound",
25406            "clippy::mutable_key_type",
25407            "clippy::needless_character_iteration",
25408            "clippy::needless_maybe_sized",
25409            "clippy::no_effect_replace",
25410            "clippy::non_canonical_clone_impl",
25411            "clippy::non_canonical_partial_ord_impl",
25412            "clippy::octal_escapes",
25413            "clippy::path_ends_with_ext",
25414            "clippy::permissions_set_readonly_false",
25415            "clippy::pointers_in_nomem_asm_block",
25416            "clippy::print_in_format_impl",
25417            "clippy::rc_clone_in_vec_init",
25418            "clippy::repeat_vec_with_capacity",
25419            "clippy::single_range_in_vec_init",
25420            "clippy::size_of_ref",
25421            "clippy::suspicious_arithmetic_impl",
25422            "clippy::suspicious_assignment_formatting",
25423            "clippy::suspicious_command_arg_space",
25424            "clippy::suspicious_doc_comments",
25425            "clippy::suspicious_else_formatting",
25426            "clippy::suspicious_map",
25427            "clippy::suspicious_op_assign_impl",
25428            "clippy::suspicious_open_options",
25429            "clippy::suspicious_to_owned",
25430            "clippy::suspicious_unary_op_formatting",
25431            "clippy::swap_ptr_to_ref",
25432            "clippy::test_attr_in_doctest",
25433            "clippy::type_id_on_box",
25434            "clippy::unconditional_recursion",
25435            "clippy::unnecessary_clippy_cfg",
25436            "clippy::unnecessary_get_then_check",
25437            "clippy::unnecessary_result_map_or_else",
25438            "clippy::zero_repeat_side_effects",
25439            "clippy::zombie_processes",
25440        ],
25441    },
25442];