ide_db/generated/
lints.rs

1//! Generated by `cargo 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: "abi_unsupported_vector_types",
24        description: r##"this function call or definition uses a vector type which is not enabled"##,
25        default_severity: Severity::Warning,
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: "ambiguous_associated_items",
38        description: r##"ambiguous associated items"##,
39        default_severity: Severity::Error,
40        warn_since: None,
41        deny_since: None,
42    },
43    Lint {
44        label: "ambiguous_glob_imports",
45        description: r##"detects certain glob imports that require reporting an ambiguity error"##,
46        default_severity: Severity::Warning,
47        warn_since: None,
48        deny_since: None,
49    },
50    Lint {
51        label: "ambiguous_glob_reexports",
52        description: r##"ambiguous glob re-exports"##,
53        default_severity: Severity::Warning,
54        warn_since: None,
55        deny_since: None,
56    },
57    Lint {
58        label: "ambiguous_negative_literals",
59        description: r##"ambiguous negative literals operations"##,
60        default_severity: Severity::Allow,
61        warn_since: None,
62        deny_since: None,
63    },
64    Lint {
65        label: "ambiguous_wide_pointer_comparisons",
66        description: r##"detects ambiguous wide pointer comparisons"##,
67        default_severity: Severity::Warning,
68        warn_since: None,
69        deny_since: None,
70    },
71    Lint {
72        label: "anonymous_parameters",
73        description: r##"detects anonymous parameters"##,
74        default_severity: Severity::Warning,
75        warn_since: None,
76        deny_since: None,
77    },
78    Lint {
79        label: "arithmetic_overflow",
80        description: r##"arithmetic operation overflows"##,
81        default_severity: Severity::Error,
82        warn_since: None,
83        deny_since: None,
84    },
85    Lint {
86        label: "array_into_iter",
87        description: r##"detects calling `into_iter` on arrays in Rust 2015 and 2018"##,
88        default_severity: Severity::Warning,
89        warn_since: None,
90        deny_since: None,
91    },
92    Lint {
93        label: "asm_sub_register",
94        description: r##"using only a subset of a register for inline asm inputs"##,
95        default_severity: Severity::Warning,
96        warn_since: None,
97        deny_since: None,
98    },
99    Lint {
100        label: "async_fn_in_trait",
101        description: r##"use of `async fn` in definition of a publicly-reachable trait"##,
102        default_severity: Severity::Warning,
103        warn_since: None,
104        deny_since: None,
105    },
106    Lint {
107        label: "bad_asm_style",
108        description: r##"incorrect use of inline assembly"##,
109        default_severity: Severity::Warning,
110        warn_since: None,
111        deny_since: None,
112    },
113    Lint {
114        label: "bare_trait_objects",
115        description: r##"suggest using `dyn Trait` for trait objects"##,
116        default_severity: Severity::Warning,
117        warn_since: None,
118        deny_since: None,
119    },
120    Lint {
121        label: "binary_asm_labels",
122        description: r##"labels in inline assembly containing only 0 or 1 digits"##,
123        default_severity: Severity::Error,
124        warn_since: None,
125        deny_since: None,
126    },
127    Lint {
128        label: "bindings_with_variant_name",
129        description: r##"detects pattern bindings with the same name as one of the matched variants"##,
130        default_severity: Severity::Error,
131        warn_since: None,
132        deny_since: None,
133    },
134    Lint {
135        label: "boxed_slice_into_iter",
136        description: r##"detects calling `into_iter` on boxed slices in Rust 2015, 2018, and 2021"##,
137        default_severity: Severity::Warning,
138        warn_since: None,
139        deny_since: None,
140    },
141    Lint {
142        label: "break_with_label_and_loop",
143        description: r##"`break` expression with label and unlabeled loop as value expression"##,
144        default_severity: Severity::Warning,
145        warn_since: None,
146        deny_since: None,
147    },
148    Lint {
149        label: "cenum_impl_drop_cast",
150        description: r##"a C-like enum implementing Drop is cast"##,
151        default_severity: Severity::Error,
152        warn_since: None,
153        deny_since: None,
154    },
155    Lint {
156        label: "clashing_extern_declarations",
157        description: r##"detects when an extern fn has been declared with the same name but different types"##,
158        default_severity: Severity::Warning,
159        warn_since: None,
160        deny_since: None,
161    },
162    Lint {
163        label: "closure_returning_async_block",
164        description: r##"closure that returns `async {}` could be rewritten as an async closure"##,
165        default_severity: Severity::Allow,
166        warn_since: None,
167        deny_since: None,
168    },
169    Lint {
170        label: "coherence_leak_check",
171        description: r##"distinct impls distinguished only by the leak-check code"##,
172        default_severity: Severity::Warning,
173        warn_since: None,
174        deny_since: None,
175    },
176    Lint {
177        label: "conflicting_repr_hints",
178        description: r##"conflicts between `#[repr(..)]` hints that were previously accepted and used in practice"##,
179        default_severity: Severity::Error,
180        warn_since: None,
181        deny_since: None,
182    },
183    Lint {
184        label: "confusable_idents",
185        description: r##"detects visually confusable pairs between identifiers"##,
186        default_severity: Severity::Warning,
187        warn_since: None,
188        deny_since: None,
189    },
190    Lint {
191        label: "const_evaluatable_unchecked",
192        description: r##"detects a generic constant is used in a type without a emitting a warning"##,
193        default_severity: Severity::Warning,
194        warn_since: None,
195        deny_since: None,
196    },
197    Lint {
198        label: "const_item_mutation",
199        description: r##"detects attempts to mutate a `const` item"##,
200        default_severity: Severity::Warning,
201        warn_since: None,
202        deny_since: None,
203    },
204    Lint {
205        label: "dangling_pointers_from_temporaries",
206        description: r##"detects getting a pointer from a temporary"##,
207        default_severity: Severity::Warning,
208        warn_since: None,
209        deny_since: None,
210    },
211    Lint {
212        label: "dead_code",
213        description: r##"detect unused, unexported items"##,
214        default_severity: Severity::Warning,
215        warn_since: None,
216        deny_since: None,
217    },
218    Lint {
219        label: "dependency_on_unit_never_type_fallback",
220        description: r##"never type fallback affecting unsafe function calls"##,
221        default_severity: Severity::Warning,
222        warn_since: None,
223        deny_since: None,
224    },
225    Lint {
226        label: "deprecated",
227        description: r##"detects use of deprecated items"##,
228        default_severity: Severity::Warning,
229        warn_since: None,
230        deny_since: None,
231    },
232    Lint {
233        label: "deprecated_in_future",
234        description: r##"detects use of items that will be deprecated in a future version"##,
235        default_severity: Severity::Allow,
236        warn_since: None,
237        deny_since: None,
238    },
239    Lint {
240        label: "deprecated_safe_2024",
241        description: r##"detects unsafe functions being used as safe functions"##,
242        default_severity: Severity::Allow,
243        warn_since: None,
244        deny_since: None,
245    },
246    Lint {
247        label: "deprecated_where_clause_location",
248        description: r##"deprecated where clause location"##,
249        default_severity: Severity::Warning,
250        warn_since: None,
251        deny_since: None,
252    },
253    Lint {
254        label: "deref_into_dyn_supertrait",
255        description: r##"`Deref` implementation usage with a supertrait trait object for output might be shadowed in the future"##,
256        default_severity: Severity::Warning,
257        warn_since: None,
258        deny_since: None,
259    },
260    Lint {
261        label: "deref_nullptr",
262        description: r##"detects when an null pointer is dereferenced"##,
263        default_severity: Severity::Warning,
264        warn_since: None,
265        deny_since: None,
266    },
267    Lint {
268        label: "drop_bounds",
269        description: r##"bounds of the form `T: Drop` are most likely incorrect"##,
270        default_severity: Severity::Warning,
271        warn_since: None,
272        deny_since: None,
273    },
274    Lint {
275        label: "dropping_copy_types",
276        description: r##"calls to `std::mem::drop` with a value that implements Copy"##,
277        default_severity: Severity::Warning,
278        warn_since: None,
279        deny_since: None,
280    },
281    Lint {
282        label: "dropping_references",
283        description: r##"calls to `std::mem::drop` with a reference instead of an owned value"##,
284        default_severity: Severity::Warning,
285        warn_since: None,
286        deny_since: None,
287    },
288    Lint {
289        label: "duplicate_macro_attributes",
290        description: r##"duplicated attribute"##,
291        default_severity: Severity::Warning,
292        warn_since: None,
293        deny_since: None,
294    },
295    Lint {
296        label: "dyn_drop",
297        description: r##"trait objects of the form `dyn Drop` are useless"##,
298        default_severity: Severity::Warning,
299        warn_since: None,
300        deny_since: None,
301    },
302    Lint {
303        label: "edition_2024_expr_fragment_specifier",
304        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."##,
305        default_severity: Severity::Allow,
306        warn_since: None,
307        deny_since: None,
308    },
309    Lint {
310        label: "elided_lifetimes_in_associated_constant",
311        description: r##"elided lifetimes cannot be used in associated constants in impls"##,
312        default_severity: Severity::Error,
313        warn_since: None,
314        deny_since: None,
315    },
316    Lint {
317        label: "elided_lifetimes_in_paths",
318        description: r##"hidden lifetime parameters in types are deprecated"##,
319        default_severity: Severity::Allow,
320        warn_since: None,
321        deny_since: None,
322    },
323    Lint {
324        label: "elided_named_lifetimes",
325        description: r##"detects when an elided lifetime gets resolved to be `'static` or some named parameter"##,
326        default_severity: Severity::Warning,
327        warn_since: None,
328        deny_since: None,
329    },
330    Lint {
331        label: "ellipsis_inclusive_range_patterns",
332        description: r##"`...` range patterns are deprecated"##,
333        default_severity: Severity::Warning,
334        warn_since: None,
335        deny_since: None,
336    },
337    Lint {
338        label: "enum_intrinsics_non_enums",
339        description: r##"detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types"##,
340        default_severity: Severity::Error,
341        warn_since: None,
342        deny_since: None,
343    },
344    Lint {
345        label: "explicit_builtin_cfgs_in_flags",
346        description: r##"detects builtin cfgs set via the `--cfg`"##,
347        default_severity: Severity::Error,
348        warn_since: None,
349        deny_since: None,
350    },
351    Lint {
352        label: "explicit_outlives_requirements",
353        description: r##"outlives requirements can be inferred"##,
354        default_severity: Severity::Allow,
355        warn_since: None,
356        deny_since: None,
357    },
358    Lint {
359        label: "exported_private_dependencies",
360        description: r##"public interface leaks type from a private dependency"##,
361        default_severity: Severity::Warning,
362        warn_since: None,
363        deny_since: None,
364    },
365    Lint {
366        label: "ffi_unwind_calls",
367        description: r##"call to foreign functions or function pointers with FFI-unwind ABI"##,
368        default_severity: Severity::Allow,
369        warn_since: None,
370        deny_since: None,
371    },
372    Lint {
373        label: "for_loops_over_fallibles",
374        description: r##"for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let`"##,
375        default_severity: Severity::Warning,
376        warn_since: None,
377        deny_since: None,
378    },
379    Lint {
380        label: "forbidden_lint_groups",
381        description: r##"applying forbid to lint-groups"##,
382        default_severity: Severity::Warning,
383        warn_since: None,
384        deny_since: None,
385    },
386    Lint {
387        label: "forgetting_copy_types",
388        description: r##"calls to `std::mem::forget` with a value that implements Copy"##,
389        default_severity: Severity::Warning,
390        warn_since: None,
391        deny_since: None,
392    },
393    Lint {
394        label: "forgetting_references",
395        description: r##"calls to `std::mem::forget` with a reference instead of an owned value"##,
396        default_severity: Severity::Warning,
397        warn_since: None,
398        deny_since: None,
399    },
400    Lint {
401        label: "function_item_references",
402        description: r##"suggest casting to a function pointer when attempting to take references to function items"##,
403        default_severity: Severity::Warning,
404        warn_since: None,
405        deny_since: None,
406    },
407    Lint {
408        label: "fuzzy_provenance_casts",
409        description: r##"a fuzzy integer to pointer cast is used"##,
410        default_severity: Severity::Allow,
411        warn_since: None,
412        deny_since: None,
413    },
414    Lint {
415        label: "hidden_glob_reexports",
416        description: r##"name introduced by a private item shadows a name introduced by a public glob re-export"##,
417        default_severity: Severity::Warning,
418        warn_since: None,
419        deny_since: None,
420    },
421    Lint {
422        label: "if_let_rescope",
423        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"##,
424        default_severity: Severity::Allow,
425        warn_since: None,
426        deny_since: None,
427    },
428    Lint {
429        label: "ill_formed_attribute_input",
430        description: r##"ill-formed attribute inputs that were previously accepted and used in practice"##,
431        default_severity: Severity::Error,
432        warn_since: None,
433        deny_since: None,
434    },
435    Lint {
436        label: "impl_trait_overcaptures",
437        description: r##"`impl Trait` will capture more lifetimes than possibly intended in edition 2024"##,
438        default_severity: Severity::Allow,
439        warn_since: None,
440        deny_since: None,
441    },
442    Lint {
443        label: "impl_trait_redundant_captures",
444        description: r##"redundant precise-capturing `use<...>` syntax on an `impl Trait`"##,
445        default_severity: Severity::Warning,
446        warn_since: None,
447        deny_since: None,
448    },
449    Lint {
450        label: "improper_ctypes",
451        description: r##"proper use of libc types in foreign modules"##,
452        default_severity: Severity::Warning,
453        warn_since: None,
454        deny_since: None,
455    },
456    Lint {
457        label: "improper_ctypes_definitions",
458        description: r##"proper use of libc types in foreign item definitions"##,
459        default_severity: Severity::Warning,
460        warn_since: None,
461        deny_since: None,
462    },
463    Lint {
464        label: "incomplete_features",
465        description: r##"incomplete features that may function improperly in some or all cases"##,
466        default_severity: Severity::Warning,
467        warn_since: None,
468        deny_since: None,
469    },
470    Lint {
471        label: "incomplete_include",
472        description: r##"trailing content in included file"##,
473        default_severity: Severity::Error,
474        warn_since: None,
475        deny_since: None,
476    },
477    Lint {
478        label: "ineffective_unstable_trait_impl",
479        description: r##"detects `#[unstable]` on stable trait implementations for stable types"##,
480        default_severity: Severity::Error,
481        warn_since: None,
482        deny_since: None,
483    },
484    Lint {
485        label: "inline_no_sanitize",
486        description: r##"detects incompatible use of `#[inline(always)]` and `#[no_sanitize(...)]`"##,
487        default_severity: Severity::Warning,
488        warn_since: None,
489        deny_since: None,
490    },
491    Lint {
492        label: "internal_features",
493        description: r##"internal features are not supposed to be used"##,
494        default_severity: Severity::Warning,
495        warn_since: None,
496        deny_since: None,
497    },
498    Lint {
499        label: "invalid_atomic_ordering",
500        description: r##"usage of invalid atomic ordering in atomic operations and memory fences"##,
501        default_severity: Severity::Error,
502        warn_since: None,
503        deny_since: None,
504    },
505    Lint {
506        label: "invalid_doc_attributes",
507        description: r##"detects invalid `#[doc(...)]` attributes"##,
508        default_severity: Severity::Error,
509        warn_since: None,
510        deny_since: None,
511    },
512    Lint {
513        label: "invalid_from_utf8",
514        description: r##"using a non UTF-8 literal in `std::str::from_utf8`"##,
515        default_severity: Severity::Warning,
516        warn_since: None,
517        deny_since: None,
518    },
519    Lint {
520        label: "invalid_from_utf8_unchecked",
521        description: r##"using a non UTF-8 literal in `std::str::from_utf8_unchecked`"##,
522        default_severity: Severity::Error,
523        warn_since: None,
524        deny_since: None,
525    },
526    Lint {
527        label: "invalid_macro_export_arguments",
528        description: r##""invalid_parameter" isn't a valid argument for `#[macro_export]`"##,
529        default_severity: Severity::Warning,
530        warn_since: None,
531        deny_since: None,
532    },
533    Lint {
534        label: "invalid_nan_comparisons",
535        description: r##"detects invalid floating point NaN comparisons"##,
536        default_severity: Severity::Warning,
537        warn_since: None,
538        deny_since: None,
539    },
540    Lint {
541        label: "invalid_reference_casting",
542        description: r##"casts of `&T` to `&mut T` without interior mutability"##,
543        default_severity: Severity::Error,
544        warn_since: None,
545        deny_since: None,
546    },
547    Lint {
548        label: "invalid_type_param_default",
549        description: r##"type parameter default erroneously allowed in invalid location"##,
550        default_severity: Severity::Error,
551        warn_since: None,
552        deny_since: None,
553    },
554    Lint {
555        label: "invalid_value",
556        description: r##"an invalid value is being created (such as a null reference)"##,
557        default_severity: Severity::Warning,
558        warn_since: None,
559        deny_since: None,
560    },
561    Lint {
562        label: "irrefutable_let_patterns",
563        description: r##"detects irrefutable patterns in `if let` and `while let` statements"##,
564        default_severity: Severity::Warning,
565        warn_since: None,
566        deny_since: None,
567    },
568    Lint {
569        label: "keyword_idents_2018",
570        description: r##"detects edition keywords being used as an identifier"##,
571        default_severity: Severity::Allow,
572        warn_since: None,
573        deny_since: None,
574    },
575    Lint {
576        label: "keyword_idents_2024",
577        description: r##"detects edition keywords being used as an identifier"##,
578        default_severity: Severity::Allow,
579        warn_since: None,
580        deny_since: None,
581    },
582    Lint {
583        label: "large_assignments",
584        description: r##"detects large moves or copies"##,
585        default_severity: Severity::Warning,
586        warn_since: None,
587        deny_since: None,
588    },
589    Lint {
590        label: "late_bound_lifetime_arguments",
591        description: r##"detects generic lifetime arguments in path segments with late bound lifetime parameters"##,
592        default_severity: Severity::Warning,
593        warn_since: None,
594        deny_since: None,
595    },
596    Lint {
597        label: "legacy_derive_helpers",
598        description: r##"detects derive helper attributes that are used before they are introduced"##,
599        default_severity: Severity::Warning,
600        warn_since: None,
601        deny_since: None,
602    },
603    Lint {
604        label: "let_underscore_drop",
605        description: r##"non-binding let on a type that has a destructor"##,
606        default_severity: Severity::Allow,
607        warn_since: None,
608        deny_since: None,
609    },
610    Lint {
611        label: "let_underscore_lock",
612        description: r##"non-binding let on a synchronization lock"##,
613        default_severity: Severity::Error,
614        warn_since: None,
615        deny_since: None,
616    },
617    Lint {
618        label: "long_running_const_eval",
619        description: r##"detects long const eval operations"##,
620        default_severity: Severity::Error,
621        warn_since: None,
622        deny_since: None,
623    },
624    Lint {
625        label: "lossy_provenance_casts",
626        description: r##"a lossy pointer to integer cast is used"##,
627        default_severity: Severity::Allow,
628        warn_since: None,
629        deny_since: None,
630    },
631    Lint {
632        label: "macro_expanded_macro_exports_accessed_by_absolute_paths",
633        description: r##"macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths"##,
634        default_severity: Severity::Error,
635        warn_since: None,
636        deny_since: None,
637    },
638    Lint {
639        label: "macro_use_extern_crate",
640        description: r##"the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system"##,
641        default_severity: Severity::Allow,
642        warn_since: None,
643        deny_since: None,
644    },
645    Lint {
646        label: "map_unit_fn",
647        description: r##"`Iterator::map` call that discard the iterator's values"##,
648        default_severity: Severity::Warning,
649        warn_since: None,
650        deny_since: None,
651    },
652    Lint {
653        label: "meta_variable_misuse",
654        description: r##"possible meta-variable misuse at macro definition"##,
655        default_severity: Severity::Allow,
656        warn_since: None,
657        deny_since: None,
658    },
659    Lint {
660        label: "missing_abi",
661        description: r##"No declared ABI for extern declaration"##,
662        default_severity: Severity::Allow,
663        warn_since: None,
664        deny_since: None,
665    },
666    Lint {
667        label: "missing_copy_implementations",
668        description: r##"detects potentially-forgotten implementations of `Copy`"##,
669        default_severity: Severity::Allow,
670        warn_since: None,
671        deny_since: None,
672    },
673    Lint {
674        label: "missing_debug_implementations",
675        description: r##"detects missing implementations of Debug"##,
676        default_severity: Severity::Allow,
677        warn_since: None,
678        deny_since: None,
679    },
680    Lint {
681        label: "missing_docs",
682        description: r##"detects missing documentation for public members"##,
683        default_severity: Severity::Allow,
684        warn_since: None,
685        deny_since: None,
686    },
687    Lint {
688        label: "missing_fragment_specifier",
689        description: r##"detects missing fragment specifiers in unused `macro_rules!` patterns"##,
690        default_severity: Severity::Error,
691        warn_since: None,
692        deny_since: None,
693    },
694    Lint {
695        label: "missing_unsafe_on_extern",
696        description: r##"detects missing unsafe keyword on extern declarations"##,
697        default_severity: Severity::Allow,
698        warn_since: None,
699        deny_since: None,
700    },
701    Lint {
702        label: "mixed_script_confusables",
703        description: r##"detects Unicode scripts whose mixed script confusables codepoints are solely used"##,
704        default_severity: Severity::Warning,
705        warn_since: None,
706        deny_since: None,
707    },
708    Lint {
709        label: "multiple_supertrait_upcastable",
710        description: r##"detect when a dyn-compatible trait has multiple supertraits"##,
711        default_severity: Severity::Allow,
712        warn_since: None,
713        deny_since: None,
714    },
715    Lint {
716        label: "must_not_suspend",
717        description: r##"use of a `#[must_not_suspend]` value across a yield point"##,
718        default_severity: Severity::Allow,
719        warn_since: None,
720        deny_since: None,
721    },
722    Lint {
723        label: "mutable_transmutes",
724        description: r##"transmuting &T to &mut T is undefined behavior, even if the reference is unused"##,
725        default_severity: Severity::Error,
726        warn_since: None,
727        deny_since: None,
728    },
729    Lint {
730        label: "named_arguments_used_positionally",
731        description: r##"named arguments in format used positionally"##,
732        default_severity: Severity::Warning,
733        warn_since: None,
734        deny_since: None,
735    },
736    Lint {
737        label: "named_asm_labels",
738        description: r##"named labels in inline assembly"##,
739        default_severity: Severity::Error,
740        warn_since: None,
741        deny_since: None,
742    },
743    Lint {
744        label: "never_type_fallback_flowing_into_unsafe",
745        description: r##"never type fallback affecting unsafe function calls"##,
746        default_severity: Severity::Warning,
747        warn_since: None,
748        deny_since: Some(Edition::Edition2024),
749    },
750    Lint {
751        label: "no_mangle_const_items",
752        description: r##"const items will not have their symbols exported"##,
753        default_severity: Severity::Error,
754        warn_since: None,
755        deny_since: None,
756    },
757    Lint {
758        label: "no_mangle_generic_items",
759        description: r##"generic items must be mangled"##,
760        default_severity: Severity::Warning,
761        warn_since: None,
762        deny_since: None,
763    },
764    Lint {
765        label: "non_ascii_idents",
766        description: r##"detects non-ASCII identifiers"##,
767        default_severity: Severity::Allow,
768        warn_since: None,
769        deny_since: None,
770    },
771    Lint {
772        label: "non_camel_case_types",
773        description: r##"types, variants, traits and type parameters should have camel case names"##,
774        default_severity: Severity::Warning,
775        warn_since: None,
776        deny_since: None,
777    },
778    Lint {
779        label: "non_contiguous_range_endpoints",
780        description: r##"detects off-by-one errors with exclusive range patterns"##,
781        default_severity: Severity::Warning,
782        warn_since: None,
783        deny_since: None,
784    },
785    Lint {
786        label: "non_exhaustive_omitted_patterns",
787        description: r##"detect when patterns of types marked `non_exhaustive` are missed"##,
788        default_severity: Severity::Allow,
789        warn_since: None,
790        deny_since: None,
791    },
792    Lint {
793        label: "non_fmt_panics",
794        description: r##"detect single-argument panic!() invocations in which the argument is not a format string"##,
795        default_severity: Severity::Warning,
796        warn_since: None,
797        deny_since: None,
798    },
799    Lint {
800        label: "non_local_definitions",
801        description: r##"checks for non-local definitions"##,
802        default_severity: Severity::Warning,
803        warn_since: None,
804        deny_since: None,
805    },
806    Lint {
807        label: "non_shorthand_field_patterns",
808        description: r##"using `Struct { x: x }` instead of `Struct { x }` in a pattern"##,
809        default_severity: Severity::Warning,
810        warn_since: None,
811        deny_since: None,
812    },
813    Lint {
814        label: "non_snake_case",
815        description: r##"variables, methods, functions, lifetime parameters and modules should have snake case names"##,
816        default_severity: Severity::Warning,
817        warn_since: None,
818        deny_since: None,
819    },
820    Lint {
821        label: "non_upper_case_globals",
822        description: r##"static constants should have uppercase identifiers"##,
823        default_severity: Severity::Warning,
824        warn_since: None,
825        deny_since: None,
826    },
827    Lint {
828        label: "noop_method_call",
829        description: r##"detects the use of well-known noop methods"##,
830        default_severity: Severity::Warning,
831        warn_since: None,
832        deny_since: None,
833    },
834    Lint {
835        label: "opaque_hidden_inferred_bound",
836        description: r##"detects the use of nested `impl Trait` types in associated type bounds that are not general enough"##,
837        default_severity: Severity::Warning,
838        warn_since: None,
839        deny_since: None,
840    },
841    Lint {
842        label: "order_dependent_trait_objects",
843        description: r##"trait-object types were treated as different depending on marker-trait order"##,
844        default_severity: Severity::Error,
845        warn_since: None,
846        deny_since: None,
847    },
848    Lint {
849        label: "out_of_scope_macro_calls",
850        description: r##"detects out of scope calls to `macro_rules` in key-value attributes"##,
851        default_severity: Severity::Warning,
852        warn_since: None,
853        deny_since: None,
854    },
855    Lint {
856        label: "overflowing_literals",
857        description: r##"literal out of range for its type"##,
858        default_severity: Severity::Error,
859        warn_since: None,
860        deny_since: None,
861    },
862    Lint {
863        label: "overlapping_range_endpoints",
864        description: r##"detects range patterns with overlapping endpoints"##,
865        default_severity: Severity::Warning,
866        warn_since: None,
867        deny_since: None,
868    },
869    Lint {
870        label: "path_statements",
871        description: r##"path statements with no effect"##,
872        default_severity: Severity::Warning,
873        warn_since: None,
874        deny_since: None,
875    },
876    Lint {
877        label: "patterns_in_fns_without_body",
878        description: r##"patterns in functions without body were erroneously allowed"##,
879        default_severity: Severity::Error,
880        warn_since: None,
881        deny_since: None,
882    },
883    Lint {
884        label: "private_bounds",
885        description: r##"private type in secondary interface of an item"##,
886        default_severity: Severity::Warning,
887        warn_since: None,
888        deny_since: None,
889    },
890    Lint {
891        label: "private_interfaces",
892        description: r##"private type in primary interface of an item"##,
893        default_severity: Severity::Warning,
894        warn_since: None,
895        deny_since: None,
896    },
897    Lint {
898        label: "proc_macro_derive_resolution_fallback",
899        description: r##"detects proc macro derives using inaccessible names from parent modules"##,
900        default_severity: Severity::Error,
901        warn_since: None,
902        deny_since: None,
903    },
904    Lint {
905        label: "ptr_cast_add_auto_to_object",
906        description: r##"detects `as` casts from pointers to `dyn Trait` to pointers to `dyn Trait + Auto`"##,
907        default_severity: Severity::Warning,
908        warn_since: None,
909        deny_since: None,
910    },
911    Lint {
912        label: "ptr_to_integer_transmute_in_consts",
913        description: r##"detects pointer to integer transmutes in const functions and associated constants"##,
914        default_severity: Severity::Warning,
915        warn_since: None,
916        deny_since: None,
917    },
918    Lint {
919        label: "pub_use_of_private_extern_crate",
920        description: r##"detect public re-exports of private extern crates"##,
921        default_severity: Severity::Error,
922        warn_since: None,
923        deny_since: None,
924    },
925    Lint {
926        label: "redundant_imports",
927        description: r##"imports that are redundant due to being imported already"##,
928        default_severity: Severity::Allow,
929        warn_since: None,
930        deny_since: None,
931    },
932    Lint {
933        label: "redundant_lifetimes",
934        description: r##"detects lifetime parameters that are redundant because they are equal to some other named lifetime"##,
935        default_severity: Severity::Allow,
936        warn_since: None,
937        deny_since: None,
938    },
939    Lint {
940        label: "redundant_semicolons",
941        description: r##"detects unnecessary trailing semicolons"##,
942        default_severity: Severity::Warning,
943        warn_since: None,
944        deny_since: None,
945    },
946    Lint {
947        label: "refining_impl_trait_internal",
948        description: r##"impl trait in impl method signature does not match trait method signature"##,
949        default_severity: Severity::Warning,
950        warn_since: None,
951        deny_since: None,
952    },
953    Lint {
954        label: "refining_impl_trait_reachable",
955        description: r##"impl trait in impl method signature does not match trait method signature"##,
956        default_severity: Severity::Warning,
957        warn_since: None,
958        deny_since: None,
959    },
960    Lint {
961        label: "renamed_and_removed_lints",
962        description: r##"lints that have been renamed or removed"##,
963        default_severity: Severity::Warning,
964        warn_since: None,
965        deny_since: None,
966    },
967    Lint {
968        label: "repr_transparent_external_private_fields",
969        description: r##"transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields"##,
970        default_severity: Severity::Warning,
971        warn_since: None,
972        deny_since: None,
973    },
974    Lint {
975        label: "rust_2021_incompatible_closure_captures",
976        description: r##"detects closures affected by Rust 2021 changes"##,
977        default_severity: Severity::Allow,
978        warn_since: None,
979        deny_since: None,
980    },
981    Lint {
982        label: "rust_2021_incompatible_or_patterns",
983        description: r##"detects usage of old versions of or-patterns"##,
984        default_severity: Severity::Allow,
985        warn_since: None,
986        deny_since: None,
987    },
988    Lint {
989        label: "rust_2021_prefixes_incompatible_syntax",
990        description: r##"identifiers that will be parsed as a prefix in Rust 2021"##,
991        default_severity: Severity::Allow,
992        warn_since: None,
993        deny_since: None,
994    },
995    Lint {
996        label: "rust_2021_prelude_collisions",
997        description: r##"detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions"##,
998        default_severity: Severity::Allow,
999        warn_since: None,
1000        deny_since: None,
1001    },
1002    Lint {
1003        label: "rust_2024_guarded_string_incompatible_syntax",
1004        description: r##"will be parsed as a guarded string in Rust 2024"##,
1005        default_severity: Severity::Allow,
1006        warn_since: None,
1007        deny_since: None,
1008    },
1009    Lint {
1010        label: "rust_2024_incompatible_pat",
1011        description: r##"detects patterns whose meaning will change in Rust 2024"##,
1012        default_severity: Severity::Allow,
1013        warn_since: None,
1014        deny_since: None,
1015    },
1016    Lint {
1017        label: "rust_2024_prelude_collisions",
1018        description: r##"detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions"##,
1019        default_severity: Severity::Allow,
1020        warn_since: None,
1021        deny_since: None,
1022    },
1023    Lint {
1024        label: "self_constructor_from_outer_item",
1025        description: r##"detect unsupported use of `Self` from outer item"##,
1026        default_severity: Severity::Warning,
1027        warn_since: None,
1028        deny_since: None,
1029    },
1030    Lint {
1031        label: "semicolon_in_expressions_from_macros",
1032        description: r##"trailing semicolon in macro body used as expression"##,
1033        default_severity: Severity::Warning,
1034        warn_since: None,
1035        deny_since: None,
1036    },
1037    Lint {
1038        label: "single_use_lifetimes",
1039        description: r##"detects lifetime parameters that are only used once"##,
1040        default_severity: Severity::Allow,
1041        warn_since: None,
1042        deny_since: None,
1043    },
1044    Lint {
1045        label: "soft_unstable",
1046        description: r##"a feature gate that doesn't break dependent crates"##,
1047        default_severity: Severity::Error,
1048        warn_since: None,
1049        deny_since: None,
1050    },
1051    Lint {
1052        label: "special_module_name",
1053        description: r##"module declarations for files with a special meaning"##,
1054        default_severity: Severity::Warning,
1055        warn_since: None,
1056        deny_since: None,
1057    },
1058    Lint {
1059        label: "stable_features",
1060        description: r##"stable features found in `#[feature]` directive"##,
1061        default_severity: Severity::Warning,
1062        warn_since: None,
1063        deny_since: None,
1064    },
1065    Lint {
1066        label: "static_mut_refs",
1067        description: r##"shared references or mutable references of mutable static is discouraged"##,
1068        default_severity: Severity::Warning,
1069        warn_since: None,
1070        deny_since: Some(Edition::Edition2024),
1071    },
1072    Lint {
1073        label: "suspicious_double_ref_op",
1074        description: r##"suspicious call of trait method on `&&T`"##,
1075        default_severity: Severity::Warning,
1076        warn_since: None,
1077        deny_since: None,
1078    },
1079    Lint {
1080        label: "tail_expr_drop_order",
1081        description: r##"Detect and warn on significant change in drop order in tail expression location"##,
1082        default_severity: Severity::Allow,
1083        warn_since: None,
1084        deny_since: None,
1085    },
1086    Lint {
1087        label: "test_unstable_lint",
1088        description: r##"this unstable lint is only for testing"##,
1089        default_severity: Severity::Error,
1090        warn_since: None,
1091        deny_since: None,
1092    },
1093    Lint {
1094        label: "text_direction_codepoint_in_comment",
1095        description: r##"invisible directionality-changing codepoints in comment"##,
1096        default_severity: Severity::Error,
1097        warn_since: None,
1098        deny_since: None,
1099    },
1100    Lint {
1101        label: "text_direction_codepoint_in_literal",
1102        description: r##"detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows"##,
1103        default_severity: Severity::Error,
1104        warn_since: None,
1105        deny_since: None,
1106    },
1107    Lint {
1108        label: "trivial_bounds",
1109        description: r##"these bounds don't depend on an type parameters"##,
1110        default_severity: Severity::Warning,
1111        warn_since: None,
1112        deny_since: None,
1113    },
1114    Lint {
1115        label: "trivial_casts",
1116        description: r##"detects trivial casts which could be removed"##,
1117        default_severity: Severity::Allow,
1118        warn_since: None,
1119        deny_since: None,
1120    },
1121    Lint {
1122        label: "trivial_numeric_casts",
1123        description: r##"detects trivial casts of numeric types which could be removed"##,
1124        default_severity: Severity::Allow,
1125        warn_since: None,
1126        deny_since: None,
1127    },
1128    Lint {
1129        label: "type_alias_bounds",
1130        description: r##"bounds in type aliases are not enforced"##,
1131        default_severity: Severity::Warning,
1132        warn_since: None,
1133        deny_since: None,
1134    },
1135    Lint {
1136        label: "tyvar_behind_raw_pointer",
1137        description: r##"raw pointer to an inference variable"##,
1138        default_severity: Severity::Warning,
1139        warn_since: None,
1140        deny_since: None,
1141    },
1142    Lint {
1143        label: "uncommon_codepoints",
1144        description: r##"detects uncommon Unicode codepoints in identifiers"##,
1145        default_severity: Severity::Warning,
1146        warn_since: None,
1147        deny_since: None,
1148    },
1149    Lint {
1150        label: "unconditional_panic",
1151        description: r##"operation will cause a panic at runtime"##,
1152        default_severity: Severity::Error,
1153        warn_since: None,
1154        deny_since: None,
1155    },
1156    Lint {
1157        label: "unconditional_recursion",
1158        description: r##"functions that cannot return without calling themselves"##,
1159        default_severity: Severity::Warning,
1160        warn_since: None,
1161        deny_since: None,
1162    },
1163    Lint {
1164        label: "uncovered_param_in_projection",
1165        description: r##"impl contains type parameters that are not covered"##,
1166        default_severity: Severity::Warning,
1167        warn_since: None,
1168        deny_since: None,
1169    },
1170    Lint {
1171        label: "undefined_naked_function_abi",
1172        description: r##"undefined naked function ABI"##,
1173        default_severity: Severity::Warning,
1174        warn_since: None,
1175        deny_since: None,
1176    },
1177    Lint {
1178        label: "undropped_manually_drops",
1179        description: r##"calls to `std::mem::drop` with `std::mem::ManuallyDrop` instead of it's inner value"##,
1180        default_severity: Severity::Error,
1181        warn_since: None,
1182        deny_since: None,
1183    },
1184    Lint {
1185        label: "unexpected_cfgs",
1186        description: r##"detects unexpected names and values in `#[cfg]` conditions"##,
1187        default_severity: Severity::Warning,
1188        warn_since: None,
1189        deny_since: None,
1190    },
1191    Lint {
1192        label: "unfulfilled_lint_expectations",
1193        description: r##"unfulfilled lint expectation"##,
1194        default_severity: Severity::Warning,
1195        warn_since: None,
1196        deny_since: None,
1197    },
1198    Lint {
1199        label: "ungated_async_fn_track_caller",
1200        description: r##"enabling track_caller on an async fn is a no-op unless the async_fn_track_caller feature is enabled"##,
1201        default_severity: Severity::Warning,
1202        warn_since: None,
1203        deny_since: None,
1204    },
1205    Lint {
1206        label: "uninhabited_static",
1207        description: r##"uninhabited static"##,
1208        default_severity: Severity::Warning,
1209        warn_since: None,
1210        deny_since: None,
1211    },
1212    Lint {
1213        label: "unit_bindings",
1214        description: r##"binding is useless because it has the unit `()` type"##,
1215        default_severity: Severity::Allow,
1216        warn_since: None,
1217        deny_since: None,
1218    },
1219    Lint {
1220        label: "unknown_crate_types",
1221        description: r##"unknown crate type found in `#[crate_type]` directive"##,
1222        default_severity: Severity::Error,
1223        warn_since: None,
1224        deny_since: None,
1225    },
1226    Lint {
1227        label: "unknown_lints",
1228        description: r##"unrecognized lint attribute"##,
1229        default_severity: Severity::Warning,
1230        warn_since: None,
1231        deny_since: None,
1232    },
1233    Lint {
1234        label: "unknown_or_malformed_diagnostic_attributes",
1235        description: r##"unrecognized or malformed diagnostic attribute"##,
1236        default_severity: Severity::Warning,
1237        warn_since: None,
1238        deny_since: None,
1239    },
1240    Lint {
1241        label: "unnameable_test_items",
1242        description: r##"detects an item that cannot be named being marked as `#[test_case]`"##,
1243        default_severity: Severity::Warning,
1244        warn_since: None,
1245        deny_since: None,
1246    },
1247    Lint {
1248        label: "unnameable_types",
1249        description: r##"effective visibility of a type is larger than the area in which it can be named"##,
1250        default_severity: Severity::Allow,
1251        warn_since: None,
1252        deny_since: None,
1253    },
1254    Lint {
1255        label: "unqualified_local_imports",
1256        description: r##"`use` of a local item without leading `self::`, `super::`, or `crate::`"##,
1257        default_severity: Severity::Allow,
1258        warn_since: None,
1259        deny_since: None,
1260    },
1261    Lint {
1262        label: "unreachable_code",
1263        description: r##"detects unreachable code paths"##,
1264        default_severity: Severity::Warning,
1265        warn_since: None,
1266        deny_since: None,
1267    },
1268    Lint {
1269        label: "unreachable_patterns",
1270        description: r##"detects unreachable patterns"##,
1271        default_severity: Severity::Warning,
1272        warn_since: None,
1273        deny_since: None,
1274    },
1275    Lint {
1276        label: "unreachable_pub",
1277        description: r##"`pub` items not reachable from crate root"##,
1278        default_severity: Severity::Allow,
1279        warn_since: None,
1280        deny_since: None,
1281    },
1282    Lint {
1283        label: "unsafe_attr_outside_unsafe",
1284        description: r##"detects unsafe attributes outside of unsafe"##,
1285        default_severity: Severity::Allow,
1286        warn_since: None,
1287        deny_since: None,
1288    },
1289    Lint {
1290        label: "unsafe_code",
1291        description: r##"usage of `unsafe` code and other potentially unsound constructs"##,
1292        default_severity: Severity::Allow,
1293        warn_since: None,
1294        deny_since: None,
1295    },
1296    Lint {
1297        label: "unsafe_op_in_unsafe_fn",
1298        description: r##"unsafe operations in unsafe functions without an explicit unsafe block are deprecated"##,
1299        default_severity: Severity::Allow,
1300        warn_since: Some(Edition::Edition2024),
1301        deny_since: None,
1302    },
1303    Lint {
1304        label: "unstable_features",
1305        description: r##"enabling unstable features"##,
1306        default_severity: Severity::Allow,
1307        warn_since: None,
1308        deny_since: None,
1309    },
1310    Lint {
1311        label: "unstable_name_collisions",
1312        description: r##"detects name collision with an existing but unstable method"##,
1313        default_severity: Severity::Warning,
1314        warn_since: None,
1315        deny_since: None,
1316    },
1317    Lint {
1318        label: "unstable_syntax_pre_expansion",
1319        description: r##"unstable syntax can change at any point in the future, causing a hard error!"##,
1320        default_severity: Severity::Warning,
1321        warn_since: None,
1322        deny_since: None,
1323    },
1324    Lint {
1325        label: "unsupported_fn_ptr_calling_conventions",
1326        description: r##"use of unsupported calling convention for function pointer"##,
1327        default_severity: Severity::Warning,
1328        warn_since: None,
1329        deny_since: None,
1330    },
1331    Lint {
1332        label: "unused_allocation",
1333        description: r##"detects unnecessary allocations that can be eliminated"##,
1334        default_severity: Severity::Warning,
1335        warn_since: None,
1336        deny_since: None,
1337    },
1338    Lint {
1339        label: "unused_assignments",
1340        description: r##"detect assignments that will never be read"##,
1341        default_severity: Severity::Warning,
1342        warn_since: None,
1343        deny_since: None,
1344    },
1345    Lint {
1346        label: "unused_associated_type_bounds",
1347        description: r##"detects unused `Foo = Bar` bounds in `dyn Trait<Foo = Bar>`"##,
1348        default_severity: Severity::Warning,
1349        warn_since: None,
1350        deny_since: None,
1351    },
1352    Lint {
1353        label: "unused_attributes",
1354        description: r##"detects attributes that were not used by the compiler"##,
1355        default_severity: Severity::Warning,
1356        warn_since: None,
1357        deny_since: None,
1358    },
1359    Lint {
1360        label: "unused_braces",
1361        description: r##"unnecessary braces around an expression"##,
1362        default_severity: Severity::Warning,
1363        warn_since: None,
1364        deny_since: None,
1365    },
1366    Lint {
1367        label: "unused_comparisons",
1368        description: r##"comparisons made useless by limits of the types involved"##,
1369        default_severity: Severity::Warning,
1370        warn_since: None,
1371        deny_since: None,
1372    },
1373    Lint {
1374        label: "unused_crate_dependencies",
1375        description: r##"crate dependencies that are never used"##,
1376        default_severity: Severity::Allow,
1377        warn_since: None,
1378        deny_since: None,
1379    },
1380    Lint {
1381        label: "unused_doc_comments",
1382        description: r##"detects doc comments that aren't used by rustdoc"##,
1383        default_severity: Severity::Warning,
1384        warn_since: None,
1385        deny_since: None,
1386    },
1387    Lint {
1388        label: "unused_extern_crates",
1389        description: r##"extern crates that are never used"##,
1390        default_severity: Severity::Allow,
1391        warn_since: None,
1392        deny_since: None,
1393    },
1394    Lint {
1395        label: "unused_features",
1396        description: r##"unused features found in crate-level `#[feature]` directives"##,
1397        default_severity: Severity::Warning,
1398        warn_since: None,
1399        deny_since: None,
1400    },
1401    Lint {
1402        label: "unused_import_braces",
1403        description: r##"unnecessary braces around an imported item"##,
1404        default_severity: Severity::Allow,
1405        warn_since: None,
1406        deny_since: None,
1407    },
1408    Lint {
1409        label: "unused_imports",
1410        description: r##"imports that are never used"##,
1411        default_severity: Severity::Warning,
1412        warn_since: None,
1413        deny_since: None,
1414    },
1415    Lint {
1416        label: "unused_labels",
1417        description: r##"detects labels that are never used"##,
1418        default_severity: Severity::Warning,
1419        warn_since: None,
1420        deny_since: None,
1421    },
1422    Lint {
1423        label: "unused_lifetimes",
1424        description: r##"detects lifetime parameters that are never used"##,
1425        default_severity: Severity::Allow,
1426        warn_since: None,
1427        deny_since: None,
1428    },
1429    Lint {
1430        label: "unused_macro_rules",
1431        description: r##"detects macro rules that were not used"##,
1432        default_severity: Severity::Allow,
1433        warn_since: None,
1434        deny_since: None,
1435    },
1436    Lint {
1437        label: "unused_macros",
1438        description: r##"detects macros that were not used"##,
1439        default_severity: Severity::Warning,
1440        warn_since: None,
1441        deny_since: None,
1442    },
1443    Lint {
1444        label: "unused_must_use",
1445        description: r##"unused result of a type flagged as `#[must_use]`"##,
1446        default_severity: Severity::Warning,
1447        warn_since: None,
1448        deny_since: None,
1449    },
1450    Lint {
1451        label: "unused_mut",
1452        description: r##"detect mut variables which don't need to be mutable"##,
1453        default_severity: Severity::Warning,
1454        warn_since: None,
1455        deny_since: None,
1456    },
1457    Lint {
1458        label: "unused_parens",
1459        description: r##"`if`, `match`, `while` and `return` do not need parentheses"##,
1460        default_severity: Severity::Warning,
1461        warn_since: None,
1462        deny_since: None,
1463    },
1464    Lint {
1465        label: "unused_qualifications",
1466        description: r##"detects unnecessarily qualified names"##,
1467        default_severity: Severity::Allow,
1468        warn_since: None,
1469        deny_since: None,
1470    },
1471    Lint {
1472        label: "unused_results",
1473        description: r##"unused result of an expression in a statement"##,
1474        default_severity: Severity::Allow,
1475        warn_since: None,
1476        deny_since: None,
1477    },
1478    Lint {
1479        label: "unused_unsafe",
1480        description: r##"unnecessary use of an `unsafe` block"##,
1481        default_severity: Severity::Warning,
1482        warn_since: None,
1483        deny_since: None,
1484    },
1485    Lint {
1486        label: "unused_variables",
1487        description: r##"detect variables which are not used in any way"##,
1488        default_severity: Severity::Warning,
1489        warn_since: None,
1490        deny_since: None,
1491    },
1492    Lint {
1493        label: "useless_deprecated",
1494        description: r##"detects deprecation attributes with no effect"##,
1495        default_severity: Severity::Error,
1496        warn_since: None,
1497        deny_since: None,
1498    },
1499    Lint {
1500        label: "useless_ptr_null_checks",
1501        description: r##"useless checking of non-null-typed pointer"##,
1502        default_severity: Severity::Warning,
1503        warn_since: None,
1504        deny_since: None,
1505    },
1506    Lint {
1507        label: "variant_size_differences",
1508        description: r##"detects enums with widely varying variant sizes"##,
1509        default_severity: Severity::Allow,
1510        warn_since: None,
1511        deny_since: None,
1512    },
1513    Lint {
1514        label: "warnings",
1515        description: r##"mass-change the level for lints which produce warnings"##,
1516        default_severity: Severity::Warning,
1517        warn_since: None,
1518        deny_since: None,
1519    },
1520    Lint {
1521        label: "wasm_c_abi",
1522        description: r##"detects dependencies that are incompatible with the Wasm C ABI"##,
1523        default_severity: Severity::Error,
1524        warn_since: None,
1525        deny_since: None,
1526    },
1527    Lint {
1528        label: "while_true",
1529        description: r##"suggest using `loop { }` instead of `while true { }`"##,
1530        default_severity: Severity::Warning,
1531        warn_since: None,
1532        deny_since: None,
1533    },
1534    Lint {
1535        label: "deprecated_safe",
1536        description: r##"lint group for: deprecated-safe-2024"##,
1537        default_severity: Severity::Allow,
1538        warn_since: None,
1539        deny_since: None,
1540    },
1541    Lint {
1542        label: "future_incompatible",
1543        description: r##"lint group for: deref-into-dyn-supertrait, abi-unsupported-vector-types, ambiguous-associated-items, ambiguous-glob-imports, cenum-impl-drop-cast, coherence-leak-check, conflicting-repr-hints, const-evaluatable-unchecked, elided-lifetimes-in-associated-constant, forbidden-lint-groups, ill-formed-attribute-input, invalid-type-param-default, late-bound-lifetime-arguments, legacy-derive-helpers, macro-expanded-macro-exports-accessed-by-absolute-paths, missing-fragment-specifier, order-dependent-trait-objects, out-of-scope-macro-calls, patterns-in-fns-without-body, proc-macro-derive-resolution-fallback, ptr-cast-add-auto-to-object, pub-use-of-private-extern-crate, repr-transparent-external-private-fields, self-constructor-from-outer-item, semicolon-in-expressions-from-macros, soft-unstable, uncovered-param-in-projection, uninhabited-static, unstable-name-collisions, unstable-syntax-pre-expansion, unsupported-fn-ptr-calling-conventions, wasm-c-abi"##,
1544        default_severity: Severity::Allow,
1545        warn_since: None,
1546        deny_since: None,
1547    },
1548    Lint {
1549        label: "keyword_idents",
1550        description: r##"lint group for: keyword-idents-2018, keyword-idents-2024"##,
1551        default_severity: Severity::Allow,
1552        warn_since: None,
1553        deny_since: None,
1554    },
1555    Lint {
1556        label: "let_underscore",
1557        description: r##"lint group for: let-underscore-drop, let-underscore-lock"##,
1558        default_severity: Severity::Allow,
1559        warn_since: None,
1560        deny_since: None,
1561    },
1562    Lint {
1563        label: "nonstandard_style",
1564        description: r##"lint group for: non-camel-case-types, non-snake-case, non-upper-case-globals"##,
1565        default_severity: Severity::Allow,
1566        warn_since: None,
1567        deny_since: None,
1568    },
1569    Lint {
1570        label: "refining_impl_trait",
1571        description: r##"lint group for: refining-impl-trait-reachable, refining-impl-trait-internal"##,
1572        default_severity: Severity::Allow,
1573        warn_since: None,
1574        deny_since: None,
1575    },
1576    Lint {
1577        label: "rust_2018_compatibility",
1578        description: r##"lint group for: keyword-idents-2018, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer"##,
1579        default_severity: Severity::Allow,
1580        warn_since: None,
1581        deny_since: None,
1582    },
1583    Lint {
1584        label: "rust_2018_idioms",
1585        description: r##"lint group for: bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements"##,
1586        default_severity: Severity::Allow,
1587        warn_since: None,
1588        deny_since: None,
1589    },
1590    Lint {
1591        label: "rust_2021_compatibility",
1592        description: r##"lint group for: ellipsis-inclusive-range-patterns, array-into-iter, non-fmt-panics, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prefixes-incompatible-syntax, rust-2021-prelude-collisions"##,
1593        default_severity: Severity::Allow,
1594        warn_since: None,
1595        deny_since: None,
1596    },
1597    Lint {
1598        label: "rust_2024_compatibility",
1599        description: r##"lint group for: keyword-idents-2024, edition-2024-expr-fragment-specifier, boxed-slice-into-iter, impl-trait-overcaptures, if-let-rescope, static-mut-refs, dependency-on-unit-never-type-fallback, deprecated-safe-2024, missing-unsafe-on-extern, never-type-fallback-flowing-into-unsafe, 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"##,
1600        default_severity: Severity::Allow,
1601        warn_since: None,
1602        deny_since: None,
1603    },
1604    Lint {
1605        label: "unused",
1606        description: r##"lint group for: unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, 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"##,
1607        default_severity: Severity::Allow,
1608        warn_since: None,
1609        deny_since: None,
1610    },
1611    Lint {
1612        label: "warnings",
1613        description: r##"lint group for: all lints that are set to issue warnings"##,
1614        default_severity: Severity::Allow,
1615        warn_since: None,
1616        deny_since: None,
1617    },
1618];
1619
1620pub const DEFAULT_LINT_GROUPS: &[LintGroup] = &[
1621    LintGroup {
1622        lint: Lint {
1623            label: "deprecated_safe",
1624            description: r##"lint group for: deprecated-safe-2024"##,
1625            default_severity: Severity::Allow,
1626            warn_since: None,
1627            deny_since: None,
1628        },
1629        children: &["deprecated_safe_2024"],
1630    },
1631    LintGroup {
1632        lint: Lint {
1633            label: "future_incompatible",
1634            description: r##"lint group for: deref-into-dyn-supertrait, abi-unsupported-vector-types, ambiguous-associated-items, ambiguous-glob-imports, cenum-impl-drop-cast, coherence-leak-check, conflicting-repr-hints, const-evaluatable-unchecked, elided-lifetimes-in-associated-constant, forbidden-lint-groups, ill-formed-attribute-input, invalid-type-param-default, late-bound-lifetime-arguments, legacy-derive-helpers, macro-expanded-macro-exports-accessed-by-absolute-paths, missing-fragment-specifier, order-dependent-trait-objects, out-of-scope-macro-calls, patterns-in-fns-without-body, proc-macro-derive-resolution-fallback, ptr-cast-add-auto-to-object, pub-use-of-private-extern-crate, repr-transparent-external-private-fields, self-constructor-from-outer-item, semicolon-in-expressions-from-macros, soft-unstable, uncovered-param-in-projection, uninhabited-static, unstable-name-collisions, unstable-syntax-pre-expansion, unsupported-fn-ptr-calling-conventions, wasm-c-abi"##,
1635            default_severity: Severity::Allow,
1636            warn_since: None,
1637            deny_since: None,
1638        },
1639        children: &[
1640            "deref_into_dyn_supertrait",
1641            "abi_unsupported_vector_types",
1642            "ambiguous_associated_items",
1643            "ambiguous_glob_imports",
1644            "cenum_impl_drop_cast",
1645            "coherence_leak_check",
1646            "conflicting_repr_hints",
1647            "const_evaluatable_unchecked",
1648            "elided_lifetimes_in_associated_constant",
1649            "forbidden_lint_groups",
1650            "ill_formed_attribute_input",
1651            "invalid_type_param_default",
1652            "late_bound_lifetime_arguments",
1653            "legacy_derive_helpers",
1654            "macro_expanded_macro_exports_accessed_by_absolute_paths",
1655            "missing_fragment_specifier",
1656            "order_dependent_trait_objects",
1657            "out_of_scope_macro_calls",
1658            "patterns_in_fns_without_body",
1659            "proc_macro_derive_resolution_fallback",
1660            "ptr_cast_add_auto_to_object",
1661            "pub_use_of_private_extern_crate",
1662            "repr_transparent_external_private_fields",
1663            "self_constructor_from_outer_item",
1664            "semicolon_in_expressions_from_macros",
1665            "soft_unstable",
1666            "uncovered_param_in_projection",
1667            "uninhabited_static",
1668            "unstable_name_collisions",
1669            "unstable_syntax_pre_expansion",
1670            "unsupported_fn_ptr_calling_conventions",
1671            "wasm_c_abi",
1672        ],
1673    },
1674    LintGroup {
1675        lint: Lint {
1676            label: "keyword_idents",
1677            description: r##"lint group for: keyword-idents-2018, keyword-idents-2024"##,
1678            default_severity: Severity::Allow,
1679            warn_since: None,
1680            deny_since: None,
1681        },
1682        children: &["keyword_idents_2018", "keyword_idents_2024"],
1683    },
1684    LintGroup {
1685        lint: Lint {
1686            label: "let_underscore",
1687            description: r##"lint group for: let-underscore-drop, let-underscore-lock"##,
1688            default_severity: Severity::Allow,
1689            warn_since: None,
1690            deny_since: None,
1691        },
1692        children: &["let_underscore_drop", "let_underscore_lock"],
1693    },
1694    LintGroup {
1695        lint: Lint {
1696            label: "nonstandard_style",
1697            description: r##"lint group for: non-camel-case-types, non-snake-case, non-upper-case-globals"##,
1698            default_severity: Severity::Allow,
1699            warn_since: None,
1700            deny_since: None,
1701        },
1702        children: &["non_camel_case_types", "non_snake_case", "non_upper_case_globals"],
1703    },
1704    LintGroup {
1705        lint: Lint {
1706            label: "refining_impl_trait",
1707            description: r##"lint group for: refining-impl-trait-reachable, refining-impl-trait-internal"##,
1708            default_severity: Severity::Allow,
1709            warn_since: None,
1710            deny_since: None,
1711        },
1712        children: &["refining_impl_trait_reachable", "refining_impl_trait_internal"],
1713    },
1714    LintGroup {
1715        lint: Lint {
1716            label: "rust_2018_compatibility",
1717            description: r##"lint group for: keyword-idents-2018, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer"##,
1718            default_severity: Severity::Allow,
1719            warn_since: None,
1720            deny_since: None,
1721        },
1722        children: &[
1723            "keyword_idents_2018",
1724            "anonymous_parameters",
1725            "absolute_paths_not_starting_with_crate",
1726            "tyvar_behind_raw_pointer",
1727        ],
1728    },
1729    LintGroup {
1730        lint: Lint {
1731            label: "rust_2018_idioms",
1732            description: r##"lint group for: bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements"##,
1733            default_severity: Severity::Allow,
1734            warn_since: None,
1735            deny_since: None,
1736        },
1737        children: &[
1738            "bare_trait_objects",
1739            "unused_extern_crates",
1740            "ellipsis_inclusive_range_patterns",
1741            "elided_lifetimes_in_paths",
1742            "explicit_outlives_requirements",
1743        ],
1744    },
1745    LintGroup {
1746        lint: Lint {
1747            label: "rust_2021_compatibility",
1748            description: r##"lint group for: ellipsis-inclusive-range-patterns, array-into-iter, non-fmt-panics, bare-trait-objects, rust-2021-incompatible-closure-captures, rust-2021-incompatible-or-patterns, rust-2021-prefixes-incompatible-syntax, rust-2021-prelude-collisions"##,
1749            default_severity: Severity::Allow,
1750            warn_since: None,
1751            deny_since: None,
1752        },
1753        children: &[
1754            "ellipsis_inclusive_range_patterns",
1755            "array_into_iter",
1756            "non_fmt_panics",
1757            "bare_trait_objects",
1758            "rust_2021_incompatible_closure_captures",
1759            "rust_2021_incompatible_or_patterns",
1760            "rust_2021_prefixes_incompatible_syntax",
1761            "rust_2021_prelude_collisions",
1762        ],
1763    },
1764    LintGroup {
1765        lint: Lint {
1766            label: "rust_2024_compatibility",
1767            description: r##"lint group for: keyword-idents-2024, edition-2024-expr-fragment-specifier, boxed-slice-into-iter, impl-trait-overcaptures, if-let-rescope, static-mut-refs, dependency-on-unit-never-type-fallback, deprecated-safe-2024, missing-unsafe-on-extern, never-type-fallback-flowing-into-unsafe, 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"##,
1768            default_severity: Severity::Allow,
1769            warn_since: None,
1770            deny_since: None,
1771        },
1772        children: &[
1773            "keyword_idents_2024",
1774            "edition_2024_expr_fragment_specifier",
1775            "boxed_slice_into_iter",
1776            "impl_trait_overcaptures",
1777            "if_let_rescope",
1778            "static_mut_refs",
1779            "dependency_on_unit_never_type_fallback",
1780            "deprecated_safe_2024",
1781            "missing_unsafe_on_extern",
1782            "never_type_fallback_flowing_into_unsafe",
1783            "rust_2024_guarded_string_incompatible_syntax",
1784            "rust_2024_incompatible_pat",
1785            "rust_2024_prelude_collisions",
1786            "tail_expr_drop_order",
1787            "unsafe_attr_outside_unsafe",
1788            "unsafe_op_in_unsafe_fn",
1789        ],
1790    },
1791    LintGroup {
1792        lint: Lint {
1793            label: "unused",
1794            description: r##"lint group for: unused-imports, unused-variables, unused-assignments, dead-code, unused-mut, 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"##,
1795            default_severity: Severity::Allow,
1796            warn_since: None,
1797            deny_since: None,
1798        },
1799        children: &[
1800            "unused_imports",
1801            "unused_variables",
1802            "unused_assignments",
1803            "dead_code",
1804            "unused_mut",
1805            "unreachable_code",
1806            "unreachable_patterns",
1807            "unused_must_use",
1808            "unused_unsafe",
1809            "path_statements",
1810            "unused_attributes",
1811            "unused_macros",
1812            "unused_macro_rules",
1813            "unused_allocation",
1814            "unused_doc_comments",
1815            "unused_extern_crates",
1816            "unused_features",
1817            "unused_labels",
1818            "unused_parens",
1819            "unused_braces",
1820            "redundant_semicolons",
1821            "map_unit_fn",
1822        ],
1823    },
1824];
1825
1826pub const RUSTDOC_LINTS: &[Lint] = &[
1827    Lint {
1828        label: "rustdoc::bare_urls",
1829        description: r##"detects URLs that are not hyperlinks"##,
1830        default_severity: Severity::Warning,
1831        warn_since: None,
1832        deny_since: None,
1833    },
1834    Lint {
1835        label: "rustdoc::broken_intra_doc_links",
1836        description: r##"failures in resolving intra-doc link targets"##,
1837        default_severity: Severity::Warning,
1838        warn_since: None,
1839        deny_since: None,
1840    },
1841    Lint {
1842        label: "rustdoc::invalid_codeblock_attributes",
1843        description: r##"codeblock attribute looks a lot like a known one"##,
1844        default_severity: Severity::Warning,
1845        warn_since: None,
1846        deny_since: None,
1847    },
1848    Lint {
1849        label: "rustdoc::invalid_html_tags",
1850        description: r##"detects invalid HTML tags in doc comments"##,
1851        default_severity: Severity::Warning,
1852        warn_since: None,
1853        deny_since: None,
1854    },
1855    Lint {
1856        label: "rustdoc::invalid_rust_codeblocks",
1857        description: r##"codeblock could not be parsed as valid Rust or is empty"##,
1858        default_severity: Severity::Warning,
1859        warn_since: None,
1860        deny_since: None,
1861    },
1862    Lint {
1863        label: "rustdoc::missing_crate_level_docs",
1864        description: r##"detects crates with no crate-level documentation"##,
1865        default_severity: Severity::Allow,
1866        warn_since: None,
1867        deny_since: None,
1868    },
1869    Lint {
1870        label: "rustdoc::missing_doc_code_examples",
1871        description: r##"detects publicly-exported items without code samples in their documentation"##,
1872        default_severity: Severity::Allow,
1873        warn_since: None,
1874        deny_since: None,
1875    },
1876    Lint {
1877        label: "rustdoc::private_doc_tests",
1878        description: r##"detects code samples in docs of private items not documented by rustdoc"##,
1879        default_severity: Severity::Allow,
1880        warn_since: None,
1881        deny_since: None,
1882    },
1883    Lint {
1884        label: "rustdoc::private_intra_doc_links",
1885        description: r##"linking from a public item to a private one"##,
1886        default_severity: Severity::Warning,
1887        warn_since: None,
1888        deny_since: None,
1889    },
1890    Lint {
1891        label: "rustdoc::redundant_explicit_links",
1892        description: r##"detects redundant explicit links in doc comments"##,
1893        default_severity: Severity::Warning,
1894        warn_since: None,
1895        deny_since: None,
1896    },
1897    Lint {
1898        label: "rustdoc::unescaped_backticks",
1899        description: r##"detects unescaped backticks in doc comments"##,
1900        default_severity: Severity::Allow,
1901        warn_since: None,
1902        deny_since: None,
1903    },
1904    Lint {
1905        label: "rustdoc::unportable_markdown",
1906        description: r##"detects markdown that is interpreted differently in different parser"##,
1907        default_severity: Severity::Warning,
1908        warn_since: None,
1909        deny_since: None,
1910    },
1911    Lint {
1912        label: "rustdoc::all",
1913        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::unportable-markdown"##,
1914        default_severity: Severity::Allow,
1915        warn_since: None,
1916        deny_since: None,
1917    },
1918];
1919
1920pub const RUSTDOC_LINT_GROUPS: &[LintGroup] = &[LintGroup {
1921    lint: Lint {
1922        label: "rustdoc::all",
1923        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::unportable-markdown"##,
1924        default_severity: Severity::Allow,
1925        warn_since: None,
1926        deny_since: None,
1927    },
1928    children: &[
1929        "rustdoc::broken_intra_doc_links",
1930        "rustdoc::private_intra_doc_links",
1931        "rustdoc::private_doc_tests",
1932        "rustdoc::invalid_codeblock_attributes",
1933        "rustdoc::invalid_rust_codeblocks",
1934        "rustdoc::invalid_html_tags",
1935        "rustdoc::bare_urls",
1936        "rustdoc::missing_crate_level_docs",
1937        "rustdoc::unescaped_backticks",
1938        "rustdoc::redundant_explicit_links",
1939        "rustdoc::unportable_markdown",
1940    ],
1941}];
1942
1943pub const FEATURES: &[Lint] = &[
1944    Lint {
1945        label: "aarch64_unstable_target_feature",
1946        description: r##"# `aarch64_unstable_target_feature`
1947
1948The tracking issue for this feature is: [#44839]
1949
1950[#44839]: https://github.com/rust-lang/rust/issues/44839
1951
1952------------------------
1953"##,
1954        default_severity: Severity::Allow,
1955        warn_since: None,
1956        deny_since: None,
1957    },
1958    Lint {
1959        label: "aarch64_ver_target_feature",
1960        description: r##"# `aarch64_ver_target_feature`
1961
1962The tracking issue for this feature is: [#44839]
1963
1964[#44839]: https://github.com/rust-lang/rust/issues/44839
1965
1966------------------------
1967"##,
1968        default_severity: Severity::Allow,
1969        warn_since: None,
1970        deny_since: None,
1971    },
1972    Lint {
1973        label: "abi_avr_interrupt",
1974        description: r##"# `abi_avr_interrupt`
1975
1976The tracking issue for this feature is: [#69664]
1977
1978[#69664]: https://github.com/rust-lang/rust/issues/69664
1979
1980------------------------
1981"##,
1982        default_severity: Severity::Allow,
1983        warn_since: None,
1984        deny_since: None,
1985    },
1986    Lint {
1987        label: "abi_c_cmse_nonsecure_call",
1988        description: r##"# `abi_c_cmse_nonsecure_call`
1989
1990The tracking issue for this feature is: [#81391]
1991
1992[#81391]: https://github.com/rust-lang/rust/issues/81391
1993
1994------------------------
1995
1996The [TrustZone-M
1997feature](https://developer.arm.com/documentation/100690/latest/) is available
1998for targets with the Armv8-M architecture profile (`thumbv8m` in their target
1999name).
2000LLVM, the Rust compiler and the linker are providing
2001[support](https://developer.arm.com/documentation/ecm0359818/latest/) for the
2002TrustZone-M feature.
2003
2004One of the things provided, with this unstable feature, is the
2005`C-cmse-nonsecure-call` function ABI. This ABI is used on function pointers to
2006non-secure code to mark a non-secure function call (see [section
20075.5](https://developer.arm.com/documentation/ecm0359818/latest/) for details).
2008
2009With this ABI, the compiler will do the following to perform the call:
2010* save registers needed after the call to Secure memory
2011* clear all registers that might contain confidential information
2012* clear the Least Significant Bit of the function address
2013* branches using the BLXNS instruction
2014
2015To avoid using the non-secure stack, the compiler will constrain the number and
2016type of parameters/return value.
2017
2018The `extern "C-cmse-nonsecure-call"` ABI is otherwise equivalent to the
2019`extern "C"` ABI.
2020
2021<!-- NOTE(ignore) this example is specific to thumbv8m targets -->
2022
2023``` rust,ignore
2024#![no_std]
2025#![feature(abi_c_cmse_nonsecure_call)]
2026
2027#[no_mangle]
2028pub fn call_nonsecure_function(addr: usize) -> u32 {
2029    let non_secure_function =
2030        unsafe { core::mem::transmute::<usize, extern "C-cmse-nonsecure-call" fn() -> u32>(addr) };
2031    non_secure_function()
2032}
2033```
2034
2035``` text
2036$ rustc --emit asm --crate-type lib --target thumbv8m.main-none-eabi function.rs
2037
2038call_nonsecure_function:
2039        .fnstart
2040        .save   {r7, lr}
2041        push    {r7, lr}
2042        .setfp  r7, sp
2043        mov     r7, sp
2044        .pad    #16
2045        sub     sp, #16
2046        str     r0, [sp, #12]
2047        ldr     r0, [sp, #12]
2048        str     r0, [sp, #8]
2049        b       .LBB0_1
2050.LBB0_1:
2051        ldr     r0, [sp, #8]
2052        push.w  {r4, r5, r6, r7, r8, r9, r10, r11}
2053        bic     r0, r0, #1
2054        mov     r1, r0
2055        mov     r2, r0
2056        mov     r3, r0
2057        mov     r4, r0
2058        mov     r5, r0
2059        mov     r6, r0
2060        mov     r7, r0
2061        mov     r8, r0
2062        mov     r9, r0
2063        mov     r10, r0
2064        mov     r11, r0
2065        mov     r12, r0
2066        msr     apsr_nzcvq, r0
2067        blxns   r0
2068        pop.w   {r4, r5, r6, r7, r8, r9, r10, r11}
2069        str     r0, [sp, #4]
2070        b       .LBB0_2
2071.LBB0_2:
2072        ldr     r0, [sp, #4]
2073        add     sp, #16
2074        pop     {r7, pc}
2075```
2076"##,
2077        default_severity: Severity::Allow,
2078        warn_since: None,
2079        deny_since: None,
2080    },
2081    Lint {
2082        label: "abi_msp430_interrupt",
2083        description: r##"# `abi_msp430_interrupt`
2084
2085The tracking issue for this feature is: [#38487]
2086
2087[#38487]: https://github.com/rust-lang/rust/issues/38487
2088
2089------------------------
2090
2091In the MSP430 architecture, interrupt handlers have a special calling
2092convention. You can use the `"msp430-interrupt"` ABI to make the compiler apply
2093the right calling convention to the interrupt handlers you define.
2094
2095<!-- NOTE(ignore) this example is specific to the msp430 target -->
2096
2097``` rust,ignore
2098#![feature(abi_msp430_interrupt)]
2099#![no_std]
2100
2101// Place the interrupt handler at the appropriate memory address
2102// (Alternatively, you can use `#[used]` and remove `pub` and `#[no_mangle]`)
2103#[link_section = "__interrupt_vector_10"]
2104#[no_mangle]
2105pub static TIM0_VECTOR: extern "msp430-interrupt" fn() = tim0;
2106
2107// The interrupt handler
2108extern "msp430-interrupt" fn tim0() {
2109    // ..
2110}
2111```
2112
2113``` text
2114$ msp430-elf-objdump -CD ./target/msp430/release/app
2115Disassembly of section __interrupt_vector_10:
2116
21170000fff2 <TIM0_VECTOR>:
2118    fff2:       00 c0           interrupt service routine at 0xc000
2119
2120Disassembly of section .text:
2121
21220000c000 <int::tim0>:
2123    c000:       00 13           reti
2124```
2125"##,
2126        default_severity: Severity::Allow,
2127        warn_since: None,
2128        deny_since: None,
2129    },
2130    Lint {
2131        label: "abi_ptx",
2132        description: r##"# `abi_ptx`
2133
2134The tracking issue for this feature is: [#38788]
2135
2136[#38788]: https://github.com/rust-lang/rust/issues/38788
2137
2138------------------------
2139
2140When emitting PTX code, all vanilla Rust functions (`fn`) get translated to
2141"device" functions. These functions are *not* callable from the host via the
2142CUDA API so a crate with only device functions is not too useful!
2143
2144OTOH, "global" functions *can* be called by the host; you can think of them
2145as the real public API of your crate. To produce a global function use the
2146`"ptx-kernel"` ABI.
2147
2148<!-- NOTE(ignore) this example is specific to the nvptx targets -->
2149
2150``` rust,ignore
2151#![feature(abi_ptx)]
2152#![no_std]
2153
2154pub unsafe extern "ptx-kernel" fn global_function() {
2155    device_function();
2156}
2157
2158pub fn device_function() {
2159    // ..
2160}
2161```
2162
2163``` text
2164$ xargo rustc --target nvptx64-nvidia-cuda --release -- --emit=asm
2165
2166$ cat $(find -name '*.s')
2167//
2168// Generated by LLVM NVPTX Back-End
2169//
2170
2171.version 3.2
2172.target sm_20
2173.address_size 64
2174
2175        // .globl       _ZN6kernel15global_function17h46111ebe6516b382E
2176
2177.visible .entry _ZN6kernel15global_function17h46111ebe6516b382E()
2178{
2179
2180
2181        ret;
2182}
2183
2184        // .globl       _ZN6kernel15device_function17hd6a0e4993bbf3f78E
2185.visible .func _ZN6kernel15device_function17hd6a0e4993bbf3f78E()
2186{
2187
2188
2189        ret;
2190}
2191```
2192"##,
2193        default_severity: Severity::Allow,
2194        warn_since: None,
2195        deny_since: None,
2196    },
2197    Lint {
2198        label: "abi_riscv_interrupt",
2199        description: r##"# `abi_riscv_interrupt`
2200
2201The tracking issue for this feature is: [#111889]
2202
2203[#111889]: https://github.com/rust-lang/rust/issues/111889
2204
2205------------------------
2206"##,
2207        default_severity: Severity::Allow,
2208        warn_since: None,
2209        deny_since: None,
2210    },
2211    Lint {
2212        label: "abi_unadjusted",
2213        description: r##"# `abi_unadjusted`
2214
2215This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
2216
2217------------------------
2218"##,
2219        default_severity: Severity::Allow,
2220        warn_since: None,
2221        deny_since: None,
2222    },
2223    Lint {
2224        label: "abi_vectorcall",
2225        description: r##"# `abi_vectorcall`
2226
2227The tracking issue for this feature is: [#124485]
2228
2229[#124485]: https://github.com/rust-lang/rust/issues/124485
2230
2231------------------------
2232
2233Adds support for the Windows `"vectorcall"` ABI, the equivalent of `__vectorcall` in MSVC.
2234
2235```rust,ignore (only-windows-or-x86-or-x86-64)
2236extern "vectorcall" {
2237    fn add_f64s(x: f64, y: f64) -> f64;
2238}
2239
2240fn main() {
2241    println!("{}", add_f64s(2.0, 4.0));
2242}
2243```
2244"##,
2245        default_severity: Severity::Allow,
2246        warn_since: None,
2247        deny_since: None,
2248    },
2249    Lint {
2250        label: "abi_x86_interrupt",
2251        description: r##"# `abi_x86_interrupt`
2252
2253The tracking issue for this feature is: [#40180]
2254
2255[#40180]: https://github.com/rust-lang/rust/issues/40180
2256
2257------------------------
2258"##,
2259        default_severity: Severity::Allow,
2260        warn_since: None,
2261        deny_since: None,
2262    },
2263    Lint {
2264        label: "abort_unwind",
2265        description: r##"# `abort_unwind`
2266
2267The tracking issue for this feature is: [#130338]
2268
2269[#130338]: https://github.com/rust-lang/rust/issues/130338
2270
2271------------------------
2272"##,
2273        default_severity: Severity::Allow,
2274        warn_since: None,
2275        deny_since: None,
2276    },
2277    Lint {
2278        label: "acceptfilter",
2279        description: r##"# `acceptfilter`
2280
2281The tracking issue for this feature is: [#121891]
2282
2283[#121891]: https://github.com/rust-lang/rust/issues/121891
2284
2285------------------------
2286"##,
2287        default_severity: Severity::Allow,
2288        warn_since: None,
2289        deny_since: None,
2290    },
2291    Lint {
2292        label: "addr_parse_ascii",
2293        description: r##"# `addr_parse_ascii`
2294
2295The tracking issue for this feature is: [#101035]
2296
2297[#101035]: https://github.com/rust-lang/rust/issues/101035
2298
2299------------------------
2300"##,
2301        default_severity: Severity::Allow,
2302        warn_since: None,
2303        deny_since: None,
2304    },
2305    Lint {
2306        label: "adt_const_params",
2307        description: r##"# `adt_const_params`
2308
2309The tracking issue for this feature is: [#95174]
2310
2311[#95174]: https://github.com/rust-lang/rust/issues/95174
2312
2313------------------------
2314
2315Allows for using more complex types for const parameters, such as structs or enums.
2316
2317```rust
2318#![feature(adt_const_params)]
2319#![allow(incomplete_features)]
2320
2321use std::marker::ConstParamTy;
2322
2323#[derive(ConstParamTy, PartialEq, Eq)]
2324enum Foo {
2325    A,
2326    B,
2327    C,
2328}
2329
2330#[derive(ConstParamTy, PartialEq, Eq)]
2331struct Bar {
2332    flag: bool,
2333}
2334
2335fn is_foo_a_and_bar_true<const F: Foo, const B: Bar>() -> bool {
2336    match (F, B.flag) {
2337        (Foo::A, true) => true,
2338        _ => false,
2339    }
2340}
2341```
2342"##,
2343        default_severity: Severity::Allow,
2344        warn_since: None,
2345        deny_since: None,
2346    },
2347    Lint {
2348        label: "alloc_error_handler",
2349        description: r##"# `alloc_error_handler`
2350
2351The tracking issue for this feature is: [#51540]
2352
2353[#51540]: https://github.com/rust-lang/rust/issues/51540
2354
2355------------------------
2356"##,
2357        default_severity: Severity::Allow,
2358        warn_since: None,
2359        deny_since: None,
2360    },
2361    Lint {
2362        label: "alloc_error_hook",
2363        description: r##"# `alloc_error_hook`
2364
2365The tracking issue for this feature is: [#51245]
2366
2367[#51245]: https://github.com/rust-lang/rust/issues/51245
2368
2369------------------------
2370"##,
2371        default_severity: Severity::Allow,
2372        warn_since: None,
2373        deny_since: None,
2374    },
2375    Lint {
2376        label: "alloc_internals",
2377        description: r##"# `alloc_internals`
2378
2379This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
2380
2381------------------------
2382"##,
2383        default_severity: Severity::Allow,
2384        warn_since: None,
2385        deny_since: None,
2386    },
2387    Lint {
2388        label: "alloc_layout_extra",
2389        description: r##"# `alloc_layout_extra`
2390
2391The tracking issue for this feature is: [#55724]
2392
2393[#55724]: https://github.com/rust-lang/rust/issues/55724
2394
2395------------------------
2396"##,
2397        default_severity: Severity::Allow,
2398        warn_since: None,
2399        deny_since: None,
2400    },
2401    Lint {
2402        label: "allocator_api",
2403        description: r##"# `allocator_api`
2404
2405The tracking issue for this feature is [#32838]
2406
2407[#32838]: https://github.com/rust-lang/rust/issues/32838
2408
2409------------------------
2410
2411Sometimes you want the memory for one collection to use a different
2412allocator than the memory for another collection. In this case,
2413replacing the global allocator is not a workable option. Instead,
2414you need to pass in an instance of an `AllocRef` to each collection
2415for which you want a custom allocator.
2416
2417TBD
2418"##,
2419        default_severity: Severity::Allow,
2420        warn_since: None,
2421        deny_since: None,
2422    },
2423    Lint {
2424        label: "allocator_internals",
2425        description: r##"# `allocator_internals`
2426
2427This feature does not have a tracking issue, it is an unstable implementation
2428detail of the `global_allocator` feature not intended for use outside the
2429compiler.
2430
2431------------------------
2432"##,
2433        default_severity: Severity::Allow,
2434        warn_since: None,
2435        deny_since: None,
2436    },
2437    Lint {
2438        label: "allow_internal_unsafe",
2439        description: r##"# `allow_internal_unsafe`
2440
2441This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
2442
2443------------------------
2444"##,
2445        default_severity: Severity::Allow,
2446        warn_since: None,
2447        deny_since: None,
2448    },
2449    Lint {
2450        label: "allow_internal_unstable",
2451        description: r##"# `allow_internal_unstable`
2452
2453This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
2454
2455------------------------
2456"##,
2457        default_severity: Severity::Allow,
2458        warn_since: None,
2459        deny_since: None,
2460    },
2461    Lint {
2462        label: "anonymous_lifetime_in_impl_trait",
2463        description: r##"# `anonymous_lifetime_in_impl_trait`
2464
2465This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
2466
2467------------------------
2468"##,
2469        default_severity: Severity::Allow,
2470        warn_since: None,
2471        deny_since: None,
2472    },
2473    Lint {
2474        label: "anonymous_pipe",
2475        description: r##"# `anonymous_pipe`
2476
2477The tracking issue for this feature is: [#127154]
2478
2479[#127154]: https://github.com/rust-lang/rust/issues/127154
2480
2481------------------------
2482"##,
2483        default_severity: Severity::Allow,
2484        warn_since: None,
2485        deny_since: None,
2486    },
2487    Lint {
2488        label: "arbitrary_self_types",
2489        description: r##"# `arbitrary_self_types`
2490
2491The tracking issue for this feature is: [#44874]
2492
2493[#44874]: https://github.com/rust-lang/rust/issues/44874
2494
2495------------------------
2496"##,
2497        default_severity: Severity::Allow,
2498        warn_since: None,
2499        deny_since: None,
2500    },
2501    Lint {
2502        label: "arbitrary_self_types_pointers",
2503        description: r##"# `arbitrary_self_types_pointers`
2504
2505The tracking issue for this feature is: [#44874]
2506
2507[#44874]: https://github.com/rust-lang/rust/issues/44874
2508
2509------------------------
2510"##,
2511        default_severity: Severity::Allow,
2512        warn_since: None,
2513        deny_since: None,
2514    },
2515    Lint {
2516        label: "arm_target_feature",
2517        description: r##"# `arm_target_feature`
2518
2519The tracking issue for this feature is: [#44839]
2520
2521[#44839]: https://github.com/rust-lang/rust/issues/44839
2522
2523------------------------
2524"##,
2525        default_severity: Severity::Allow,
2526        warn_since: None,
2527        deny_since: None,
2528    },
2529    Lint {
2530        label: "array_chunks",
2531        description: r##"# `array_chunks`
2532
2533The tracking issue for this feature is: [#74985]
2534
2535[#74985]: https://github.com/rust-lang/rust/issues/74985
2536
2537------------------------
2538"##,
2539        default_severity: Severity::Allow,
2540        warn_since: None,
2541        deny_since: None,
2542    },
2543    Lint {
2544        label: "array_into_iter_constructors",
2545        description: r##"# `array_into_iter_constructors`
2546
2547The tracking issue for this feature is: [#91583]
2548
2549[#91583]: https://github.com/rust-lang/rust/issues/91583
2550
2551------------------------
2552"##,
2553        default_severity: Severity::Allow,
2554        warn_since: None,
2555        deny_since: None,
2556    },
2557    Lint {
2558        label: "array_ptr_get",
2559        description: r##"# `array_ptr_get`
2560
2561The tracking issue for this feature is: [#119834]
2562
2563[#119834]: https://github.com/rust-lang/rust/issues/119834
2564
2565------------------------
2566"##,
2567        default_severity: Severity::Allow,
2568        warn_since: None,
2569        deny_since: None,
2570    },
2571    Lint {
2572        label: "array_repeat",
2573        description: r##"# `array_repeat`
2574
2575The tracking issue for this feature is: [#126695]
2576
2577[#126695]: https://github.com/rust-lang/rust/issues/126695
2578
2579------------------------
2580"##,
2581        default_severity: Severity::Allow,
2582        warn_since: None,
2583        deny_since: None,
2584    },
2585    Lint {
2586        label: "array_try_from_fn",
2587        description: r##"# `array_try_from_fn`
2588
2589The tracking issue for this feature is: [#89379]
2590
2591[#89379]: https://github.com/rust-lang/rust/issues/89379
2592
2593------------------------
2594"##,
2595        default_severity: Severity::Allow,
2596        warn_since: None,
2597        deny_since: None,
2598    },
2599    Lint {
2600        label: "array_try_map",
2601        description: r##"# `array_try_map`
2602
2603The tracking issue for this feature is: [#79711]
2604
2605[#79711]: https://github.com/rust-lang/rust/issues/79711
2606
2607------------------------
2608"##,
2609        default_severity: Severity::Allow,
2610        warn_since: None,
2611        deny_since: None,
2612    },
2613    Lint {
2614        label: "array_windows",
2615        description: r##"# `array_windows`
2616
2617The tracking issue for this feature is: [#75027]
2618
2619[#75027]: https://github.com/rust-lang/rust/issues/75027
2620
2621------------------------
2622"##,
2623        default_severity: Severity::Allow,
2624        warn_since: None,
2625        deny_since: None,
2626    },
2627    Lint {
2628        label: "as_array_of_cells",
2629        description: r##"# `as_array_of_cells`
2630
2631The tracking issue for this feature is: [#88248]
2632
2633[#88248]: https://github.com/rust-lang/rust/issues/88248
2634
2635------------------------
2636"##,
2637        default_severity: Severity::Allow,
2638        warn_since: None,
2639        deny_since: None,
2640    },
2641    Lint {
2642        label: "ascii_char",
2643        description: r##"# `ascii_char`
2644
2645The tracking issue for this feature is: [#110998]
2646
2647[#110998]: https://github.com/rust-lang/rust/issues/110998
2648
2649------------------------
2650"##,
2651        default_severity: Severity::Allow,
2652        warn_since: None,
2653        deny_since: None,
2654    },
2655    Lint {
2656        label: "ascii_char_variants",
2657        description: r##"# `ascii_char_variants`
2658
2659The tracking issue for this feature is: [#110998]
2660
2661[#110998]: https://github.com/rust-lang/rust/issues/110998
2662
2663------------------------
2664"##,
2665        default_severity: Severity::Allow,
2666        warn_since: None,
2667        deny_since: None,
2668    },
2669    Lint {
2670        label: "asm_experimental_arch",
2671        description: r##"# `asm_experimental_arch`
2672
2673The tracking issue for this feature is: [#93335]
2674
2675[#93335]: https://github.com/rust-lang/rust/issues/93335
2676
2677------------------------
2678
2679This feature tracks `asm!` and `global_asm!` support for the following architectures:
2680- NVPTX
2681- PowerPC
2682- Hexagon
2683- MIPS32r2 and MIPS64r2
2684- wasm32
2685- BPF
2686- SPIR-V
2687- AVR
2688- MSP430
2689- M68k
2690- CSKY
2691- SPARC
2692
2693## Register classes
2694
2695| Architecture | Register class | Registers                          | LLVM constraint code |
2696| ------------ | -------------- | ---------------------------------- | -------------------- |
2697| MIPS         | `reg`          | `$[2-25]`                          | `r`                  |
2698| MIPS         | `freg`         | `$f[0-31]`                         | `f`                  |
2699| NVPTX        | `reg16`        | None\*                             | `h`                  |
2700| NVPTX        | `reg32`        | None\*                             | `r`                  |
2701| NVPTX        | `reg64`        | None\*                             | `l`                  |
2702| Hexagon      | `reg`          | `r[0-28]`                          | `r`                  |
2703| Hexagon      | `preg`         | `p[0-3]`                           | Only clobbers        |
2704| PowerPC      | `reg`          | `r0`, `r[3-12]`, `r[14-28]`        | `r`                  |
2705| PowerPC      | `reg_nonzero`  | `r[3-12]`, `r[14-28]`              | `b`                  |
2706| PowerPC      | `freg`         | `f[0-31]`                          | `f`                  |
2707| PowerPC      | `vreg`         | `v[0-31]`                          | `v`                  |
2708| PowerPC      | `cr`           | `cr[0-7]`, `cr`                    | Only clobbers        |
2709| PowerPC      | `xer`          | `xer`                              | Only clobbers        |
2710| wasm32       | `local`        | None\*                             | `r`                  |
2711| BPF          | `reg`          | `r[0-10]`                          | `r`                  |
2712| BPF          | `wreg`         | `w[0-10]`                          | `w`                  |
2713| AVR          | `reg`          | `r[2-25]`, `XH`, `XL`, `ZH`, `ZL`  | `r`                  |
2714| AVR          | `reg_upper`    | `r[16-25]`, `XH`, `XL`, `ZH`, `ZL` | `d`                  |
2715| AVR          | `reg_pair`     | `r3r2` .. `r25r24`, `X`, `Z`       | `r`                  |
2716| AVR          | `reg_iw`       | `r25r24`, `X`, `Z`                 | `w`                  |
2717| AVR          | `reg_ptr`      | `X`, `Z`                           | `e`                  |
2718| MSP430       | `reg`          | `r[0-15]`                          | `r`                  |
2719| M68k         | `reg`          | `d[0-7]`, `a[0-7]`                 | `r`                  |
2720| M68k         | `reg_data`     | `d[0-7]`                           | `d`                  |
2721| M68k         | `reg_addr`     | `a[0-3]`                           | `a`                  |
2722| CSKY         | `reg`          | `r[0-31]`                          | `r`                  |
2723| CSKY         | `freg`         | `f[0-31]`                          | `f`                  |
2724| SPARC        | `reg`          | `r[2-29]`                          | `r`                  |
2725| SPARC        | `yreg`         | `y`                                | Only clobbers        |
2726
2727> **Notes**:
2728> - NVPTX doesn't have a fixed register set, so named registers are not supported.
2729>
2730> - WebAssembly doesn't have registers, so named registers are not supported.
2731
2732# Register class supported types
2733
2734| Architecture | Register class                  | Target feature | Allowed types                           |
2735| ------------ | ------------------------------- | -------------- | --------------------------------------- |
2736| MIPS32       | `reg`                           | None           | `i8`, `i16`, `i32`, `f32`               |
2737| MIPS32       | `freg`                          | None           | `f32`, `f64`                            |
2738| MIPS64       | `reg`                           | None           | `i8`, `i16`, `i32`, `i64`, `f32`, `f64` |
2739| MIPS64       | `freg`                          | None           | `f32`, `f64`                            |
2740| NVPTX        | `reg16`                         | None           | `i8`, `i16`                             |
2741| NVPTX        | `reg32`                         | None           | `i8`, `i16`, `i32`, `f32`               |
2742| NVPTX        | `reg64`                         | None           | `i8`, `i16`, `i32`, `f32`, `i64`, `f64` |
2743| Hexagon      | `reg`                           | None           | `i8`, `i16`, `i32`, `f32`               |
2744| Hexagon      | `preg`                          | N/A            | Only clobbers                           |
2745| PowerPC      | `reg`                           | None           | `i8`, `i16`, `i32`, `i64` (powerpc64 only) |
2746| PowerPC      | `reg_nonzero`                   | None           | `i8`, `i16`, `i32`, `i64` (powerpc64 only) |
2747| PowerPC      | `freg`                          | None           | `f32`, `f64`                            |
2748| PowerPC      | `vreg`                          | `altivec`      | `i8x16`, `i16x8`, `i32x4`, `f32x4`      |
2749| PowerPC      | `vreg`                          | `vsx`          | `f32`, `f64`, `i64x2`, `f64x2`          |
2750| PowerPC      | `cr`                            | N/A            | Only clobbers                           |
2751| PowerPC      | `xer`                           | N/A            | Only clobbers                           |
2752| wasm32       | `local`                         | None           | `i8` `i16` `i32` `i64` `f32` `f64`      |
2753| BPF          | `reg`                           | None           | `i8` `i16` `i32` `i64`                  |
2754| BPF          | `wreg`                          | `alu32`        | `i8` `i16` `i32`                        |
2755| AVR          | `reg`, `reg_upper`              | None           | `i8`                                    |
2756| AVR          | `reg_pair`, `reg_iw`, `reg_ptr` | None           | `i16`                                   |
2757| MSP430       | `reg`                           | None           | `i8`, `i16`                             |
2758| M68k         | `reg`, `reg_addr`               | None           | `i16`, `i32`                            |
2759| M68k         | `reg_data`                      | None           | `i8`, `i16`, `i32`                      |
2760| CSKY         | `reg`                           | None           | `i8`, `i16`, `i32`                      |
2761| CSKY         | `freg`                          | None           | `f32`,                                  |
2762| SPARC        | `reg`                           | None           | `i8`, `i16`, `i32`, `i64` (SPARC64 only) |
2763| SPARC        | `yreg`                          | N/A            | Only clobbers                           |
2764
2765## Register aliases
2766
2767| Architecture | Base register | Aliases   |
2768| ------------ | ------------- | --------- |
2769| Hexagon      | `r29`         | `sp`      |
2770| Hexagon      | `r30`         | `fr`      |
2771| Hexagon      | `r31`         | `lr`      |
2772| PowerPC      | `r1`          | `sp`      |
2773| PowerPC      | `r31`         | `fp`      |
2774| PowerPC      | `r[0-31]`     | `[0-31]`  |
2775| PowerPC      | `f[0-31]`     | `fr[0-31]`|
2776| BPF          | `r[0-10]`     | `w[0-10]` |
2777| AVR          | `XH`          | `r27`     |
2778| AVR          | `XL`          | `r26`     |
2779| AVR          | `ZH`          | `r31`     |
2780| AVR          | `ZL`          | `r30`     |
2781| MSP430       | `r0`          | `pc`      |
2782| MSP430       | `r1`          | `sp`      |
2783| MSP430       | `r2`          | `sr`      |
2784| MSP430       | `r3`          | `cg`      |
2785| MSP430       | `r4`          | `fp`      |
2786| M68k         | `a5`          | `bp`      |
2787| M68k         | `a6`          | `fp`      |
2788| M68k         | `a7`          | `sp`, `usp`, `ssp`, `isp` |
2789| CSKY         | `r[0-3]`      | `a[0-3]`  |
2790| CSKY         | `r[4-11]`     | `l[0-7]`  |
2791| CSKY         | `r[12-13]`    | `t[0-1]`  |
2792| CSKY         | `r14`         | `sp`      |
2793| CSKY         | `r15`         | `lr`      |
2794| CSKY         | `r[16-17]`    | `l[8-9]`  |
2795| CSKY         | `r[18-25]`    | `t[2-9]`  |
2796| CSKY         | `r28`         | `rgb`     |
2797| CSKY         | `r29`         | `rtb`     |
2798| CSKY         | `r30`         | `svbr`    |
2799| CSKY         | `r31`         | `tls`     |
2800| SPARC        | `r[0-7]`      | `g[0-7]`  |
2801| SPARC        | `r[8-15]`     | `o[0-7]`  |
2802| SPARC        | `r[16-23]`    | `l[0-7]`  |
2803| SPARC        | `r[24-31]`    | `i[0-7]`  |
2804
2805> **Notes**:
2806> - TI does not mandate a frame pointer for MSP430, but toolchains are allowed
2807    to use one; LLVM uses `r4`.
2808
2809## Unsupported registers
2810
2811| Architecture | Unsupported register                    | Reason                                                                                                                                                                              |
2812| ------------ | --------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
2813| All          | `sp`, `r14`/`o6` (SPARC)                | The stack pointer must be restored to its original value at the end of an asm code block.                                                                                           |
2814| All          | `fr` (Hexagon), `fp` (PowerPC), `$fp` (MIPS), `Y` (AVR), `r4` (MSP430), `a6` (M68k), `r30`/`i6` (SPARC) | The frame pointer cannot be used as an input or output.                                                             |
2815| All          | `r19` (Hexagon), `r29` (PowerPC), `r30` (PowerPC) | These are used internally by LLVM as "base pointer" for functions with complex stack frames.                                                                              |
2816| MIPS         | `$0` or `$zero`                         | This is a constant zero register which can't be modified.                                                                                                                           |
2817| MIPS         | `$1` or `$at`                           | Reserved for assembler.                                                                                                                                                             |
2818| MIPS         | `$26`/`$k0`, `$27`/`$k1`                | OS-reserved registers.                                                                                                                                                              |
2819| MIPS         | `$28`/`$gp`                             | Global pointer cannot be used as inputs or outputs.                                                                                                                                 |
2820| MIPS         | `$ra`                                   | Return address cannot be used as inputs or outputs.                                                                                                                                 |
2821| Hexagon      | `lr`                                    | This is the link register which cannot be used as an input or output.                                                                                                               |
2822| PowerPC      | `r2`, `r13`                             | These are system reserved registers.                                                                                                                                                |
2823| PowerPC      | `lr`                                    | The link register cannot be used as an input or output.                                                                                                                             |
2824| PowerPC      | `ctr`                                   | The counter register cannot be used as an input or output.                                                                                                                          |
2825| PowerPC      | `vrsave`                                | The vrsave register cannot be used as an input or output.                                                                                                                           |
2826| 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. |
2827|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.                          |
2828| M68k         | `a4`, `a5`                              | Used internally by LLVM for the base pointer and global base pointer. |
2829| CSKY         | `r7`, `r28`                             | Used internally by LLVM for the base pointer and global base pointer. |
2830| CSKY         | `r8`                                    | Used internally by LLVM for the frame pointer. |
2831| CSKY         | `r14`                                   | Used internally by LLVM for the stack pointer. |
2832| CSKY         | `r15`                                   | This is the link register. |
2833| CSKY         | `r[26-30]`                              | Reserved by its ABI.       |
2834| CSKY         | `r31`                                   | This is the TLS register.  |
2835| SPARC        | `r0`/`g0`                               | This is always zero and cannot be used as inputs or outputs. |
2836| SPARC        | `r1`/`g1`                               | Used internally by LLVM. |
2837| SPARC        | `r5`/`g5`                               | Reserved for system. (SPARC32 only) |
2838| SPARC        | `r6`/`g6`, `r7`/`g7`                    | Reserved for system. |
2839| SPARC        | `r31`/`i7`                              | Return address cannot be used as inputs or outputs. |
2840
2841
2842## Template modifiers
2843
2844| Architecture | Register class | Modifier | Example output | LLVM modifier |
2845| ------------ | -------------- | -------- | -------------- | ------------- |
2846| MIPS         | `reg`          | None     | `$2`           | None          |
2847| MIPS         | `freg`         | None     | `$f0`          | None          |
2848| NVPTX        | `reg16`        | None     | `rs0`          | None          |
2849| NVPTX        | `reg32`        | None     | `r0`           | None          |
2850| NVPTX        | `reg64`        | None     | `rd0`          | None          |
2851| Hexagon      | `reg`          | None     | `r0`           | None          |
2852| PowerPC      | `reg`          | None     | `0`            | None          |
2853| PowerPC      | `reg_nonzero`  | None     | `3`            | None          |
2854| PowerPC      | `freg`         | None     | `0`            | None          |
2855| PowerPC      | `vreg`         | None     | `0`            | None          |
2856| SPARC        | `reg`          | None     | `%o0`          | None          |
2857| CSKY         | `reg`          | None     | `r0`           | None          |
2858| CSKY         | `freg`         | None     | `f0`           | None          |
2859
2860# Flags covered by `preserves_flags`
2861
2862These flags registers must be restored upon exiting the asm block if the `preserves_flags` option is set:
2863- AVR
2864  - The status register `SREG`.
2865- MSP430
2866  - The status register `r2`.
2867- M68k
2868  - The condition code register `ccr`.
2869- SPARC
2870  - Integer condition codes (`icc` and `xcc`)
2871  - Floating-point condition codes (`fcc[0-3]`)
2872"##,
2873        default_severity: Severity::Allow,
2874        warn_since: None,
2875        deny_since: None,
2876    },
2877    Lint {
2878        label: "asm_experimental_reg",
2879        description: r##"# `asm_experimental_arch`
2880
2881The tracking issue for this feature is: [#133416]
2882
2883[#133416]: https://github.com/rust-lang/rust/issues/133416
2884
2885------------------------
2886
2887This tracks support for additional registers in architectures where inline assembly is already stable.
2888
2889## Register classes
2890
2891| Architecture | Register class | Registers | LLVM constraint code |
2892| ------------ | -------------- | --------- | -------------------- |
2893| s390x | `vreg` | `v[0-31]` | `v` |
2894
2895> **Notes**:
2896> - s390x `vreg` is clobber-only in stable.
2897
2898## Register class supported types
2899
2900| Architecture | Register class | Target feature | Allowed types |
2901| ------------ | -------------- | -------------- | ------------- |
2902| s390x | `vreg` | `vector` | `i32`, `f32`, `i64`, `f64`, `i128`, `f128`, `i8x16`, `i16x8`, `i32x4`, `i64x2`, `f32x4`, `f64x2` |
2903
2904## Register aliases
2905
2906| Architecture | Base register | Aliases |
2907| ------------ | ------------- | ------- |
2908
2909## Unsupported registers
2910
2911| Architecture | Unsupported register | Reason |
2912| ------------ | -------------------- | ------ |
2913
2914## Template modifiers
2915
2916| Architecture | Register class | Modifier | Example output | LLVM modifier |
2917| ------------ | -------------- | -------- | -------------- | ------------- |
2918| s390x | `vreg` | None | `%v0` | None |
2919"##,
2920        default_severity: Severity::Allow,
2921        warn_since: None,
2922        deny_since: None,
2923    },
2924    Lint {
2925        label: "asm_goto",
2926        description: r##"# `asm_goto`
2927
2928The tracking issue for this feature is: [#119364]
2929
2930[#119364]: https://github.com/rust-lang/rust/issues/119364
2931
2932------------------------
2933
2934This feature adds a `label <block>` operand type to `asm!`.
2935
2936Example:
2937```rust,ignore (partial-example, x86-only)
2938
2939unsafe {
2940    asm!(
2941        "jmp {}",
2942        label {
2943            println!("Jumped from asm!");
2944        }
2945    );
2946}
2947```
2948
2949The block must have unit type or diverge. The block starts a new safety context,
2950so despite outer `unsafe`, you need extra unsafe to perform unsafe operations
2951within `label <block>`.
2952
2953When `label <block>` is used together with `noreturn` option, it means that the
2954assembly will not fallthrough. It's allowed to jump to a label within the
2955assembly. In this case, the entire `asm!` expression will have an unit type as
2956opposed to diverging, if not all label blocks diverge. The `asm!` expression
2957still diverges if `noreturn` option is used and all label blocks diverge.
2958"##,
2959        default_severity: Severity::Allow,
2960        warn_since: None,
2961        deny_since: None,
2962    },
2963    Lint {
2964        label: "asm_goto_with_outputs",
2965        description: r##"# `asm_goto_with_outputs`
2966
2967The tracking issue for this feature is: [#119364]
2968
2969[#119364]: https://github.com/rust-lang/rust/issues/119364
2970
2971------------------------
2972"##,
2973        default_severity: Severity::Allow,
2974        warn_since: None,
2975        deny_since: None,
2976    },
2977    Lint {
2978        label: "asm_unwind",
2979        description: r##"# `asm_unwind`
2980
2981The tracking issue for this feature is: [#93334]
2982
2983[#93334]: https://github.com/rust-lang/rust/issues/93334
2984
2985------------------------
2986
2987This 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.
2988"##,
2989        default_severity: Severity::Allow,
2990        warn_since: None,
2991        deny_since: None,
2992    },
2993    Lint {
2994        label: "assert_matches",
2995        description: r##"# `assert_matches`
2996
2997The tracking issue for this feature is: [#82775]
2998
2999[#82775]: https://github.com/rust-lang/rust/issues/82775
3000
3001------------------------
3002"##,
3003        default_severity: Severity::Allow,
3004        warn_since: None,
3005        deny_since: None,
3006    },
3007    Lint {
3008        label: "associated_const_equality",
3009        description: r##"# `associated_const_equality`
3010
3011The tracking issue for this feature is: [#92827]
3012
3013[#92827]: https://github.com/rust-lang/rust/issues/92827
3014
3015------------------------
3016"##,
3017        default_severity: Severity::Allow,
3018        warn_since: None,
3019        deny_since: None,
3020    },
3021    Lint {
3022        label: "associated_type_defaults",
3023        description: r##"# `associated_type_defaults`
3024
3025The tracking issue for this feature is: [#29661]
3026
3027[#29661]: https://github.com/rust-lang/rust/issues/29661
3028
3029------------------------
3030"##,
3031        default_severity: Severity::Allow,
3032        warn_since: None,
3033        deny_since: None,
3034    },
3035    Lint {
3036        label: "async_closure",
3037        description: r##"# `async_closure`
3038
3039The tracking issue for this feature is: [#62290]
3040
3041[#62290]: https://github.com/rust-lang/rust/issues/62290
3042
3043------------------------
3044"##,
3045        default_severity: Severity::Allow,
3046        warn_since: None,
3047        deny_since: None,
3048    },
3049    Lint {
3050        label: "async_drop",
3051        description: r##"# `async_drop`
3052
3053The tracking issue for this feature is: [#126482]
3054
3055[#126482]: https://github.com/rust-lang/rust/issues/126482
3056
3057------------------------
3058"##,
3059        default_severity: Severity::Allow,
3060        warn_since: None,
3061        deny_since: None,
3062    },
3063    Lint {
3064        label: "async_fn_track_caller",
3065        description: r##"# `async_fn_track_caller`
3066
3067The tracking issue for this feature is: [#110011]
3068
3069[#110011]: https://github.com/rust-lang/rust/issues/110011
3070
3071------------------------
3072"##,
3073        default_severity: Severity::Allow,
3074        warn_since: None,
3075        deny_since: None,
3076    },
3077    Lint {
3078        label: "async_fn_traits",
3079        description: r##"# `async_fn_traits`
3080
3081See Also: [`fn_traits`](../library-features/fn-traits.md)
3082
3083----
3084
3085The `async_fn_traits` feature allows for implementation of the [`AsyncFn*`] traits
3086for creating custom closure-like types that return futures.
3087
3088[`AsyncFn*`]: ../../std/ops/trait.AsyncFn.html
3089
3090The main difference to the `Fn*` family of traits is that `AsyncFn` can return a future
3091that borrows from itself (`FnOnce::Output` has no lifetime parameters, while `AsyncFnMut::CallRefFuture` does).
3092"##,
3093        default_severity: Severity::Allow,
3094        warn_since: None,
3095        deny_since: None,
3096    },
3097    Lint {
3098        label: "async_for_loop",
3099        description: r##"# `async_for_loop`
3100
3101The tracking issue for this feature is: [#118898]
3102
3103[#118898]: https://github.com/rust-lang/rust/issues/118898
3104
3105------------------------
3106"##,
3107        default_severity: Severity::Allow,
3108        warn_since: None,
3109        deny_since: None,
3110    },
3111    Lint {
3112        label: "async_gen_internals",
3113        description: r##"# `async_gen_internals`
3114
3115This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
3116
3117------------------------
3118"##,
3119        default_severity: Severity::Allow,
3120        warn_since: None,
3121        deny_since: None,
3122    },
3123    Lint {
3124        label: "async_iter_from_iter",
3125        description: r##"# `async_iter_from_iter`
3126
3127The tracking issue for this feature is: [#81798]
3128
3129[#81798]: https://github.com/rust-lang/rust/issues/81798
3130
3131------------------------
3132"##,
3133        default_severity: Severity::Allow,
3134        warn_since: None,
3135        deny_since: None,
3136    },
3137    Lint {
3138        label: "async_iterator",
3139        description: r##"# `async_iterator`
3140
3141The tracking issue for this feature is: [#79024]
3142
3143[#79024]: https://github.com/rust-lang/rust/issues/79024
3144
3145------------------------
3146"##,
3147        default_severity: Severity::Allow,
3148        warn_since: None,
3149        deny_since: None,
3150    },
3151    Lint {
3152        label: "async_trait_bounds",
3153        description: r##"# `async_trait_bounds`
3154
3155The tracking issue for this feature is: [#62290]
3156
3157[#62290]: https://github.com/rust-lang/rust/issues/62290
3158
3159------------------------
3160"##,
3161        default_severity: Severity::Allow,
3162        warn_since: None,
3163        deny_since: None,
3164    },
3165    Lint {
3166        label: "atomic_from_mut",
3167        description: r##"# `atomic_from_mut`
3168
3169The tracking issue for this feature is: [#76314]
3170
3171[#76314]: https://github.com/rust-lang/rust/issues/76314
3172
3173------------------------
3174"##,
3175        default_severity: Severity::Allow,
3176        warn_since: None,
3177        deny_since: None,
3178    },
3179    Lint {
3180        label: "auto_traits",
3181        description: r##"# `auto_traits`
3182
3183The tracking issue for this feature is [#13231]
3184
3185[#13231]: https://github.com/rust-lang/rust/issues/13231
3186
3187----
3188
3189The `auto_traits` feature gate allows you to define auto traits.
3190
3191Auto traits, like [`Send`] or [`Sync`] in the standard library, are marker traits
3192that are automatically implemented for every type, unless the type, or a type it contains,
3193has explicitly opted out via a negative impl. (Negative impls are separately controlled
3194by the `negative_impls` feature.)
3195
3196[`Send`]: ../../std/marker/trait.Send.html
3197[`Sync`]: ../../std/marker/trait.Sync.html
3198
3199```rust,ignore (partial-example)
3200impl !Trait for Type {}
3201```
3202
3203Example:
3204
3205```rust
3206#![feature(negative_impls)]
3207#![feature(auto_traits)]
3208
3209auto trait Valid {}
3210
3211struct True;
3212struct False;
3213
3214impl !Valid for False {}
3215
3216struct MaybeValid<T>(T);
3217
3218fn must_be_valid<T: Valid>(_t: T) { }
3219
3220fn main() {
3221    // works
3222    must_be_valid( MaybeValid(True) );
3223
3224    // compiler error - trait bound not satisfied
3225    // must_be_valid( MaybeValid(False) );
3226}
3227```
3228
3229## Automatic trait implementations
3230
3231When a type is declared as an `auto trait`, we will automatically
3232create impls for every struct/enum/union, unless an explicit impl is
3233provided. These automatic impls contain a where clause for each field
3234of the form `T: AutoTrait`, where `T` is the type of the field and
3235`AutoTrait` is the auto trait in question. As an example, consider the
3236struct `List` and the auto trait `Send`:
3237
3238```rust
3239struct List<T> {
3240  data: T,
3241  next: Option<Box<List<T>>>,
3242}
3243```
3244
3245Presuming that there is no explicit impl of `Send` for `List`, the
3246compiler will supply an automatic impl of the form:
3247
3248```rust
3249struct List<T> {
3250  data: T,
3251  next: Option<Box<List<T>>>,
3252}
3253
3254unsafe impl<T> Send for List<T>
3255where
3256  T: Send, // from the field `data`
3257  Option<Box<List<T>>>: Send, // from the field `next`
3258{ }
3259```
3260
3261Explicit impls may be either positive or negative. They take the form:
3262
3263```rust,ignore (partial-example)
3264impl<...> AutoTrait for StructName<..> { }
3265impl<...> !AutoTrait for StructName<..> { }
3266```
3267
3268## Coinduction: Auto traits permit cyclic matching
3269
3270Unlike ordinary trait matching, auto traits are **coinductive**. This
3271means, in short, that cycles which occur in trait matching are
3272considered ok. As an example, consider the recursive struct `List`
3273introduced in the previous section. In attempting to determine whether
3274`List: Send`, we would wind up in a cycle: to apply the impl, we must
3275show that `Option<Box<List>>: Send`, which will in turn require
3276`Box<List>: Send` and then finally `List: Send` again. Under ordinary
3277trait matching, this cycle would be an error, but for an auto trait it
3278is considered a successful match.
3279
3280## Items
3281
3282Auto traits cannot have any trait items, such as methods or associated types. This ensures that we can generate default implementations.
3283
3284## Supertraits
3285
3286Auto traits cannot have supertraits. This is for soundness reasons, as the interaction of coinduction with implied bounds is difficult to reconcile.
3287"##,
3288        default_severity: Severity::Allow,
3289        warn_since: None,
3290        deny_since: None,
3291    },
3292    Lint {
3293        label: "autodiff",
3294        description: r##"# `autodiff`
3295
3296The tracking issue for this feature is: [#124509]
3297
3298[#124509]: https://github.com/rust-lang/rust/issues/124509
3299
3300------------------------
3301"##,
3302        default_severity: Severity::Allow,
3303        warn_since: None,
3304        deny_since: None,
3305    },
3306    Lint {
3307        label: "avx512_target_feature",
3308        description: r##"# `avx512_target_feature`
3309
3310The tracking issue for this feature is: [#44839]
3311
3312[#44839]: https://github.com/rust-lang/rust/issues/44839
3313
3314------------------------
3315"##,
3316        default_severity: Severity::Allow,
3317        warn_since: None,
3318        deny_since: None,
3319    },
3320    Lint {
3321        label: "backtrace_frames",
3322        description: r##"# `backtrace_frames`
3323
3324The tracking issue for this feature is: [#79676]
3325
3326[#79676]: https://github.com/rust-lang/rust/issues/79676
3327
3328------------------------
3329"##,
3330        default_severity: Severity::Allow,
3331        warn_since: None,
3332        deny_since: None,
3333    },
3334    Lint {
3335        label: "bigint_helper_methods",
3336        description: r##"# `bigint_helper_methods`
3337
3338The tracking issue for this feature is: [#85532]
3339
3340[#85532]: https://github.com/rust-lang/rust/issues/85532
3341
3342------------------------
3343"##,
3344        default_severity: Severity::Allow,
3345        warn_since: None,
3346        deny_since: None,
3347    },
3348    Lint {
3349        label: "binary_heap_drain_sorted",
3350        description: r##"# `binary_heap_drain_sorted`
3351
3352The tracking issue for this feature is: [#59278]
3353
3354[#59278]: https://github.com/rust-lang/rust/issues/59278
3355
3356------------------------
3357"##,
3358        default_severity: Severity::Allow,
3359        warn_since: None,
3360        deny_since: None,
3361    },
3362    Lint {
3363        label: "binary_heap_into_iter_sorted",
3364        description: r##"# `binary_heap_into_iter_sorted`
3365
3366The tracking issue for this feature is: [#59278]
3367
3368[#59278]: https://github.com/rust-lang/rust/issues/59278
3369
3370------------------------
3371"##,
3372        default_severity: Severity::Allow,
3373        warn_since: None,
3374        deny_since: None,
3375    },
3376    Lint {
3377        label: "bound_as_ref",
3378        description: r##"# `bound_as_ref`
3379
3380The tracking issue for this feature is: [#80996]
3381
3382[#80996]: https://github.com/rust-lang/rust/issues/80996
3383
3384------------------------
3385"##,
3386        default_severity: Severity::Allow,
3387        warn_since: None,
3388        deny_since: None,
3389    },
3390    Lint {
3391        label: "box_as_ptr",
3392        description: r##"# `box_as_ptr`
3393
3394The tracking issue for this feature is: [#129090]
3395
3396[#129090]: https://github.com/rust-lang/rust/issues/129090
3397
3398------------------------
3399"##,
3400        default_severity: Severity::Allow,
3401        warn_since: None,
3402        deny_since: None,
3403    },
3404    Lint {
3405        label: "box_into_boxed_slice",
3406        description: r##"# `box_into_boxed_slice`
3407
3408The tracking issue for this feature is: [#71582]
3409
3410[#71582]: https://github.com/rust-lang/rust/issues/71582
3411
3412------------------------
3413"##,
3414        default_severity: Severity::Allow,
3415        warn_since: None,
3416        deny_since: None,
3417    },
3418    Lint {
3419        label: "box_into_inner",
3420        description: r##"# `box_into_inner`
3421
3422The tracking issue for this feature is: [#80437]
3423
3424[#80437]: https://github.com/rust-lang/rust/issues/80437
3425
3426------------------------
3427"##,
3428        default_severity: Severity::Allow,
3429        warn_since: None,
3430        deny_since: None,
3431    },
3432    Lint {
3433        label: "box_patterns",
3434        description: r##"# `box_patterns`
3435
3436The tracking issue for this feature is: [#29641]
3437
3438[#29641]: https://github.com/rust-lang/rust/issues/29641
3439
3440------------------------
3441
3442Box patterns let you match on `Box<T>`s:
3443
3444
3445```rust
3446#![feature(box_patterns)]
3447
3448fn main() {
3449    let b = Some(Box::new(5));
3450    match b {
3451        Some(box n) if n < 0 => {
3452            println!("Box contains negative number {n}");
3453        },
3454        Some(box n) if n >= 0 => {
3455            println!("Box contains non-negative number {n}");
3456        },
3457        None => {
3458            println!("No box");
3459        },
3460        _ => unreachable!()
3461    }
3462}
3463```
3464"##,
3465        default_severity: Severity::Allow,
3466        warn_since: None,
3467        deny_since: None,
3468    },
3469    Lint {
3470        label: "box_uninit_write",
3471        description: r##"# `box_uninit_write`
3472
3473The tracking issue for this feature is: [#129397]
3474
3475[#129397]: https://github.com/rust-lang/rust/issues/129397
3476
3477------------------------
3478"##,
3479        default_severity: Severity::Allow,
3480        warn_since: None,
3481        deny_since: None,
3482    },
3483    Lint {
3484        label: "box_vec_non_null",
3485        description: r##"# `box_vec_non_null`
3486
3487The tracking issue for this feature is: [#130364]
3488
3489[#130364]: https://github.com/rust-lang/rust/issues/130364
3490
3491------------------------
3492"##,
3493        default_severity: Severity::Allow,
3494        warn_since: None,
3495        deny_since: None,
3496    },
3497    Lint {
3498        label: "bpf_target_feature",
3499        description: r##"# `bpf_target_feature`
3500
3501The tracking issue for this feature is: [#44839]
3502
3503[#44839]: https://github.com/rust-lang/rust/issues/44839
3504
3505------------------------
3506"##,
3507        default_severity: Severity::Allow,
3508        warn_since: None,
3509        deny_since: None,
3510    },
3511    Lint {
3512        label: "breakpoint",
3513        description: r##"# `breakpoint`
3514
3515The tracking issue for this feature is: [#133724]
3516
3517[#133724]: https://github.com/rust-lang/rust/issues/133724
3518
3519------------------------
3520"##,
3521        default_severity: Severity::Allow,
3522        warn_since: None,
3523        deny_since: None,
3524    },
3525    Lint {
3526        label: "btree_cursors",
3527        description: r##"# `btree_cursors`
3528
3529The tracking issue for this feature is: [#107540]
3530
3531[#107540]: https://github.com/rust-lang/rust/issues/107540
3532
3533------------------------
3534"##,
3535        default_severity: Severity::Allow,
3536        warn_since: None,
3537        deny_since: None,
3538    },
3539    Lint {
3540        label: "btree_entry_insert",
3541        description: r##"# `btree_entry_insert`
3542
3543The tracking issue for this feature is: [#65225]
3544
3545[#65225]: https://github.com/rust-lang/rust/issues/65225
3546
3547------------------------
3548"##,
3549        default_severity: Severity::Allow,
3550        warn_since: None,
3551        deny_since: None,
3552    },
3553    Lint {
3554        label: "btree_extract_if",
3555        description: r##"# `btree_extract_if`
3556
3557The tracking issue for this feature is: [#70530]
3558
3559[#70530]: https://github.com/rust-lang/rust/issues/70530
3560
3561------------------------
3562"##,
3563        default_severity: Severity::Allow,
3564        warn_since: None,
3565        deny_since: None,
3566    },
3567    Lint {
3568        label: "btree_set_entry",
3569        description: r##"# `btree_set_entry`
3570
3571The tracking issue for this feature is: [#133549]
3572
3573[#133549]: https://github.com/rust-lang/rust/issues/133549
3574
3575------------------------
3576"##,
3577        default_severity: Severity::Allow,
3578        warn_since: None,
3579        deny_since: None,
3580    },
3581    Lint {
3582        label: "btreemap_alloc",
3583        description: r##"# `btreemap_alloc`
3584
3585The tracking issue for this feature is: [#32838]
3586
3587[#32838]: https://github.com/rust-lang/rust/issues/32838
3588
3589------------------------
3590"##,
3591        default_severity: Severity::Allow,
3592        warn_since: None,
3593        deny_since: None,
3594    },
3595    Lint {
3596        label: "buf_read_has_data_left",
3597        description: r##"# `buf_read_has_data_left`
3598
3599The tracking issue for this feature is: [#86423]
3600
3601[#86423]: https://github.com/rust-lang/rust/issues/86423
3602
3603------------------------
3604"##,
3605        default_severity: Severity::Allow,
3606        warn_since: None,
3607        deny_since: None,
3608    },
3609    Lint {
3610        label: "bufreader_peek",
3611        description: r##"# `bufreader_peek`
3612
3613The tracking issue for this feature is: [#128405]
3614
3615[#128405]: https://github.com/rust-lang/rust/issues/128405
3616
3617------------------------
3618"##,
3619        default_severity: Severity::Allow,
3620        warn_since: None,
3621        deny_since: None,
3622    },
3623    Lint {
3624        label: "builtin_syntax",
3625        description: r##"# `builtin_syntax`
3626
3627The tracking issue for this feature is: [#110680]
3628
3629[#110680]: https://github.com/rust-lang/rust/issues/110680
3630
3631------------------------
3632"##,
3633        default_severity: Severity::Allow,
3634        warn_since: None,
3635        deny_since: None,
3636    },
3637    Lint {
3638        label: "c_size_t",
3639        description: r##"# `c_size_t`
3640
3641The tracking issue for this feature is: [#88345]
3642
3643[#88345]: https://github.com/rust-lang/rust/issues/88345
3644
3645------------------------
3646"##,
3647        default_severity: Severity::Allow,
3648        warn_since: None,
3649        deny_since: None,
3650    },
3651    Lint {
3652        label: "c_str_module",
3653        description: r##"# `c_str_module`
3654
3655The tracking issue for this feature is: [#112134]
3656
3657[#112134]: https://github.com/rust-lang/rust/issues/112134
3658
3659------------------------
3660"##,
3661        default_severity: Severity::Allow,
3662        warn_since: None,
3663        deny_since: None,
3664    },
3665    Lint {
3666        label: "c_variadic",
3667        description: r##"# `c_variadic`
3668
3669The tracking issue for this feature is: [#44930]
3670
3671[#44930]: https://github.com/rust-lang/rust/issues/44930
3672
3673------------------------
3674
3675The `c_variadic` language feature enables C-variadic functions to be
3676defined in Rust. They may be called both from within Rust and via FFI.
3677
3678## Examples
3679
3680```rust
3681#![feature(c_variadic)]
3682
3683pub unsafe extern "C" fn add(n: usize, mut args: ...) -> usize {
3684    let mut sum = 0;
3685    for _ in 0..n {
3686        sum += args.arg::<usize>();
3687    }
3688    sum
3689}
3690```
3691"##,
3692        default_severity: Severity::Allow,
3693        warn_since: None,
3694        deny_since: None,
3695    },
3696    Lint {
3697        label: "c_variadic",
3698        description: r##"# `c_variadic`
3699
3700The tracking issue for this feature is: [#44930]
3701
3702[#44930]: https://github.com/rust-lang/rust/issues/44930
3703
3704------------------------
3705
3706The `c_variadic` library feature exposes the `VaList` structure,
3707Rust's analogue of C's `va_list` type.
3708
3709## Examples
3710
3711```rust
3712#![feature(c_variadic)]
3713
3714use std::ffi::VaList;
3715
3716pub unsafe extern "C" fn vadd(n: usize, mut args: VaList) -> usize {
3717    let mut sum = 0;
3718    for _ in 0..n {
3719        sum += args.arg::<usize>();
3720    }
3721    sum
3722}
3723```
3724"##,
3725        default_severity: Severity::Allow,
3726        warn_since: None,
3727        deny_since: None,
3728    },
3729    Lint {
3730        label: "c_void_variant",
3731        description: r##"# `c_void_variant`
3732
3733This feature is internal to the Rust compiler and is not intended for general use.
3734
3735------------------------
3736"##,
3737        default_severity: Severity::Allow,
3738        warn_since: None,
3739        deny_since: None,
3740    },
3741    Lint {
3742        label: "can_vector",
3743        description: r##"# `can_vector`
3744
3745The tracking issue for this feature is: [#69941]
3746
3747[#69941]: https://github.com/rust-lang/rust/issues/69941
3748
3749------------------------
3750"##,
3751        default_severity: Severity::Allow,
3752        warn_since: None,
3753        deny_since: None,
3754    },
3755    Lint {
3756        label: "cell_leak",
3757        description: r##"# `cell_leak`
3758
3759The tracking issue for this feature is: [#69099]
3760
3761[#69099]: https://github.com/rust-lang/rust/issues/69099
3762
3763------------------------
3764"##,
3765        default_severity: Severity::Allow,
3766        warn_since: None,
3767        deny_since: None,
3768    },
3769    Lint {
3770        label: "cell_update",
3771        description: r##"# `cell_update`
3772
3773The tracking issue for this feature is: [#50186]
3774
3775[#50186]: https://github.com/rust-lang/rust/issues/50186
3776
3777------------------------
3778"##,
3779        default_severity: Severity::Allow,
3780        warn_since: None,
3781        deny_since: None,
3782    },
3783    Lint {
3784        label: "cfg_accessible",
3785        description: r##"# `cfg_accessible`
3786
3787The tracking issue for this feature is: [#64797]
3788
3789[#64797]: https://github.com/rust-lang/rust/issues/64797
3790
3791------------------------
3792"##,
3793        default_severity: Severity::Allow,
3794        warn_since: None,
3795        deny_since: None,
3796    },
3797    Lint {
3798        label: "cfg_eval",
3799        description: r##"# `cfg_eval`
3800
3801The tracking issue for this feature is: [#82679]
3802
3803[#82679]: https://github.com/rust-lang/rust/issues/82679
3804
3805------------------------
3806"##,
3807        default_severity: Severity::Allow,
3808        warn_since: None,
3809        deny_since: None,
3810    },
3811    Lint {
3812        label: "cfg_match",
3813        description: r##"# `cfg_match`
3814
3815The tracking issue for this feature is: [#115585]
3816
3817[#115585]: https://github.com/rust-lang/rust/issues/115585
3818
3819------------------------
3820"##,
3821        default_severity: Severity::Allow,
3822        warn_since: None,
3823        deny_since: None,
3824    },
3825    Lint {
3826        label: "cfg_overflow_checks",
3827        description: r##"# `cfg_overflow_checks`
3828
3829The tracking issue for this feature is: [#111466]
3830
3831[#111466]: https://github.com/rust-lang/rust/issues/111466
3832
3833------------------------
3834"##,
3835        default_severity: Severity::Allow,
3836        warn_since: None,
3837        deny_since: None,
3838    },
3839    Lint {
3840        label: "cfg_relocation_model",
3841        description: r##"# `cfg_relocation_model`
3842
3843The tracking issue for this feature is: [#114929]
3844
3845[#114929]: https://github.com/rust-lang/rust/issues/114929
3846
3847------------------------
3848"##,
3849        default_severity: Severity::Allow,
3850        warn_since: None,
3851        deny_since: None,
3852    },
3853    Lint {
3854        label: "cfg_sanitize",
3855        description: r##"# `cfg_sanitize`
3856
3857The tracking issue for this feature is: [#39699]
3858
3859[#39699]: https://github.com/rust-lang/rust/issues/39699
3860
3861------------------------
3862
3863The `cfg_sanitize` feature makes it possible to execute different code
3864depending on whether a particular sanitizer is enabled or not.
3865
3866## Examples
3867
3868```rust
3869#![feature(cfg_sanitize)]
3870
3871#[cfg(sanitize = "thread")]
3872fn a() {
3873    // ...
3874}
3875
3876#[cfg(not(sanitize = "thread"))]
3877fn a() {
3878    // ...
3879}
3880
3881fn b() {
3882    if cfg!(sanitize = "leak") {
3883        // ...
3884    } else {
3885        // ...
3886    }
3887}
3888```
3889"##,
3890        default_severity: Severity::Allow,
3891        warn_since: None,
3892        deny_since: None,
3893    },
3894    Lint {
3895        label: "cfg_sanitizer_cfi",
3896        description: r##"# `cfg_sanitizer_cfi`
3897
3898The tracking issue for this feature is: [#89653]
3899
3900[#89653]: https://github.com/rust-lang/rust/issues/89653
3901
3902------------------------
3903"##,
3904        default_severity: Severity::Allow,
3905        warn_since: None,
3906        deny_since: None,
3907    },
3908    Lint {
3909        label: "cfg_target_compact",
3910        description: r##"# `cfg_target_compact`
3911
3912The tracking issue for this feature is: [#96901]
3913
3914[#96901]: https://github.com/rust-lang/rust/issues/96901
3915
3916------------------------
3917"##,
3918        default_severity: Severity::Allow,
3919        warn_since: None,
3920        deny_since: None,
3921    },
3922    Lint {
3923        label: "cfg_target_has_atomic",
3924        description: r##"# `cfg_target_has_atomic`
3925
3926The tracking issue for this feature is: [#94039]
3927
3928[#94039]: https://github.com/rust-lang/rust/issues/94039
3929
3930------------------------
3931"##,
3932        default_severity: Severity::Allow,
3933        warn_since: None,
3934        deny_since: None,
3935    },
3936    Lint {
3937        label: "cfg_target_has_atomic_equal_alignment",
3938        description: r##"# `cfg_target_has_atomic_equal_alignment`
3939
3940The tracking issue for this feature is: [#93822]
3941
3942[#93822]: https://github.com/rust-lang/rust/issues/93822
3943
3944------------------------
3945"##,
3946        default_severity: Severity::Allow,
3947        warn_since: None,
3948        deny_since: None,
3949    },
3950    Lint {
3951        label: "cfg_target_thread_local",
3952        description: r##"# `cfg_target_thread_local`
3953
3954The tracking issue for this feature is: [#29594]
3955
3956[#29594]: https://github.com/rust-lang/rust/issues/29594
3957
3958------------------------
3959"##,
3960        default_severity: Severity::Allow,
3961        warn_since: None,
3962        deny_since: None,
3963    },
3964    Lint {
3965        label: "cfg_ub_checks",
3966        description: r##"# `cfg_ub_checks`
3967
3968The tracking issue for this feature is: [#123499]
3969
3970[#123499]: https://github.com/rust-lang/rust/issues/123499
3971
3972------------------------
3973"##,
3974        default_severity: Severity::Allow,
3975        warn_since: None,
3976        deny_since: None,
3977    },
3978    Lint {
3979        label: "cfg_version",
3980        description: r##"# `cfg_version`
3981
3982The tracking issue for this feature is: [#64796]
3983
3984[#64796]: https://github.com/rust-lang/rust/issues/64796
3985
3986------------------------
3987
3988The `cfg_version` feature makes it possible to execute different code
3989depending on the compiler version. It will return true if the compiler
3990version is greater than or equal to the specified version.
3991
3992## Examples
3993
3994```rust
3995#![feature(cfg_version)]
3996
3997#[cfg(version("1.42"))] // 1.42 and above
3998fn a() {
3999    // ...
4000}
4001
4002#[cfg(not(version("1.42")))] // 1.41 and below
4003fn a() {
4004    // ...
4005}
4006
4007fn b() {
4008    if cfg!(version("1.42")) {
4009        // ...
4010    } else {
4011        // ...
4012    }
4013}
4014```
4015"##,
4016        default_severity: Severity::Allow,
4017        warn_since: None,
4018        deny_since: None,
4019    },
4020    Lint {
4021        label: "cfi_encoding",
4022        description: r##"# `cfi_encoding`
4023
4024The tracking issue for this feature is: [#89653]
4025
4026[#89653]: https://github.com/rust-lang/rust/issues/89653
4027
4028------------------------
4029
4030The `cfi_encoding` feature allows the user to define a CFI encoding for a type.
4031It allows the user to use a different names for types that otherwise would be
4032required to have the same name as used in externally defined C functions.
4033
4034## Examples
4035
4036```rust
4037#![feature(cfi_encoding, extern_types)]
4038
4039#[cfi_encoding = "3Foo"]
4040pub struct Type1(i32);
4041
4042extern {
4043    #[cfi_encoding = "3Bar"]
4044    type Type2;
4045}
4046```
4047"##,
4048        default_severity: Severity::Allow,
4049        warn_since: None,
4050        deny_since: None,
4051    },
4052    Lint {
4053        label: "char_internals",
4054        description: r##"# `char_internals`
4055
4056This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
4057
4058------------------------
4059"##,
4060        default_severity: Severity::Allow,
4061        warn_since: None,
4062        deny_since: None,
4063    },
4064    Lint {
4065        label: "clone_to_uninit",
4066        description: r##"# `clone_to_uninit`
4067
4068The tracking issue for this feature is: [#126799]
4069
4070[#126799]: https://github.com/rust-lang/rust/issues/126799
4071
4072------------------------
4073"##,
4074        default_severity: Severity::Allow,
4075        warn_since: None,
4076        deny_since: None,
4077    },
4078    Lint {
4079        label: "closure_lifetime_binder",
4080        description: r##"# `closure_lifetime_binder`
4081
4082The tracking issue for this feature is: [#97362]
4083
4084[#97362]: https://github.com/rust-lang/rust/issues/97362
4085
4086------------------------
4087"##,
4088        default_severity: Severity::Allow,
4089        warn_since: None,
4090        deny_since: None,
4091    },
4092    Lint {
4093        label: "closure_track_caller",
4094        description: r##"# `closure_track_caller`
4095
4096The tracking issue for this feature is: [#87417]
4097
4098[#87417]: https://github.com/rust-lang/rust/issues/87417
4099
4100------------------------
4101
4102Allows using the `#[track_caller]` attribute on closures and coroutines.
4103Calls made to the closure or coroutine will have caller information
4104available through `std::panic::Location::caller()`, just like using
4105`#[track_caller]` on a function.
4106"##,
4107        default_severity: Severity::Allow,
4108        warn_since: None,
4109        deny_since: None,
4110    },
4111    Lint {
4112        label: "cmp_minmax",
4113        description: r##"# `cmp_minmax`
4114
4115The tracking issue for this feature is: [#115939]
4116
4117[#115939]: https://github.com/rust-lang/rust/issues/115939
4118
4119------------------------
4120"##,
4121        default_severity: Severity::Allow,
4122        warn_since: None,
4123        deny_since: None,
4124    },
4125    Lint {
4126        label: "cmse_nonsecure_entry",
4127        description: r##"# `cmse_nonsecure_entry`
4128
4129The tracking issue for this feature is: [#75835]
4130
4131[#75835]: https://github.com/rust-lang/rust/issues/75835
4132
4133------------------------
4134
4135The [TrustZone-M
4136feature](https://developer.arm.com/documentation/100690/latest/) is available
4137for targets with the Armv8-M architecture profile (`thumbv8m` in their target
4138name).
4139LLVM, the Rust compiler and the linker are providing
4140[support](https://developer.arm.com/documentation/ecm0359818/latest/) for the
4141TrustZone-M feature.
4142
4143One of the things provided, with this unstable feature, is the
4144`C-cmse-nonsecure-entry` ABI. This ABI marks a Secure function as an
4145entry function (see [section
41465.4](https://developer.arm.com/documentation/ecm0359818/latest/) for details).
4147With this ABI, the compiler will do the following:
4148* add a special symbol on the function which is the `__acle_se_` prefix and the
4149  standard function name
4150* constrain the number of parameters to avoid using the Non-Secure stack
4151* before returning from the function, clear registers that might contain Secure
4152  information
4153* use the `BXNS` instruction to return
4154
4155Because the stack can not be used to pass parameters, there will be compilation
4156errors if:
4157* the total size of all parameters is too big (for example more than four 32
4158  bits integers)
4159* the entry function is not using a C ABI
4160
4161The special symbol `__acle_se_` will be used by the linker to generate a secure
4162gateway veneer.
4163
4164<!-- NOTE(ignore) this example is specific to thumbv8m targets -->
4165
4166``` rust,ignore
4167#![no_std]
4168#![feature(cmse_nonsecure_entry)]
4169
4170#[no_mangle]
4171pub extern "C-cmse-nonsecure-entry" fn entry_function(input: u32) -> u32 {
4172    input + 6
4173}
4174```
4175
4176``` text
4177$ rustc --emit obj --crate-type lib --target thumbv8m.main-none-eabi function.rs
4178$ arm-none-eabi-objdump -D function.o
4179
418000000000 <entry_function>:
4181   0:   b580            push    {r7, lr}
4182   2:   466f            mov     r7, sp
4183   4:   b082            sub     sp, #8
4184   6:   9001            str     r0, [sp, #4]
4185   8:   1d81            adds    r1, r0, #6
4186   a:   460a            mov     r2, r1
4187   c:   4281            cmp     r1, r0
4188   e:   9200            str     r2, [sp, #0]
4189  10:   d30b            bcc.n   2a <entry_function+0x2a>
4190  12:   e7ff            b.n     14 <entry_function+0x14>
4191  14:   9800            ldr     r0, [sp, #0]
4192  16:   b002            add     sp, #8
4193  18:   e8bd 4080       ldmia.w sp!, {r7, lr}
4194  1c:   4671            mov     r1, lr
4195  1e:   4672            mov     r2, lr
4196  20:   4673            mov     r3, lr
4197  22:   46f4            mov     ip, lr
4198  24:   f38e 8800       msr     CPSR_f, lr
4199  28:   4774            bxns    lr
4200  2a:   f240 0000       movw    r0, #0
4201  2e:   f2c0 0000       movt    r0, #0
4202  32:   f240 0200       movw    r2, #0
4203  36:   f2c0 0200       movt    r2, #0
4204  3a:   211c            movs    r1, #28
4205  3c:   f7ff fffe       bl      0 <_ZN4core9panicking5panic17h5c028258ca2fb3f5E>
4206  40:   defe            udf     #254    ; 0xfe
4207```
4208"##,
4209        default_severity: Severity::Allow,
4210        warn_since: None,
4211        deny_since: None,
4212    },
4213    Lint {
4214        label: "coerce_unsized",
4215        description: r##"# `coerce_unsized`
4216
4217The tracking issue for this feature is: [#18598]
4218
4219[#18598]: https://github.com/rust-lang/rust/issues/18598
4220
4221------------------------
4222"##,
4223        default_severity: Severity::Allow,
4224        warn_since: None,
4225        deny_since: None,
4226    },
4227    Lint {
4228        label: "compiler_builtins",
4229        description: r##"# `compiler_builtins`
4230
4231This feature is internal to the Rust compiler and is not intended for general use.
4232
4233------------------------
4234"##,
4235        default_severity: Severity::Allow,
4236        warn_since: None,
4237        deny_since: None,
4238    },
4239    Lint {
4240        label: "concat_bytes",
4241        description: r##"# `concat_bytes`
4242
4243The tracking issue for this feature is: [#87555]
4244
4245[#87555]: https://github.com/rust-lang/rust/issues/87555
4246
4247------------------------
4248"##,
4249        default_severity: Severity::Allow,
4250        warn_since: None,
4251        deny_since: None,
4252    },
4253    Lint {
4254        label: "concat_idents",
4255        description: r##"# `concat_idents`
4256
4257The tracking issue for this feature is: [#29599]
4258
4259[#29599]: https://github.com/rust-lang/rust/issues/29599
4260
4261------------------------
4262
4263The `concat_idents` feature adds a macro for concatenating multiple identifiers
4264into one identifier.
4265
4266## Examples
4267
4268```rust
4269#![feature(concat_idents)]
4270
4271fn main() {
4272    fn foobar() -> u32 { 23 }
4273    let f = concat_idents!(foo, bar);
4274    assert_eq!(f(), 23);
4275}
4276```
4277"##,
4278        default_severity: Severity::Allow,
4279        warn_since: None,
4280        deny_since: None,
4281    },
4282    Lint {
4283        label: "const_alloc_error",
4284        description: r##"# `const_alloc_error`
4285
4286The tracking issue for this feature is: [#92523]
4287
4288[#92523]: https://github.com/rust-lang/rust/issues/92523
4289
4290------------------------
4291"##,
4292        default_severity: Severity::Allow,
4293        warn_since: None,
4294        deny_since: None,
4295    },
4296    Lint {
4297        label: "const_alloc_layout",
4298        description: r##"# `const_alloc_layout`
4299
4300The tracking issue for this feature is: [#67521]
4301
4302[#67521]: https://github.com/rust-lang/rust/issues/67521
4303
4304------------------------
4305"##,
4306        default_severity: Severity::Allow,
4307        warn_since: None,
4308        deny_since: None,
4309    },
4310    Lint {
4311        label: "const_array_as_mut_slice",
4312        description: r##"# `const_array_as_mut_slice`
4313
4314The tracking issue for this feature is: [#133333]
4315
4316[#133333]: https://github.com/rust-lang/rust/issues/133333
4317
4318------------------------
4319"##,
4320        default_severity: Severity::Allow,
4321        warn_since: None,
4322        deny_since: None,
4323    },
4324    Lint {
4325        label: "const_array_each_ref",
4326        description: r##"# `const_array_each_ref`
4327
4328The tracking issue for this feature is: [#133289]
4329
4330[#133289]: https://github.com/rust-lang/rust/issues/133289
4331
4332------------------------
4333"##,
4334        default_severity: Severity::Allow,
4335        warn_since: None,
4336        deny_since: None,
4337    },
4338    Lint {
4339        label: "const_async_blocks",
4340        description: r##"# `const_async_blocks`
4341
4342The tracking issue for this feature is: [#85368]
4343
4344[#85368]: https://github.com/rust-lang/rust/issues/85368
4345
4346------------------------
4347"##,
4348        default_severity: Severity::Allow,
4349        warn_since: None,
4350        deny_since: None,
4351    },
4352    Lint {
4353        label: "const_black_box",
4354        description: r##"# `const_black_box`
4355
4356This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
4357
4358------------------------
4359"##,
4360        default_severity: Severity::Allow,
4361        warn_since: None,
4362        deny_since: None,
4363    },
4364    Lint {
4365        label: "const_box",
4366        description: r##"# `const_box`
4367
4368The tracking issue for this feature is: [#92521]
4369
4370[#92521]: https://github.com/rust-lang/rust/issues/92521
4371
4372------------------------
4373"##,
4374        default_severity: Severity::Allow,
4375        warn_since: None,
4376        deny_since: None,
4377    },
4378    Lint {
4379        label: "const_btree_len",
4380        description: r##"# `const_btree_len`
4381
4382This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
4383
4384------------------------
4385"##,
4386        default_severity: Severity::Allow,
4387        warn_since: None,
4388        deny_since: None,
4389    },
4390    Lint {
4391        label: "const_cell",
4392        description: r##"# `const_cell`
4393
4394The tracking issue for this feature is: [#131283]
4395
4396[#131283]: https://github.com/rust-lang/rust/issues/131283
4397
4398------------------------
4399"##,
4400        default_severity: Severity::Allow,
4401        warn_since: None,
4402        deny_since: None,
4403    },
4404    Lint {
4405        label: "const_char_classify",
4406        description: r##"# `const_char_classify`
4407
4408The tracking issue for this feature is: [#132241]
4409
4410[#132241]: https://github.com/rust-lang/rust/issues/132241
4411
4412------------------------
4413"##,
4414        default_severity: Severity::Allow,
4415        warn_since: None,
4416        deny_since: None,
4417    },
4418    Lint {
4419        label: "const_closures",
4420        description: r##"# `const_closures`
4421
4422The tracking issue for this feature is: [#106003]
4423
4424[#106003]: https://github.com/rust-lang/rust/issues/106003
4425
4426------------------------
4427"##,
4428        default_severity: Severity::Allow,
4429        warn_since: None,
4430        deny_since: None,
4431    },
4432    Lint {
4433        label: "const_copy_from_slice",
4434        description: r##"# `const_copy_from_slice`
4435
4436The tracking issue for this feature is: [#131415]
4437
4438[#131415]: https://github.com/rust-lang/rust/issues/131415
4439
4440------------------------
4441"##,
4442        default_severity: Severity::Allow,
4443        warn_since: None,
4444        deny_since: None,
4445    },
4446    Lint {
4447        label: "const_destruct",
4448        description: r##"# `const_destruct`
4449
4450The tracking issue for this feature is: [#133214]
4451
4452[#133214]: https://github.com/rust-lang/rust/issues/133214
4453
4454------------------------
4455"##,
4456        default_severity: Severity::Allow,
4457        warn_since: None,
4458        deny_since: None,
4459    },
4460    Lint {
4461        label: "const_eval_select",
4462        description: r##"# `const_eval_select`
4463
4464The tracking issue for this feature is: [#124625]
4465
4466[#124625]: https://github.com/rust-lang/rust/issues/124625
4467
4468------------------------
4469"##,
4470        default_severity: Severity::Allow,
4471        warn_since: None,
4472        deny_since: None,
4473    },
4474    Lint {
4475        label: "const_for",
4476        description: r##"# `const_for`
4477
4478The tracking issue for this feature is: [#87575]
4479
4480[#87575]: https://github.com/rust-lang/rust/issues/87575
4481
4482------------------------
4483"##,
4484        default_severity: Severity::Allow,
4485        warn_since: None,
4486        deny_since: None,
4487    },
4488    Lint {
4489        label: "const_format_args",
4490        description: r##"# `const_format_args`
4491
4492This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
4493
4494------------------------
4495"##,
4496        default_severity: Severity::Allow,
4497        warn_since: None,
4498        deny_since: None,
4499    },
4500    Lint {
4501        label: "const_heap",
4502        description: r##"# `const_heap`
4503
4504The tracking issue for this feature is: [#79597]
4505
4506[#79597]: https://github.com/rust-lang/rust/issues/79597
4507
4508------------------------
4509"##,
4510        default_severity: Severity::Allow,
4511        warn_since: None,
4512        deny_since: None,
4513    },
4514    Lint {
4515        label: "const_is_char_boundary",
4516        description: r##"# `const_is_char_boundary`
4517
4518The tracking issue for this feature is: [#131516]
4519
4520[#131516]: https://github.com/rust-lang/rust/issues/131516
4521
4522------------------------
4523"##,
4524        default_severity: Severity::Allow,
4525        warn_since: None,
4526        deny_since: None,
4527    },
4528    Lint {
4529        label: "const_mut_cursor",
4530        description: r##"# `const_mut_cursor`
4531
4532The tracking issue for this feature is: [#130801]
4533
4534[#130801]: https://github.com/rust-lang/rust/issues/130801
4535
4536------------------------
4537"##,
4538        default_severity: Severity::Allow,
4539        warn_since: None,
4540        deny_since: None,
4541    },
4542    Lint {
4543        label: "const_precise_live_drops",
4544        description: r##"# `const_precise_live_drops`
4545
4546The tracking issue for this feature is: [#73255]
4547
4548[#73255]: https://github.com/rust-lang/rust/issues/73255
4549
4550------------------------
4551"##,
4552        default_severity: Severity::Allow,
4553        warn_since: None,
4554        deny_since: None,
4555    },
4556    Lint {
4557        label: "const_ptr_sub_ptr",
4558        description: r##"# `const_ptr_sub_ptr`
4559
4560The tracking issue for this feature is: [#95892]
4561
4562[#95892]: https://github.com/rust-lang/rust/issues/95892
4563
4564------------------------
4565"##,
4566        default_severity: Severity::Allow,
4567        warn_since: None,
4568        deny_since: None,
4569    },
4570    Lint {
4571        label: "const_range_bounds",
4572        description: r##"# `const_range_bounds`
4573
4574The tracking issue for this feature is: [#108082]
4575
4576[#108082]: https://github.com/rust-lang/rust/issues/108082
4577
4578------------------------
4579"##,
4580        default_severity: Severity::Allow,
4581        warn_since: None,
4582        deny_since: None,
4583    },
4584    Lint {
4585        label: "const_raw_ptr_comparison",
4586        description: r##"# `const_raw_ptr_comparison`
4587
4588The tracking issue for this feature is: [#53020]
4589
4590[#53020]: https://github.com/rust-lang/rust/issues/53020
4591
4592------------------------
4593"##,
4594        default_severity: Severity::Allow,
4595        warn_since: None,
4596        deny_since: None,
4597    },
4598    Lint {
4599        label: "const_slice_flatten",
4600        description: r##"# `const_slice_flatten`
4601
4602The tracking issue for this feature is: [#95629]
4603
4604[#95629]: https://github.com/rust-lang/rust/issues/95629
4605
4606------------------------
4607"##,
4608        default_severity: Severity::Allow,
4609        warn_since: None,
4610        deny_since: None,
4611    },
4612    Lint {
4613        label: "const_slice_from_mut_ptr_range",
4614        description: r##"# `const_slice_from_mut_ptr_range`
4615
4616The tracking issue for this feature is: [#89792]
4617
4618[#89792]: https://github.com/rust-lang/rust/issues/89792
4619
4620------------------------
4621"##,
4622        default_severity: Severity::Allow,
4623        warn_since: None,
4624        deny_since: None,
4625    },
4626    Lint {
4627        label: "const_slice_from_ptr_range",
4628        description: r##"# `const_slice_from_ptr_range`
4629
4630The tracking issue for this feature is: [#89792]
4631
4632[#89792]: https://github.com/rust-lang/rust/issues/89792
4633
4634------------------------
4635"##,
4636        default_severity: Severity::Allow,
4637        warn_since: None,
4638        deny_since: None,
4639    },
4640    Lint {
4641        label: "const_sockaddr_setters",
4642        description: r##"# `const_sockaddr_setters`
4643
4644The tracking issue for this feature is: [#131714]
4645
4646[#131714]: https://github.com/rust-lang/rust/issues/131714
4647
4648------------------------
4649"##,
4650        default_severity: Severity::Allow,
4651        warn_since: None,
4652        deny_since: None,
4653    },
4654    Lint {
4655        label: "const_str_from_utf8",
4656        description: r##"# `const_str_from_utf8`
4657
4658The tracking issue for this feature is: [#91006]
4659
4660[#91006]: https://github.com/rust-lang/rust/issues/91006
4661
4662------------------------
4663"##,
4664        default_severity: Severity::Allow,
4665        warn_since: None,
4666        deny_since: None,
4667    },
4668    Lint {
4669        label: "const_str_split_at",
4670        description: r##"# `const_str_split_at`
4671
4672The tracking issue for this feature is: [#131518]
4673
4674[#131518]: https://github.com/rust-lang/rust/issues/131518
4675
4676------------------------
4677"##,
4678        default_severity: Severity::Allow,
4679        warn_since: None,
4680        deny_since: None,
4681    },
4682    Lint {
4683        label: "const_swap",
4684        description: r##"# `const_swap`
4685
4686The tracking issue for this feature is: [#83163]
4687
4688[#83163]: https://github.com/rust-lang/rust/issues/83163
4689
4690------------------------
4691"##,
4692        default_severity: Severity::Allow,
4693        warn_since: None,
4694        deny_since: None,
4695    },
4696    Lint {
4697        label: "const_swap_nonoverlapping",
4698        description: r##"# `const_swap_nonoverlapping`
4699
4700The tracking issue for this feature is: [#133668]
4701
4702[#133668]: https://github.com/rust-lang/rust/issues/133668
4703
4704------------------------
4705"##,
4706        default_severity: Severity::Allow,
4707        warn_since: None,
4708        deny_since: None,
4709    },
4710    Lint {
4711        label: "const_trait_impl",
4712        description: r##"# `const_trait_impl`
4713
4714The tracking issue for this feature is: [#143874]
4715
4716[#143874]: https://github.com/rust-lang/rust/issues/143874
4717
4718------------------------
4719"##,
4720        default_severity: Severity::Allow,
4721        warn_since: None,
4722        deny_since: None,
4723    },
4724    Lint {
4725        label: "const_try",
4726        description: r##"# `const_try`
4727
4728The tracking issue for this feature is: [#74935]
4729
4730[#74935]: https://github.com/rust-lang/rust/issues/74935
4731
4732------------------------
4733"##,
4734        default_severity: Severity::Allow,
4735        warn_since: None,
4736        deny_since: None,
4737    },
4738    Lint {
4739        label: "const_type_id",
4740        description: r##"# `const_type_id`
4741
4742The tracking issue for this feature is: [#77125]
4743
4744[#77125]: https://github.com/rust-lang/rust/issues/77125
4745
4746------------------------
4747"##,
4748        default_severity: Severity::Allow,
4749        warn_since: None,
4750        deny_since: None,
4751    },
4752    Lint {
4753        label: "const_type_name",
4754        description: r##"# `const_type_name`
4755
4756The tracking issue for this feature is: [#63084]
4757
4758[#63084]: https://github.com/rust-lang/rust/issues/63084
4759
4760------------------------
4761"##,
4762        default_severity: Severity::Allow,
4763        warn_since: None,
4764        deny_since: None,
4765    },
4766    Lint {
4767        label: "const_typed_swap",
4768        description: r##"# `const_typed_swap`
4769
4770This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
4771
4772------------------------
4773"##,
4774        default_severity: Severity::Allow,
4775        warn_since: None,
4776        deny_since: None,
4777    },
4778    Lint {
4779        label: "const_vec_string_slice",
4780        description: r##"# `const_vec_string_slice`
4781
4782The tracking issue for this feature is: [#129041]
4783
4784[#129041]: https://github.com/rust-lang/rust/issues/129041
4785
4786------------------------
4787"##,
4788        default_severity: Severity::Allow,
4789        warn_since: None,
4790        deny_since: None,
4791    },
4792    Lint {
4793        label: "container_error_extra",
4794        description: r##"# `container_error_extra`
4795
4796This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
4797
4798------------------------
4799"##,
4800        default_severity: Severity::Allow,
4801        warn_since: None,
4802        deny_since: None,
4803    },
4804    Lint {
4805        label: "context_ext",
4806        description: r##"# `context_ext`
4807
4808The tracking issue for this feature is: [#123392]
4809
4810[#123392]: https://github.com/rust-lang/rust/issues/123392
4811
4812------------------------
4813"##,
4814        default_severity: Severity::Allow,
4815        warn_since: None,
4816        deny_since: None,
4817    },
4818    Lint {
4819        label: "convert_float_to_int",
4820        description: r##"# `convert_float_to_int`
4821
4822The tracking issue for this feature is: [#67057]
4823
4824[#67057]: https://github.com/rust-lang/rust/issues/67057
4825
4826------------------------
4827"##,
4828        default_severity: Severity::Allow,
4829        warn_since: None,
4830        deny_since: None,
4831    },
4832    Lint {
4833        label: "core_intrinsics",
4834        description: r##"# `core_intrinsics`
4835
4836This feature is internal to the Rust compiler and is not intended for general use.
4837
4838------------------------
4839"##,
4840        default_severity: Severity::Allow,
4841        warn_since: None,
4842        deny_since: None,
4843    },
4844    Lint {
4845        label: "core_io_borrowed_buf",
4846        description: r##"# `core_io_borrowed_buf`
4847
4848The tracking issue for this feature is: [#117693]
4849
4850[#117693]: https://github.com/rust-lang/rust/issues/117693
4851
4852------------------------
4853"##,
4854        default_severity: Severity::Allow,
4855        warn_since: None,
4856        deny_since: None,
4857    },
4858    Lint {
4859        label: "core_private_bignum",
4860        description: r##"# `core_private_bignum`
4861
4862This feature is internal to the Rust compiler and is not intended for general use.
4863
4864------------------------
4865"##,
4866        default_severity: Severity::Allow,
4867        warn_since: None,
4868        deny_since: None,
4869    },
4870    Lint {
4871        label: "core_private_diy_float",
4872        description: r##"# `core_private_diy_float`
4873
4874This feature is internal to the Rust compiler and is not intended for general use.
4875
4876------------------------
4877"##,
4878        default_severity: Severity::Allow,
4879        warn_since: None,
4880        deny_since: None,
4881    },
4882    Lint {
4883        label: "coroutine_clone",
4884        description: r##"# `coroutine_clone`
4885
4886The tracking issue for this feature is: [#95360]
4887
4888[#95360]: https://github.com/rust-lang/rust/issues/95360
4889
4890------------------------
4891"##,
4892        default_severity: Severity::Allow,
4893        warn_since: None,
4894        deny_since: None,
4895    },
4896    Lint {
4897        label: "coroutine_trait",
4898        description: r##"# `coroutine_trait`
4899
4900The tracking issue for this feature is: [#43122]
4901
4902[#43122]: https://github.com/rust-lang/rust/issues/43122
4903
4904------------------------
4905"##,
4906        default_severity: Severity::Allow,
4907        warn_since: None,
4908        deny_since: None,
4909    },
4910    Lint {
4911        label: "coroutines",
4912        description: r##"# `coroutines`
4913
4914The tracking issue for this feature is: [#43122]
4915
4916[#43122]: https://github.com/rust-lang/rust/issues/43122
4917
4918------------------------
4919
4920The `coroutines` feature gate in Rust allows you to define coroutine or
4921coroutine literals. A coroutine is a "resumable function" that syntactically
4922resembles a closure but compiles to much different semantics in the compiler
4923itself. The primary feature of a coroutine is that it can be suspended during
4924execution to be resumed at a later date. Coroutines use the `yield` keyword to
4925"return", and then the caller can `resume` a coroutine to resume execution just
4926after the `yield` keyword.
4927
4928Coroutines are an extra-unstable feature in the compiler right now. Added in
4929[RFC 2033] they're mostly intended right now as a information/constraint
4930gathering phase. The intent is that experimentation can happen on the nightly
4931compiler before actual stabilization. A further RFC will be required to
4932stabilize coroutines and will likely contain at least a few small
4933tweaks to the overall design.
4934
4935[RFC 2033]: https://github.com/rust-lang/rfcs/pull/2033
4936
4937A syntactical example of a coroutine is:
4938
4939```rust
4940#![feature(coroutines, coroutine_trait, stmt_expr_attributes)]
4941
4942use std::ops::{Coroutine, CoroutineState};
4943use std::pin::Pin;
4944
4945fn main() {
4946    let mut coroutine = #[coroutine] || {
4947        yield 1;
4948        return "foo"
4949    };
4950
4951    match Pin::new(&mut coroutine).resume(()) {
4952        CoroutineState::Yielded(1) => {}
4953        _ => panic!("unexpected value from resume"),
4954    }
4955    match Pin::new(&mut coroutine).resume(()) {
4956        CoroutineState::Complete("foo") => {}
4957        _ => panic!("unexpected value from resume"),
4958    }
4959}
4960```
4961
4962Coroutines are closure-like literals which are annotated with `#[coroutine]`
4963and can contain a `yield` statement. The
4964`yield` statement takes an optional expression of a value to yield out of the
4965coroutine. All coroutine literals implement the `Coroutine` trait in the
4966`std::ops` module. The `Coroutine` trait has one main method, `resume`, which
4967resumes execution of the coroutine at the previous suspension point.
4968
4969An example of the control flow of coroutines is that the following example
4970prints all numbers in order:
4971
4972```rust
4973#![feature(coroutines, coroutine_trait, stmt_expr_attributes)]
4974
4975use std::ops::Coroutine;
4976use std::pin::Pin;
4977
4978fn main() {
4979    let mut coroutine = #[coroutine] || {
4980        println!("2");
4981        yield;
4982        println!("4");
4983    };
4984
4985    println!("1");
4986    Pin::new(&mut coroutine).resume(());
4987    println!("3");
4988    Pin::new(&mut coroutine).resume(());
4989    println!("5");
4990}
4991```
4992
4993At this time the main use case of coroutines is an implementation
4994primitive for `async`/`await` and `gen` syntax, but coroutines
4995will likely be extended to other primitives in the future.
4996Feedback on the design and usage is always appreciated!
4997
4998### The `Coroutine` trait
4999
5000The `Coroutine` trait in `std::ops` currently looks like:
5001
5002```rust
5003# #![feature(arbitrary_self_types, coroutine_trait)]
5004# use std::ops::CoroutineState;
5005# use std::pin::Pin;
5006
5007pub trait Coroutine<R = ()> {
5008    type Yield;
5009    type Return;
5010    fn resume(self: Pin<&mut Self>, resume: R) -> CoroutineState<Self::Yield, Self::Return>;
5011}
5012```
5013
5014The `Coroutine::Yield` type is the type of values that can be yielded with the
5015`yield` statement. The `Coroutine::Return` type is the returned type of the
5016coroutine. This is typically the last expression in a coroutine's definition or
5017any value passed to `return` in a coroutine. The `resume` function is the entry
5018point for executing the `Coroutine` itself.
5019
5020The return value of `resume`, `CoroutineState`, looks like:
5021
5022```rust
5023pub enum CoroutineState<Y, R> {
5024    Yielded(Y),
5025    Complete(R),
5026}
5027```
5028
5029The `Yielded` variant indicates that the coroutine can later be resumed. This
5030corresponds to a `yield` point in a coroutine. The `Complete` variant indicates
5031that the coroutine is complete and cannot be resumed again. Calling `resume`
5032after a coroutine has returned `Complete` will likely result in a panic of the
5033program.
5034
5035### Closure-like semantics
5036
5037The closure-like syntax for coroutines alludes to the fact that they also have
5038closure-like semantics. Namely:
5039
5040* When created, a coroutine executes no code. A closure literal does not
5041  actually execute any of the closure's code on construction, and similarly a
5042  coroutine literal does not execute any code inside the coroutine when
5043  constructed.
5044
5045* Coroutines can capture outer variables by reference or by move, and this can
5046  be tweaked with the `move` keyword at the beginning of the closure. Like
5047  closures all coroutines will have an implicit environment which is inferred by
5048  the compiler. Outer variables can be moved into a coroutine for use as the
5049  coroutine progresses.
5050
5051* Coroutine literals produce a value with a unique type which implements the
5052  `std::ops::Coroutine` trait. This allows actual execution of the coroutine
5053  through the `Coroutine::resume` method as well as also naming it in return
5054  types and such.
5055
5056* Traits like `Send` and `Sync` are automatically implemented for a `Coroutine`
5057  depending on the captured variables of the environment. Unlike closures,
5058  coroutines also depend on variables live across suspension points. This means
5059  that although the ambient environment may be `Send` or `Sync`, the coroutine
5060  itself may not be due to internal variables live across `yield` points being
5061  not-`Send` or not-`Sync`. Note that coroutines do
5062  not implement traits like `Copy` or `Clone` automatically.
5063
5064* Whenever a coroutine is dropped it will drop all captured environment
5065  variables.
5066
5067### Coroutines as state machines
5068
5069In the compiler, coroutines are currently compiled as state machines. Each
5070`yield` expression will correspond to a different state that stores all live
5071variables over that suspension point. Resumption of a coroutine will dispatch on
5072the current state and then execute internally until a `yield` is reached, at
5073which point all state is saved off in the coroutine and a value is returned.
5074
5075Let's take a look at an example to see what's going on here:
5076
5077```rust
5078#![feature(coroutines, coroutine_trait, stmt_expr_attributes)]
5079
5080use std::ops::Coroutine;
5081use std::pin::Pin;
5082
5083fn main() {
5084    let ret = "foo";
5085    let mut coroutine = #[coroutine] move || {
5086        yield 1;
5087        return ret
5088    };
5089
5090    Pin::new(&mut coroutine).resume(());
5091    Pin::new(&mut coroutine).resume(());
5092}
5093```
5094
5095This coroutine literal will compile down to something similar to:
5096
5097```rust
5098#![feature(arbitrary_self_types, coroutine_trait)]
5099
5100use std::ops::{Coroutine, CoroutineState};
5101use std::pin::Pin;
5102
5103fn main() {
5104    let ret = "foo";
5105    let mut coroutine = {
5106        enum __Coroutine {
5107            Start(&'static str),
5108            Yield1(&'static str),
5109            Done,
5110        }
5111
5112        impl Coroutine for __Coroutine {
5113            type Yield = i32;
5114            type Return = &'static str;
5115
5116            fn resume(mut self: Pin<&mut Self>, resume: ()) -> CoroutineState<i32, &'static str> {
5117                use std::mem;
5118                match mem::replace(&mut *self, __Coroutine::Done) {
5119                    __Coroutine::Start(s) => {
5120                        *self = __Coroutine::Yield1(s);
5121                        CoroutineState::Yielded(1)
5122                    }
5123
5124                    __Coroutine::Yield1(s) => {
5125                        *self = __Coroutine::Done;
5126                        CoroutineState::Complete(s)
5127                    }
5128
5129                    __Coroutine::Done => {
5130                        panic!("coroutine resumed after completion")
5131                    }
5132                }
5133            }
5134        }
5135
5136        __Coroutine::Start(ret)
5137    };
5138
5139    Pin::new(&mut coroutine).resume(());
5140    Pin::new(&mut coroutine).resume(());
5141}
5142```
5143
5144Notably here we can see that the compiler is generating a fresh type,
5145`__Coroutine` in this case. This type has a number of states (represented here
5146as an `enum`) corresponding to each of the conceptual states of the coroutine.
5147At the beginning we're closing over our outer variable `foo` and then that
5148variable is also live over the `yield` point, so it's stored in both states.
5149
5150When the coroutine starts it'll immediately yield 1, but it saves off its state
5151just before it does so indicating that it has reached the yield point. Upon
5152resuming again we'll execute the `return ret` which returns the `Complete`
5153state.
5154
5155Here we can also note that the `Done` state, if resumed, panics immediately as
5156it's invalid to resume a completed coroutine. It's also worth noting that this
5157is just a rough desugaring, not a normative specification for what the compiler
5158does.
5159"##,
5160        default_severity: Severity::Allow,
5161        warn_since: None,
5162        deny_since: None,
5163    },
5164    Lint {
5165        label: "coverage_attribute",
5166        description: r##"# `coverage_attribute`
5167
5168The tracking issue for this feature is: [#84605]
5169
5170[#84605]: https://github.com/rust-lang/rust/issues/84605
5171
5172---
5173
5174The `coverage` attribute can be used to selectively disable coverage
5175instrumentation in an annotated function. This might be useful to:
5176
5177-   Avoid instrumentation overhead in a performance critical function
5178-   Avoid generating coverage for a function that is not meant to be executed,
5179    but still target 100% coverage for the rest of the program.
5180
5181## Example
5182
5183```rust
5184#![feature(coverage_attribute)]
5185
5186// `foo()` will get coverage instrumentation (by default)
5187fn foo() {
5188  // ...
5189}
5190
5191#[coverage(off)]
5192fn bar() {
5193  // ...
5194}
5195```
5196"##,
5197        default_severity: Severity::Allow,
5198        warn_since: None,
5199        deny_since: None,
5200    },
5201    Lint {
5202        label: "cow_is_borrowed",
5203        description: r##"# `cow_is_borrowed`
5204
5205The tracking issue for this feature is: [#65143]
5206
5207[#65143]: https://github.com/rust-lang/rust/issues/65143
5208
5209------------------------
5210"##,
5211        default_severity: Severity::Allow,
5212        warn_since: None,
5213        deny_since: None,
5214    },
5215    Lint {
5216        label: "csky_target_feature",
5217        description: r##"# `csky_target_feature`
5218
5219The tracking issue for this feature is: [#44839]
5220
5221[#44839]: https://github.com/rust-lang/rust/issues/44839
5222
5223------------------------
5224"##,
5225        default_severity: Severity::Allow,
5226        warn_since: None,
5227        deny_since: None,
5228    },
5229    Lint {
5230        label: "cstr_bytes",
5231        description: r##"# `cstr_bytes`
5232
5233The tracking issue for this feature is: [#112115]
5234
5235[#112115]: https://github.com/rust-lang/rust/issues/112115
5236
5237------------------------
5238"##,
5239        default_severity: Severity::Allow,
5240        warn_since: None,
5241        deny_since: None,
5242    },
5243    Lint {
5244        label: "cstr_internals",
5245        description: r##"# `cstr_internals`
5246
5247This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
5248
5249------------------------
5250"##,
5251        default_severity: Severity::Allow,
5252        warn_since: None,
5253        deny_since: None,
5254    },
5255    Lint {
5256        label: "cursor_split",
5257        description: r##"# `cursor_split`
5258
5259The tracking issue for this feature is: [#86369]
5260
5261[#86369]: https://github.com/rust-lang/rust/issues/86369
5262
5263------------------------
5264"##,
5265        default_severity: Severity::Allow,
5266        warn_since: None,
5267        deny_since: None,
5268    },
5269    Lint {
5270        label: "custom_inner_attributes",
5271        description: r##"# `custom_inner_attributes`
5272
5273The tracking issue for this feature is: [#54726]
5274
5275[#54726]: https://github.com/rust-lang/rust/issues/54726
5276
5277------------------------
5278"##,
5279        default_severity: Severity::Allow,
5280        warn_since: None,
5281        deny_since: None,
5282    },
5283    Lint {
5284        label: "custom_mir",
5285        description: r##"# `custom_mir`
5286
5287This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
5288
5289------------------------
5290"##,
5291        default_severity: Severity::Allow,
5292        warn_since: None,
5293        deny_since: None,
5294    },
5295    Lint {
5296        label: "custom_test_frameworks",
5297        description: r##"# `custom_test_frameworks`
5298
5299The tracking issue for this feature is: [#50297]
5300
5301[#50297]: https://github.com/rust-lang/rust/issues/50297
5302
5303------------------------
5304
5305The `custom_test_frameworks` feature allows the use of `#[test_case]` and `#![test_runner]`.
5306Any function, const, or static can be annotated with `#[test_case]` causing it to be aggregated (like `#[test]`)
5307and be passed to the test runner determined by the `#![test_runner]` crate attribute.
5308
5309```rust
5310#![feature(custom_test_frameworks)]
5311#![test_runner(my_runner)]
5312
5313fn my_runner(tests: &[&i32]) {
5314    for t in tests {
5315        if **t == 0 {
5316            println!("PASSED");
5317        } else {
5318            println!("FAILED");
5319        }
5320    }
5321}
5322
5323#[test_case]
5324const WILL_PASS: i32 = 0;
5325
5326#[test_case]
5327const WILL_FAIL: i32 = 4;
5328```
5329"##,
5330        default_severity: Severity::Allow,
5331        warn_since: None,
5332        deny_since: None,
5333    },
5334    Lint {
5335        label: "deadline_api",
5336        description: r##"# `deadline_api`
5337
5338The tracking issue for this feature is: [#46316]
5339
5340[#46316]: https://github.com/rust-lang/rust/issues/46316
5341
5342------------------------
5343"##,
5344        default_severity: Severity::Allow,
5345        warn_since: None,
5346        deny_since: None,
5347    },
5348    Lint {
5349        label: "debug_closure_helpers",
5350        description: r##"# `debug_closure_helpers`
5351
5352The tracking issue for this feature is: [#117729]
5353
5354[#117729]: https://github.com/rust-lang/rust/issues/117729
5355
5356------------------------
5357"##,
5358        default_severity: Severity::Allow,
5359        warn_since: None,
5360        deny_since: None,
5361    },
5362    Lint {
5363        label: "dec2flt",
5364        description: r##"# `dec2flt`
5365
5366This feature is internal to the Rust compiler and is not intended for general use.
5367
5368------------------------
5369"##,
5370        default_severity: Severity::Allow,
5371        warn_since: None,
5372        deny_since: None,
5373    },
5374    Lint {
5375        label: "decl_macro",
5376        description: r##"# `decl_macro`
5377
5378The tracking issue for this feature is: [#39412]
5379
5380[#39412]: https://github.com/rust-lang/rust/issues/39412
5381
5382------------------------
5383"##,
5384        default_severity: Severity::Allow,
5385        warn_since: None,
5386        deny_since: None,
5387    },
5388    Lint {
5389        label: "default_field_values",
5390        description: r##"# `default_field_values`
5391
5392The tracking issue for this feature is: [#132162]
5393
5394[#132162]: https://github.com/rust-lang/rust/issues/132162
5395
5396------------------------
5397"##,
5398        default_severity: Severity::Allow,
5399        warn_since: None,
5400        deny_since: None,
5401    },
5402    Lint {
5403        label: "deprecated_safe",
5404        description: r##"# `deprecated_safe`
5405
5406The tracking issue for this feature is: [#94978]
5407
5408[#94978]: https://github.com/rust-lang/rust/issues/94978
5409
5410------------------------
5411"##,
5412        default_severity: Severity::Allow,
5413        warn_since: None,
5414        deny_since: None,
5415    },
5416    Lint {
5417        label: "deprecated_suggestion",
5418        description: r##"# `deprecated_suggestion`
5419
5420The tracking issue for this feature is: [#94785]
5421
5422[#94785]: https://github.com/rust-lang/rust/issues/94785
5423
5424------------------------
5425"##,
5426        default_severity: Severity::Allow,
5427        warn_since: None,
5428        deny_since: None,
5429    },
5430    Lint {
5431        label: "deref_patterns",
5432        description: r##"# `deref_patterns`
5433
5434The tracking issue for this feature is: [#87121]
5435
5436[#87121]: https://github.com/rust-lang/rust/issues/87121
5437
5438------------------------
5439"##,
5440        default_severity: Severity::Allow,
5441        warn_since: None,
5442        deny_since: None,
5443    },
5444    Lint {
5445        label: "deref_pure_trait",
5446        description: r##"# `deref_pure_trait`
5447
5448The tracking issue for this feature is: [#87121]
5449
5450[#87121]: https://github.com/rust-lang/rust/issues/87121
5451
5452------------------------
5453"##,
5454        default_severity: Severity::Allow,
5455        warn_since: None,
5456        deny_since: None,
5457    },
5458    Lint {
5459        label: "derive_clone_copy",
5460        description: r##"# `derive_clone_copy`
5461
5462This feature is internal to the Rust compiler and is not intended for general use.
5463
5464------------------------
5465"##,
5466        default_severity: Severity::Allow,
5467        warn_since: None,
5468        deny_since: None,
5469    },
5470    Lint {
5471        label: "derive_coerce_pointee",
5472        description: r##"# `derive_coerce_pointee`
5473
5474The tracking issue for this feature is: [#123430]
5475
5476[#123430]: https://github.com/rust-lang/rust/issues/123430
5477
5478------------------------
5479"##,
5480        default_severity: Severity::Allow,
5481        warn_since: None,
5482        deny_since: None,
5483    },
5484    Lint {
5485        label: "derive_const",
5486        description: r##"# `derive_const`
5487
5488This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
5489
5490------------------------
5491"##,
5492        default_severity: Severity::Allow,
5493        warn_since: None,
5494        deny_since: None,
5495    },
5496    Lint {
5497        label: "derive_eq",
5498        description: r##"# `derive_eq`
5499
5500This feature is internal to the Rust compiler and is not intended for general use.
5501
5502------------------------
5503"##,
5504        default_severity: Severity::Allow,
5505        warn_since: None,
5506        deny_since: None,
5507    },
5508    Lint {
5509        label: "dir_entry_ext2",
5510        description: r##"# `dir_entry_ext2`
5511
5512The tracking issue for this feature is: [#85573]
5513
5514[#85573]: https://github.com/rust-lang/rust/issues/85573
5515
5516------------------------
5517"##,
5518        default_severity: Severity::Allow,
5519        warn_since: None,
5520        deny_since: None,
5521    },
5522    Lint {
5523        label: "discriminant_kind",
5524        description: r##"# `discriminant_kind`
5525
5526This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
5527
5528------------------------
5529"##,
5530        default_severity: Severity::Allow,
5531        warn_since: None,
5532        deny_since: None,
5533    },
5534    Lint {
5535        label: "dispatch_from_dyn",
5536        description: r##"# `dispatch_from_dyn`
5537
5538This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
5539
5540------------------------
5541"##,
5542        default_severity: Severity::Allow,
5543        warn_since: None,
5544        deny_since: None,
5545    },
5546    Lint {
5547        label: "do_not_recommend",
5548        description: r##"# `do_not_recommend`
5549
5550The tracking issue for this feature is: [#51992]
5551
5552[#51992]: https://github.com/rust-lang/rust/issues/51992
5553
5554------------------------
5555"##,
5556        default_severity: Severity::Allow,
5557        warn_since: None,
5558        deny_since: None,
5559    },
5560    Lint {
5561        label: "doc_auto_cfg",
5562        description: r##"# `doc_auto_cfg`
5563
5564The tracking issue for this feature is: [#43781]
5565
5566[#43781]: https://github.com/rust-lang/rust/issues/43781
5567
5568------------------------
5569"##,
5570        default_severity: Severity::Allow,
5571        warn_since: None,
5572        deny_since: None,
5573    },
5574    Lint {
5575        label: "doc_cfg",
5576        description: r##"# `doc_cfg`
5577
5578The tracking issue for this feature is: [#43781]
5579
5580------
5581
5582The `doc_cfg` feature allows an API be documented as only available in some specific platforms.
5583This attribute has two effects:
5584
55851. In the annotated item's documentation, there will be a message saying "Available on
5586    (platform) only".
5587
55882. The item's doc-tests will only run on the specific platform.
5589
5590In addition to allowing the use of the `#[doc(cfg)]` attribute, this feature enables the use of a
5591special conditional compilation flag, `#[cfg(doc)]`, set whenever building documentation on your
5592crate.
5593
5594This feature was introduced as part of PR [#43348] to allow the platform-specific parts of the
5595standard library be documented.
5596
5597```rust
5598#![feature(doc_cfg)]
5599
5600#[cfg(any(windows, doc))]
5601#[doc(cfg(windows))]
5602/// The application's icon in the notification area (a.k.a. system tray).
5603///
5604/// # Examples
5605///
5606/// ```no_run
5607/// extern crate my_awesome_ui_library;
5608/// use my_awesome_ui_library::current_app;
5609/// use my_awesome_ui_library::windows::notification;
5610///
5611/// let icon = current_app().get::<notification::Icon>();
5612/// icon.show();
5613/// icon.show_message("Hello");
5614/// ```
5615pub struct Icon {
5616    // ...
5617}
5618```
5619
5620[#43781]: https://github.com/rust-lang/rust/issues/43781
5621[#43348]: https://github.com/rust-lang/rust/issues/43348
5622"##,
5623        default_severity: Severity::Allow,
5624        warn_since: None,
5625        deny_since: None,
5626    },
5627    Lint {
5628        label: "doc_cfg_hide",
5629        description: r##"# `doc_cfg_hide`
5630
5631The tracking issue for this feature is: [#43781]
5632
5633[#43781]: https://github.com/rust-lang/rust/issues/43781
5634
5635------------------------
5636"##,
5637        default_severity: Severity::Allow,
5638        warn_since: None,
5639        deny_since: None,
5640    },
5641    Lint {
5642        label: "doc_masked",
5643        description: r##"# `doc_masked`
5644
5645The tracking issue for this feature is: [#44027]
5646
5647-----
5648
5649The `doc_masked` feature allows a crate to exclude types from a given crate from appearing in lists
5650of trait implementations. The specifics of the feature are as follows:
5651
56521. When rustdoc encounters an `extern crate` statement annotated with a `#[doc(masked)]` attribute,
5653   it marks the crate as being masked.
5654
56552. When listing traits a given type implements, rustdoc ensures that traits from masked crates are
5656   not emitted into the documentation.
5657
56583. When listing types that implement a given trait, rustdoc ensures that types from masked crates
5659   are not emitted into the documentation.
5660
5661This feature was introduced in PR [#44026] to ensure that compiler-internal and
5662implementation-specific types and traits were not included in the standard library's documentation.
5663Such types would introduce broken links into the documentation.
5664
5665[#44026]: https://github.com/rust-lang/rust/pull/44026
5666[#44027]: https://github.com/rust-lang/rust/pull/44027
5667"##,
5668        default_severity: Severity::Allow,
5669        warn_since: None,
5670        deny_since: None,
5671    },
5672    Lint {
5673        label: "doc_notable_trait",
5674        description: r##"# `doc_notable_trait`
5675
5676The tracking issue for this feature is: [#45040]
5677
5678The `doc_notable_trait` feature allows the use of the `#[doc(notable_trait)]`
5679attribute, which will display the trait in a "Notable traits" dialog for
5680functions returning types that implement the trait. For example, this attribute
5681is applied to the `Iterator`, `Future`, `io::Read`, and `io::Write` traits in
5682the standard library.
5683
5684You can do this on your own traits like so:
5685
5686```
5687#![feature(doc_notable_trait)]
5688
5689#[doc(notable_trait)]
5690pub trait MyTrait {}
5691
5692pub struct MyStruct;
5693impl MyTrait for MyStruct {}
5694
5695/// The docs for this function will have a button that displays a dialog about
5696/// `MyStruct` implementing `MyTrait`.
5697pub fn my_fn() -> MyStruct { MyStruct }
5698```
5699
5700This feature was originally implemented in PR [#45039].
5701
5702See also its documentation in [the rustdoc book][rustdoc-book-notable_trait].
5703
5704[#45040]: https://github.com/rust-lang/rust/issues/45040
5705[#45039]: https://github.com/rust-lang/rust/pull/45039
5706[rustdoc-book-notable_trait]: ../../rustdoc/unstable-features.html#adding-your-trait-to-the-notable-traits-dialog
5707"##,
5708        default_severity: Severity::Allow,
5709        warn_since: None,
5710        deny_since: None,
5711    },
5712    Lint {
5713        label: "downcast_unchecked",
5714        description: r##"# `downcast_unchecked`
5715
5716The tracking issue for this feature is: [#90850]
5717
5718[#90850]: https://github.com/rust-lang/rust/issues/90850
5719
5720------------------------
5721"##,
5722        default_severity: Severity::Allow,
5723        warn_since: None,
5724        deny_since: None,
5725    },
5726    Lint {
5727        label: "drain_keep_rest",
5728        description: r##"# `drain_keep_rest`
5729
5730The tracking issue for this feature is: [#101122]
5731
5732[#101122]: https://github.com/rust-lang/rust/issues/101122
5733
5734------------------------
5735"##,
5736        default_severity: Severity::Allow,
5737        warn_since: None,
5738        deny_since: None,
5739    },
5740    Lint {
5741        label: "dropck_eyepatch",
5742        description: r##"# `dropck_eyepatch`
5743
5744The tracking issue for this feature is: [#34761]
5745
5746[#34761]: https://github.com/rust-lang/rust/issues/34761
5747
5748------------------------
5749"##,
5750        default_severity: Severity::Allow,
5751        warn_since: None,
5752        deny_since: None,
5753    },
5754    Lint {
5755        label: "duration_constants",
5756        description: r##"# `duration_constants`
5757
5758The tracking issue for this feature is: [#57391]
5759
5760[#57391]: https://github.com/rust-lang/rust/issues/57391
5761
5762------------------------
5763"##,
5764        default_severity: Severity::Allow,
5765        warn_since: None,
5766        deny_since: None,
5767    },
5768    Lint {
5769        label: "duration_constructors",
5770        description: r##"# `duration_constructors`
5771
5772The tracking issue for this feature is: [#120301]
5773
5774[#120301]: https://github.com/rust-lang/rust/issues/120301
5775
5776------------------------
5777
5778Add the methods `from_days` and `from_weeks` to `Duration`.
5779"##,
5780        default_severity: Severity::Allow,
5781        warn_since: None,
5782        deny_since: None,
5783    },
5784    Lint {
5785        label: "duration_millis_float",
5786        description: r##"# `duration_millis_float`
5787
5788The tracking issue for this feature is: [#122451]
5789
5790[#122451]: https://github.com/rust-lang/rust/issues/122451
5791
5792------------------------
5793"##,
5794        default_severity: Severity::Allow,
5795        warn_since: None,
5796        deny_since: None,
5797    },
5798    Lint {
5799        label: "duration_units",
5800        description: r##"# `duration_units`
5801
5802The tracking issue for this feature is: [#120301]
5803
5804[#120301]: https://github.com/rust-lang/rust/issues/120301
5805
5806------------------------
5807"##,
5808        default_severity: Severity::Allow,
5809        warn_since: None,
5810        deny_since: None,
5811    },
5812    Lint {
5813        label: "dyn_compatible_for_dispatch",
5814        description: r##"# `dyn_compatible_for_dispatch`
5815
5816The tracking issue for this feature is: [#43561]
5817
5818[#43561]: https://github.com/rust-lang/rust/issues/43561
5819
5820------------------------
5821"##,
5822        default_severity: Severity::Allow,
5823        warn_since: None,
5824        deny_since: None,
5825    },
5826    Lint {
5827        label: "dyn_star",
5828        description: r##"# `dyn_star`
5829
5830The tracking issue for this feature is: [#102425]
5831
5832[#102425]: https://github.com/rust-lang/rust/issues/102425
5833
5834------------------------
5835"##,
5836        default_severity: Severity::Allow,
5837        warn_since: None,
5838        deny_since: None,
5839    },
5840    Lint {
5841        label: "edition_panic",
5842        description: r##"# `edition_panic`
5843
5844This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
5845
5846------------------------
5847"##,
5848        default_severity: Severity::Allow,
5849        warn_since: None,
5850        deny_since: None,
5851    },
5852    Lint {
5853        label: "ermsb_target_feature",
5854        description: r##"# `ermsb_target_feature`
5855
5856The tracking issue for this feature is: [#44839]
5857
5858[#44839]: https://github.com/rust-lang/rust/issues/44839
5859
5860------------------------
5861"##,
5862        default_severity: Severity::Allow,
5863        warn_since: None,
5864        deny_since: None,
5865    },
5866    Lint {
5867        label: "error_generic_member_access",
5868        description: r##"# `error_generic_member_access`
5869
5870The tracking issue for this feature is: [#99301]
5871
5872[#99301]: https://github.com/rust-lang/rust/issues/99301
5873
5874------------------------
5875"##,
5876        default_severity: Severity::Allow,
5877        warn_since: None,
5878        deny_since: None,
5879    },
5880    Lint {
5881        label: "error_iter",
5882        description: r##"# `error_iter`
5883
5884The tracking issue for this feature is: [#58520]
5885
5886[#58520]: https://github.com/rust-lang/rust/issues/58520
5887
5888------------------------
5889"##,
5890        default_severity: Severity::Allow,
5891        warn_since: None,
5892        deny_since: None,
5893    },
5894    Lint {
5895        label: "error_reporter",
5896        description: r##"# `error_reporter`
5897
5898The tracking issue for this feature is: [#90172]
5899
5900[#90172]: https://github.com/rust-lang/rust/issues/90172
5901
5902------------------------
5903"##,
5904        default_severity: Severity::Allow,
5905        warn_since: None,
5906        deny_since: None,
5907    },
5908    Lint {
5909        label: "error_type_id",
5910        description: r##"# `error_type_id`
5911
5912The tracking issue for this feature is: [#60784]
5913
5914[#60784]: https://github.com/rust-lang/rust/issues/60784
5915
5916------------------------
5917"##,
5918        default_severity: Severity::Allow,
5919        warn_since: None,
5920        deny_since: None,
5921    },
5922    Lint {
5923        label: "exact_size_is_empty",
5924        description: r##"# `exact_size_is_empty`
5925
5926The tracking issue for this feature is: [#35428]
5927
5928[#35428]: https://github.com/rust-lang/rust/issues/35428
5929
5930------------------------
5931"##,
5932        default_severity: Severity::Allow,
5933        warn_since: None,
5934        deny_since: None,
5935    },
5936    Lint {
5937        label: "exclusive_wrapper",
5938        description: r##"# `exclusive_wrapper`
5939
5940The tracking issue for this feature is: [#98407]
5941
5942[#98407]: https://github.com/rust-lang/rust/issues/98407
5943
5944------------------------
5945"##,
5946        default_severity: Severity::Allow,
5947        warn_since: None,
5948        deny_since: None,
5949    },
5950    Lint {
5951        label: "exhaustive_patterns",
5952        description: r##"# `exhaustive_patterns`
5953
5954The tracking issue for this feature is: [#51085]
5955
5956[#51085]: https://github.com/rust-lang/rust/issues/51085
5957
5958------------------------
5959"##,
5960        default_severity: Severity::Allow,
5961        warn_since: None,
5962        deny_since: None,
5963    },
5964    Lint {
5965        label: "exit_status_error",
5966        description: r##"# `exit_status_error`
5967
5968The tracking issue for this feature is: [#84908]
5969
5970[#84908]: https://github.com/rust-lang/rust/issues/84908
5971
5972------------------------
5973"##,
5974        default_severity: Severity::Allow,
5975        warn_since: None,
5976        deny_since: None,
5977    },
5978    Lint {
5979        label: "exitcode_exit_method",
5980        description: r##"# `exitcode_exit_method`
5981
5982The tracking issue for this feature is: [#97100]
5983
5984[#97100]: https://github.com/rust-lang/rust/issues/97100
5985
5986------------------------
5987"##,
5988        default_severity: Severity::Allow,
5989        warn_since: None,
5990        deny_since: None,
5991    },
5992    Lint {
5993        label: "explicit_tail_calls",
5994        description: r##"# `explicit_tail_calls`
5995
5996The tracking issue for this feature is: [#112788]
5997
5998[#112788]: https://github.com/rust-lang/rust/issues/112788
5999
6000------------------------
6001"##,
6002        default_severity: Severity::Allow,
6003        warn_since: None,
6004        deny_since: None,
6005    },
6006    Lint {
6007        label: "extend_one",
6008        description: r##"# `extend_one`
6009
6010The tracking issue for this feature is: [#72631]
6011
6012[#72631]: https://github.com/rust-lang/rust/issues/72631
6013
6014------------------------
6015"##,
6016        default_severity: Severity::Allow,
6017        warn_since: None,
6018        deny_since: None,
6019    },
6020    Lint {
6021        label: "extend_one_unchecked",
6022        description: r##"# `extend_one_unchecked`
6023
6024This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
6025
6026------------------------
6027"##,
6028        default_severity: Severity::Allow,
6029        warn_since: None,
6030        deny_since: None,
6031    },
6032    Lint {
6033        label: "extern_types",
6034        description: r##"# `extern_types`
6035
6036The tracking issue for this feature is: [#43467]
6037
6038[#43467]: https://github.com/rust-lang/rust/issues/43467
6039
6040------------------------
6041"##,
6042        default_severity: Severity::Allow,
6043        warn_since: None,
6044        deny_since: None,
6045    },
6046    Lint {
6047        label: "extract_if",
6048        description: r##"# `extract_if`
6049
6050The tracking issue for this feature is: [#43244]
6051
6052[#43244]: https://github.com/rust-lang/rust/issues/43244
6053
6054------------------------
6055"##,
6056        default_severity: Severity::Allow,
6057        warn_since: None,
6058        deny_since: None,
6059    },
6060    Lint {
6061        label: "f128",
6062        description: r##"# `f128`
6063
6064The tracking issue for this feature is: [#116909]
6065
6066[#116909]: https://github.com/rust-lang/rust/issues/116909
6067
6068---
6069
6070Enable the `f128` type for  IEEE 128-bit floating numbers (quad precision).
6071"##,
6072        default_severity: Severity::Allow,
6073        warn_since: None,
6074        deny_since: None,
6075    },
6076    Lint {
6077        label: "f16",
6078        description: r##"# `f16`
6079
6080The tracking issue for this feature is: [#116909]
6081
6082[#116909]: https://github.com/rust-lang/rust/issues/116909
6083
6084---
6085
6086Enable the `f16` type for  IEEE 16-bit floating numbers (half precision).
6087"##,
6088        default_severity: Severity::Allow,
6089        warn_since: None,
6090        deny_since: None,
6091    },
6092    Lint {
6093        label: "fd",
6094        description: r##"# `fd`
6095
6096This feature is internal to the Rust compiler and is not intended for general use.
6097
6098------------------------
6099"##,
6100        default_severity: Severity::Allow,
6101        warn_since: None,
6102        deny_since: None,
6103    },
6104    Lint {
6105        label: "fd_read",
6106        description: r##"# `fd_read`
6107
6108This feature is internal to the Rust compiler and is not intended for general use.
6109
6110------------------------
6111"##,
6112        default_severity: Severity::Allow,
6113        warn_since: None,
6114        deny_since: None,
6115    },
6116    Lint {
6117        label: "ffi_const",
6118        description: r##"# `ffi_const`
6119
6120The tracking issue for this feature is: [#58328]
6121
6122------
6123
6124The `#[ffi_const]` attribute applies clang's `const` attribute to foreign
6125functions declarations.
6126
6127That is, `#[ffi_const]` functions shall have no effects except for its return
6128value, which can only depend on the values of the function parameters, and is
6129not affected by changes to the observable state of the program.
6130
6131Applying the `#[ffi_const]` attribute to a function that violates these
6132requirements is undefined behaviour.
6133
6134This attribute enables Rust to perform common optimizations, like sub-expression
6135elimination, and it can avoid emitting some calls in repeated invocations of the
6136function with the same argument values regardless of other operations being
6137performed in between these functions calls (as opposed to `#[ffi_pure]`
6138functions).
6139
6140## Pitfalls
6141
6142A `#[ffi_const]` function can only read global memory that would not affect
6143its return value for the whole execution of the program (e.g. immutable global
6144memory). `#[ffi_const]` functions are referentially-transparent and therefore
6145more strict than `#[ffi_pure]` functions.
6146
6147A common pitfall involves applying the `#[ffi_const]` attribute to a
6148function that reads memory through pointer arguments which do not necessarily
6149point to immutable global memory.
6150
6151A `#[ffi_const]` function that returns unit has no effect on the abstract
6152machine's state, and a `#[ffi_const]` function cannot be `#[ffi_pure]`.
6153
6154A `#[ffi_const]` function must not diverge, neither via a side effect (e.g. a
6155call to `abort`) nor by infinite loops.
6156
6157When translating C headers to Rust FFI, it is worth verifying for which targets
6158the `const` attribute is enabled in those headers, and using the appropriate
6159`cfg` macros in the Rust side to match those definitions. While the semantics of
6160`const` are implemented identically by many C and C++ compilers, e.g., clang,
6161[GCC], [ARM C/C++ compiler], [IBM ILE C/C++], etc. they are not necessarily
6162implemented in this way on all of them. It is therefore also worth verifying
6163that the semantics of the C toolchain used to compile the binary being linked
6164against are compatible with those of the `#[ffi_const]`.
6165
6166[#58328]: https://github.com/rust-lang/rust/issues/58328
6167[ARM C/C++ compiler]: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0491c/Cacgigch.html
6168[GCC]: https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-const-function-attribute
6169[IBM ILE C/C++]: https://www.ibm.com/support/knowledgecenter/fr/ssw_ibm_i_71/rzarg/fn_attrib_const.htm
6170"##,
6171        default_severity: Severity::Allow,
6172        warn_since: None,
6173        deny_since: None,
6174    },
6175    Lint {
6176        label: "ffi_pure",
6177        description: r##"# `ffi_pure`
6178
6179The tracking issue for this feature is: [#58329]
6180
6181------
6182
6183The `#[ffi_pure]` attribute applies clang's `pure` attribute to foreign
6184functions declarations.
6185
6186That is, `#[ffi_pure]` functions shall have no effects except for its return
6187value, which shall not change across two consecutive function calls with
6188the same parameters.
6189
6190Applying the `#[ffi_pure]` attribute to a function that violates these
6191requirements is undefined behavior.
6192
6193This attribute enables Rust to perform common optimizations, like sub-expression
6194elimination and loop optimizations. Some common examples of pure functions are
6195`strlen` or `memcmp`.
6196
6197These optimizations are only applicable when the compiler can prove that no
6198program state observable by the `#[ffi_pure]` function has changed between calls
6199of the function, which could alter the result. See also the `#[ffi_const]`
6200attribute, which provides stronger guarantees regarding the allowable behavior
6201of a function, enabling further optimization.
6202
6203## Pitfalls
6204
6205A `#[ffi_pure]` function can read global memory through the function
6206parameters (e.g. pointers), globals, etc. `#[ffi_pure]` functions are not
6207referentially-transparent, and are therefore more relaxed than `#[ffi_const]`
6208functions.
6209
6210However, accessing global memory through volatile or atomic reads can violate the
6211requirement that two consecutive function calls shall return the same value.
6212
6213A `pure` function that returns unit has no effect on the abstract machine's
6214state.
6215
6216A `#[ffi_pure]` function must not diverge, neither via a side effect (e.g. a
6217call to `abort`) nor by infinite loops.
6218
6219When translating C headers to Rust FFI, it is worth verifying for which targets
6220the `pure` attribute is enabled in those headers, and using the appropriate
6221`cfg` macros in the Rust side to match those definitions. While the semantics of
6222`pure` are implemented identically by many C and C++ compilers, e.g., clang,
6223[GCC], [ARM C/C++ compiler], [IBM ILE C/C++], etc. they are not necessarily
6224implemented in this way on all of them. It is therefore also worth verifying
6225that the semantics of the C toolchain used to compile the binary being linked
6226against are compatible with those of the `#[ffi_pure]`.
6227
6228
6229[#58329]: https://github.com/rust-lang/rust/issues/58329
6230[ARM C/C++ compiler]: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0491c/Cacigdac.html
6231[GCC]: https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-pure-function-attribute
6232[IBM ILE C/C++]: https://www.ibm.com/support/knowledgecenter/fr/ssw_ibm_i_71/rzarg/fn_attrib_pure.htm
6233"##,
6234        default_severity: Severity::Allow,
6235        warn_since: None,
6236        deny_since: None,
6237    },
6238    Lint {
6239        label: "file_buffered",
6240        description: r##"# `file_buffered`
6241
6242The tracking issue for this feature is: [#130804]
6243
6244[#130804]: https://github.com/rust-lang/rust/issues/130804
6245
6246------------------------
6247"##,
6248        default_severity: Severity::Allow,
6249        warn_since: None,
6250        deny_since: None,
6251    },
6252    Lint {
6253        label: "file_lock",
6254        description: r##"# `file_lock`
6255
6256The tracking issue for this feature is: [#130994]
6257
6258[#130994]: https://github.com/rust-lang/rust/issues/130994
6259
6260------------------------
6261"##,
6262        default_severity: Severity::Allow,
6263        warn_since: None,
6264        deny_since: None,
6265    },
6266    Lint {
6267        label: "float_gamma",
6268        description: r##"# `float_gamma`
6269
6270The tracking issue for this feature is: [#99842]
6271
6272[#99842]: https://github.com/rust-lang/rust/issues/99842
6273
6274------------------------
6275"##,
6276        default_severity: Severity::Allow,
6277        warn_since: None,
6278        deny_since: None,
6279    },
6280    Lint {
6281        label: "float_minimum_maximum",
6282        description: r##"# `float_minimum_maximum`
6283
6284The tracking issue for this feature is: [#91079]
6285
6286[#91079]: https://github.com/rust-lang/rust/issues/91079
6287
6288------------------------
6289"##,
6290        default_severity: Severity::Allow,
6291        warn_since: None,
6292        deny_since: None,
6293    },
6294    Lint {
6295        label: "float_next_up_down",
6296        description: r##"# `float_next_up_down`
6297
6298The tracking issue for this feature is: [#91399]
6299
6300[#91399]: https://github.com/rust-lang/rust/issues/91399
6301
6302------------------------
6303"##,
6304        default_severity: Severity::Allow,
6305        warn_since: None,
6306        deny_since: None,
6307    },
6308    Lint {
6309        label: "flt2dec",
6310        description: r##"# `flt2dec`
6311
6312This feature is internal to the Rust compiler and is not intended for general use.
6313
6314------------------------
6315"##,
6316        default_severity: Severity::Allow,
6317        warn_since: None,
6318        deny_since: None,
6319    },
6320    Lint {
6321        label: "fmt_debug",
6322        description: r##"# `fmt_debug`
6323
6324The tracking issue for this feature is: [#129709]
6325
6326[#129709]: https://github.com/rust-lang/rust/issues/129709
6327
6328------------------------
6329"##,
6330        default_severity: Severity::Allow,
6331        warn_since: None,
6332        deny_since: None,
6333    },
6334    Lint {
6335        label: "fmt_helpers_for_derive",
6336        description: r##"# `fmt_helpers_for_derive`
6337
6338This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
6339
6340------------------------
6341"##,
6342        default_severity: Severity::Allow,
6343        warn_since: None,
6344        deny_since: None,
6345    },
6346    Lint {
6347        label: "fmt_internals",
6348        description: r##"# `fmt_internals`
6349
6350This feature is internal to the Rust compiler and is not intended for general use.
6351
6352------------------------
6353"##,
6354        default_severity: Severity::Allow,
6355        warn_since: None,
6356        deny_since: None,
6357    },
6358    Lint {
6359        label: "fn_align",
6360        description: r##"# `fn_align`
6361
6362The tracking issue for this feature is: [#82232]
6363
6364[#82232]: https://github.com/rust-lang/rust/issues/82232
6365
6366------------------------
6367"##,
6368        default_severity: Severity::Allow,
6369        warn_since: None,
6370        deny_since: None,
6371    },
6372    Lint {
6373        label: "fn_delegation",
6374        description: r##"# `fn_delegation`
6375
6376The tracking issue for this feature is: [#118212]
6377
6378[#118212]: https://github.com/rust-lang/rust/issues/118212
6379
6380------------------------
6381"##,
6382        default_severity: Severity::Allow,
6383        warn_since: None,
6384        deny_since: None,
6385    },
6386    Lint {
6387        label: "fn_ptr_trait",
6388        description: r##"# `fn_ptr_trait`
6389
6390This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
6391
6392------------------------
6393"##,
6394        default_severity: Severity::Allow,
6395        warn_since: None,
6396        deny_since: None,
6397    },
6398    Lint {
6399        label: "fn_traits",
6400        description: r##"# `fn_traits`
6401
6402The tracking issue for this feature is [#29625]
6403
6404See Also: [`unboxed_closures`](../language-features/unboxed-closures.md)
6405
6406[#29625]: https://github.com/rust-lang/rust/issues/29625
6407
6408----
6409
6410The `fn_traits` feature allows for implementation of the [`Fn*`] traits
6411for creating custom closure-like types.
6412
6413[`Fn*`]: ../../std/ops/trait.Fn.html
6414
6415```rust
6416#![feature(unboxed_closures)]
6417#![feature(fn_traits)]
6418
6419struct Adder {
6420    a: u32
6421}
6422
6423impl FnOnce<(u32, )> for Adder {
6424    type Output = u32;
6425    extern "rust-call" fn call_once(self, b: (u32, )) -> Self::Output {
6426        self.a + b.0
6427    }
6428}
6429
6430fn main() {
6431    let adder = Adder { a: 3 };
6432    assert_eq!(adder(2), 5);
6433}
6434```
6435"##,
6436        default_severity: Severity::Allow,
6437        warn_since: None,
6438        deny_since: None,
6439    },
6440    Lint {
6441        label: "forget_unsized",
6442        description: r##"# `forget_unsized`
6443
6444This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
6445
6446------------------------
6447"##,
6448        default_severity: Severity::Allow,
6449        warn_since: None,
6450        deny_since: None,
6451    },
6452    Lint {
6453        label: "format_args_nl",
6454        description: r##"# `format_args_nl`
6455
6456This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
6457
6458------------------------
6459"##,
6460        default_severity: Severity::Allow,
6461        warn_since: None,
6462        deny_since: None,
6463    },
6464    Lint {
6465        label: "formatting_options",
6466        description: r##"# `formatting_options`
6467
6468The tracking issue for this feature is: [#118117]
6469
6470[#118117]: https://github.com/rust-lang/rust/issues/118117
6471
6472------------------------
6473"##,
6474        default_severity: Severity::Allow,
6475        warn_since: None,
6476        deny_since: None,
6477    },
6478    Lint {
6479        label: "freeze",
6480        description: r##"# `freeze`
6481
6482The tracking issue for this feature is: [#121675]
6483
6484[#121675]: https://github.com/rust-lang/rust/issues/121675
6485
6486------------------------
6487"##,
6488        default_severity: Severity::Allow,
6489        warn_since: None,
6490        deny_since: None,
6491    },
6492    Lint {
6493        label: "freeze_impls",
6494        description: r##"# `freeze_impls`
6495
6496The tracking issue for this feature is: [#121675]
6497
6498[#121675]: https://github.com/rust-lang/rust/issues/121675
6499
6500------------------------
6501"##,
6502        default_severity: Severity::Allow,
6503        warn_since: None,
6504        deny_since: None,
6505    },
6506    Lint {
6507        label: "fundamental",
6508        description: r##"# `fundamental`
6509
6510The tracking issue for this feature is: [#29635]
6511
6512[#29635]: https://github.com/rust-lang/rust/issues/29635
6513
6514------------------------
6515"##,
6516        default_severity: Severity::Allow,
6517        warn_since: None,
6518        deny_since: None,
6519    },
6520    Lint {
6521        label: "future_join",
6522        description: r##"# `future_join`
6523
6524The tracking issue for this feature is: [#91642]
6525
6526[#91642]: https://github.com/rust-lang/rust/issues/91642
6527
6528------------------------
6529"##,
6530        default_severity: Severity::Allow,
6531        warn_since: None,
6532        deny_since: None,
6533    },
6534    Lint {
6535        label: "gen_blocks",
6536        description: r##"# `gen_blocks`
6537
6538The tracking issue for this feature is: [#117078]
6539
6540[#117078]: https://github.com/rust-lang/rust/issues/117078
6541
6542------------------------
6543"##,
6544        default_severity: Severity::Allow,
6545        warn_since: None,
6546        deny_since: None,
6547    },
6548    Lint {
6549        label: "gen_future",
6550        description: r##"# `gen_future`
6551
6552The tracking issue for this feature is: [#50547]
6553
6554[#50547]: https://github.com/rust-lang/rust/issues/50547
6555
6556------------------------
6557"##,
6558        default_severity: Severity::Allow,
6559        warn_since: None,
6560        deny_since: None,
6561    },
6562    Lint {
6563        label: "generic_arg_infer",
6564        description: r##"# `generic_arg_infer`
6565
6566The tracking issue for this feature is: [#85077]
6567
6568[#85077]: https://github.com/rust-lang/rust/issues/85077
6569
6570------------------------
6571"##,
6572        default_severity: Severity::Allow,
6573        warn_since: None,
6574        deny_since: None,
6575    },
6576    Lint {
6577        label: "generic_assert",
6578        description: r##"# `generic_assert`
6579
6580This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
6581
6582------------------------
6583"##,
6584        default_severity: Severity::Allow,
6585        warn_since: None,
6586        deny_since: None,
6587    },
6588    Lint {
6589        label: "generic_assert_internals",
6590        description: r##"# `generic_assert_internals`
6591
6592The tracking issue for this feature is: [#44838]
6593
6594[#44838]: https://github.com/rust-lang/rust/issues/44838
6595
6596------------------------
6597"##,
6598        default_severity: Severity::Allow,
6599        warn_since: None,
6600        deny_since: None,
6601    },
6602    Lint {
6603        label: "generic_const_exprs",
6604        description: r##"# `generic_const_exprs`
6605
6606The tracking issue for this feature is: [#76560]
6607
6608[#76560]: https://github.com/rust-lang/rust/issues/76560
6609
6610------------------------
6611"##,
6612        default_severity: Severity::Allow,
6613        warn_since: None,
6614        deny_since: None,
6615    },
6616    Lint {
6617        label: "generic_const_items",
6618        description: r##"# `generic_const_items`
6619
6620The tracking issue for this feature is: [#113521]
6621
6622[#113521]: https://github.com/rust-lang/rust/issues/113521
6623
6624------------------------
6625"##,
6626        default_severity: Severity::Allow,
6627        warn_since: None,
6628        deny_since: None,
6629    },
6630    Lint {
6631        label: "get_many_mut",
6632        description: r##"# `get_many_mut`
6633
6634The tracking issue for this feature is: [#104642]
6635
6636[#104642]: https://github.com/rust-lang/rust/issues/104642
6637
6638------------------------
6639"##,
6640        default_severity: Severity::Allow,
6641        warn_since: None,
6642        deny_since: None,
6643    },
6644    Lint {
6645        label: "get_many_mut_helpers",
6646        description: r##"# `get_many_mut_helpers`
6647
6648This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
6649
6650------------------------
6651"##,
6652        default_severity: Severity::Allow,
6653        warn_since: None,
6654        deny_since: None,
6655    },
6656    Lint {
6657        label: "get_mut_unchecked",
6658        description: r##"# `get_mut_unchecked`
6659
6660The tracking issue for this feature is: [#63292]
6661
6662[#63292]: https://github.com/rust-lang/rust/issues/63292
6663
6664------------------------
6665"##,
6666        default_severity: Severity::Allow,
6667        warn_since: None,
6668        deny_since: None,
6669    },
6670    Lint {
6671        label: "global_registration",
6672        description: r##"# `global_registration`
6673
6674The tracking issue for this feature is: [#125119]
6675
6676[#125119]: https://github.com/rust-lang/rust/issues/125119
6677
6678------------------------
6679"##,
6680        default_severity: Severity::Allow,
6681        warn_since: None,
6682        deny_since: None,
6683    },
6684    Lint {
6685        label: "guard_patterns",
6686        description: r##"# `guard_patterns`
6687
6688The tracking issue for this feature is: [#129967]
6689
6690[#129967]: https://github.com/rust-lang/rust/issues/129967
6691
6692------------------------
6693"##,
6694        default_severity: Severity::Allow,
6695        warn_since: None,
6696        deny_since: None,
6697    },
6698    Lint {
6699        label: "half_open_range_patterns_in_slices",
6700        description: r##"# `half_open_range_patterns_in_slices`
6701
6702The tracking issue for this feature is: [#67264]
6703It is a future part of the `exclusive_range_pattern` feature,
6704tracked at [#37854].
6705
6706[#67264]: https://github.com/rust-lang/rust/issues/67264
6707[#37854]: https://github.com/rust-lang/rust/issues/37854
6708-----
6709
6710This feature allow using top-level half-open range patterns in slices.
6711
6712```rust
6713#![feature(half_open_range_patterns_in_slices)]
6714
6715fn main() {
6716    let xs = [13, 1, 5, 2, 3, 1, 21, 8];
6717    let [a @ 3.., b @ ..3, c @ 4..6, ..] = xs else { return; };
6718}
6719```
6720
6721Note that this feature is not required if the patterns are wrapped between parenthesis.
6722
6723```rust
6724fn main() {
6725    let xs = [13, 1];
6726    let [(a @ 3..), c] = xs else { return; };
6727}
6728```
6729"##,
6730        default_severity: Severity::Allow,
6731        warn_since: None,
6732        deny_since: None,
6733    },
6734    Lint {
6735        label: "hash_extract_if",
6736        description: r##"# `hash_extract_if`
6737
6738The tracking issue for this feature is: [#59618]
6739
6740[#59618]: https://github.com/rust-lang/rust/issues/59618
6741
6742------------------------
6743"##,
6744        default_severity: Severity::Allow,
6745        warn_since: None,
6746        deny_since: None,
6747    },
6748    Lint {
6749        label: "hash_raw_entry",
6750        description: r##"# `hash_raw_entry`
6751
6752The tracking issue for this feature is: [#56167]
6753
6754[#56167]: https://github.com/rust-lang/rust/issues/56167
6755
6756------------------------
6757"##,
6758        default_severity: Severity::Allow,
6759        warn_since: None,
6760        deny_since: None,
6761    },
6762    Lint {
6763        label: "hash_set_entry",
6764        description: r##"# `hash_set_entry`
6765
6766The tracking issue for this feature is: [#60896]
6767
6768[#60896]: https://github.com/rust-lang/rust/issues/60896
6769
6770------------------------
6771"##,
6772        default_severity: Severity::Allow,
6773        warn_since: None,
6774        deny_since: None,
6775    },
6776    Lint {
6777        label: "hasher_prefixfree_extras",
6778        description: r##"# `hasher_prefixfree_extras`
6779
6780The tracking issue for this feature is: [#96762]
6781
6782[#96762]: https://github.com/rust-lang/rust/issues/96762
6783
6784------------------------
6785"##,
6786        default_severity: Severity::Allow,
6787        warn_since: None,
6788        deny_since: None,
6789    },
6790    Lint {
6791        label: "hashmap_internals",
6792        description: r##"# `hashmap_internals`
6793
6794This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
6795
6796------------------------
6797"##,
6798        default_severity: Severity::Allow,
6799        warn_since: None,
6800        deny_since: None,
6801    },
6802    Lint {
6803        label: "hexagon_target_feature",
6804        description: r##"# `hexagon_target_feature`
6805
6806The tracking issue for this feature is: [#44839]
6807
6808[#44839]: https://github.com/rust-lang/rust/issues/44839
6809
6810------------------------
6811"##,
6812        default_severity: Severity::Allow,
6813        warn_since: None,
6814        deny_since: None,
6815    },
6816    Lint {
6817        label: "hint_must_use",
6818        description: r##"# `hint_must_use`
6819
6820The tracking issue for this feature is: [#94745]
6821
6822[#94745]: https://github.com/rust-lang/rust/issues/94745
6823
6824------------------------
6825"##,
6826        default_severity: Severity::Allow,
6827        warn_since: None,
6828        deny_since: None,
6829    },
6830    Lint {
6831        label: "if_let_guard",
6832        description: r##"# `if_let_guard`
6833
6834The tracking issue for this feature is: [#51114]
6835
6836[#51114]: https://github.com/rust-lang/rust/issues/51114
6837
6838------------------------
6839"##,
6840        default_severity: Severity::Allow,
6841        warn_since: None,
6842        deny_since: None,
6843    },
6844    Lint {
6845        label: "impl_trait_in_assoc_type",
6846        description: r##"# `impl_trait_in_assoc_type`
6847
6848The tracking issue for this feature is: [#63063]
6849
6850[#63063]: https://github.com/rust-lang/rust/issues/63063
6851
6852------------------------
6853"##,
6854        default_severity: Severity::Allow,
6855        warn_since: None,
6856        deny_since: None,
6857    },
6858    Lint {
6859        label: "impl_trait_in_fn_trait_return",
6860        description: r##"# `impl_trait_in_fn_trait_return`
6861
6862The tracking issue for this feature is: [#99697]
6863
6864[#99697]: https://github.com/rust-lang/rust/issues/99697
6865
6866------------------------
6867"##,
6868        default_severity: Severity::Allow,
6869        warn_since: None,
6870        deny_since: None,
6871    },
6872    Lint {
6873        label: "inherent_associated_types",
6874        description: r##"# `inherent_associated_types`
6875
6876The tracking issue for this feature is: [#8995]
6877
6878[#8995]: https://github.com/rust-lang/rust/issues/8995
6879
6880------------------------
6881"##,
6882        default_severity: Severity::Allow,
6883        warn_since: None,
6884        deny_since: None,
6885    },
6886    Lint {
6887        label: "inline_const_pat",
6888        description: r##"# `inline_const_pat`
6889
6890The tracking issue for this feature is: [#76001]
6891
6892------
6893
6894This feature allows you to use inline constant expressions in pattern position:
6895
6896```rust
6897#![feature(inline_const_pat)]
6898
6899const fn one() -> i32 { 1 }
6900
6901let some_int = 3;
6902match some_int {
6903    const { 1 + 2 } => println!("Matched 1 + 2"),
6904    const { one() } => println!("Matched const fn returning 1"),
6905    _ => println!("Didn't match anything :("),
6906}
6907```
6908
6909[#76001]: https://github.com/rust-lang/rust/issues/76001
6910"##,
6911        default_severity: Severity::Allow,
6912        warn_since: None,
6913        deny_since: None,
6914    },
6915    Lint {
6916        label: "inplace_iteration",
6917        description: r##"# `inplace_iteration`
6918
6919This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
6920
6921------------------------
6922"##,
6923        default_severity: Severity::Allow,
6924        warn_since: None,
6925        deny_since: None,
6926    },
6927    Lint {
6928        label: "int_roundings",
6929        description: r##"# `int_roundings`
6930
6931The tracking issue for this feature is: [#88581]
6932
6933[#88581]: https://github.com/rust-lang/rust/issues/88581
6934
6935------------------------
6936"##,
6937        default_severity: Severity::Allow,
6938        warn_since: None,
6939        deny_since: None,
6940    },
6941    Lint {
6942        label: "integer_atomics",
6943        description: r##"# `integer_atomics`
6944
6945The tracking issue for this feature is: [#99069]
6946
6947[#99069]: https://github.com/rust-lang/rust/issues/99069
6948
6949------------------------
6950"##,
6951        default_severity: Severity::Allow,
6952        warn_since: None,
6953        deny_since: None,
6954    },
6955    Lint {
6956        label: "integer_sign_cast",
6957        description: r##"# `integer_sign_cast`
6958
6959The tracking issue for this feature is: [#125882]
6960
6961[#125882]: https://github.com/rust-lang/rust/issues/125882
6962
6963------------------------
6964"##,
6965        default_severity: Severity::Allow,
6966        warn_since: None,
6967        deny_since: None,
6968    },
6969    Lint {
6970        label: "internal_impls_macro",
6971        description: r##"# `internal_impls_macro`
6972
6973This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
6974
6975------------------------
6976"##,
6977        default_severity: Severity::Allow,
6978        warn_since: None,
6979        deny_since: None,
6980    },
6981    Lint {
6982        label: "internal_output_capture",
6983        description: r##"# `internal_output_capture`
6984
6985This feature is internal to the Rust compiler and is not intended for general use.
6986
6987------------------------
6988"##,
6989        default_severity: Severity::Allow,
6990        warn_since: None,
6991        deny_since: None,
6992    },
6993    Lint {
6994        label: "intra_doc_pointers",
6995        description: r##"# `intra-doc-pointers`
6996
6997The tracking issue for this feature is: [#80896]
6998
6999[#80896]: https://github.com/rust-lang/rust/issues/80896
7000
7001------------------------
7002
7003Rustdoc does not currently allow disambiguating between `*const` and `*mut`, and
7004raw pointers in intra-doc links are unstable until it does.
7005
7006```rust
7007#![feature(intra_doc_pointers)]
7008//! [pointer::add]
7009```
7010"##,
7011        default_severity: Severity::Allow,
7012        warn_since: None,
7013        deny_since: None,
7014    },
7015    Lint {
7016        label: "intrinsics",
7017        description: r##"# `intrinsics`
7018
7019The tracking issue for this feature is: None.
7020
7021Intrinsics are rarely intended to be stable directly, but are usually
7022exported in some sort of stable manner. Prefer using the stable interfaces to
7023the intrinsic directly when you can.
7024
7025------------------------
7026
7027
7028## Intrinsics with fallback logic
7029
7030Many intrinsics can be written in pure rust, albeit inefficiently or without supporting
7031some features that only exist on some backends. Backends can simply not implement those
7032intrinsics without causing any code miscompilations or failures to compile.
7033All intrinsic fallback bodies are automatically made cross-crate inlineable (like `#[inline]`)
7034by the codegen backend, but not the MIR inliner.
7035
7036```rust
7037#![feature(intrinsics)]
7038#![allow(internal_features)]
7039
7040#[rustc_intrinsic]
7041const unsafe fn const_deallocate(_ptr: *mut u8, _size: usize, _align: usize) {}
7042```
7043
7044Since these are just regular functions, it is perfectly ok to create the intrinsic twice:
7045
7046```rust
7047#![feature(intrinsics)]
7048#![allow(internal_features)]
7049
7050#[rustc_intrinsic]
7051const unsafe fn const_deallocate(_ptr: *mut u8, _size: usize, _align: usize) {}
7052
7053mod foo {
7054    #[rustc_intrinsic]
7055    const unsafe fn const_deallocate(_ptr: *mut u8, _size: usize, _align: usize) {
7056        panic!("noisy const dealloc")
7057    }
7058}
7059
7060```
7061
7062The behaviour on backends that override the intrinsic is exactly the same. On other
7063backends, the intrinsic behaviour depends on which implementation is called, just like
7064with any regular function.
7065
7066## Intrinsics lowered to MIR instructions
7067
7068Various intrinsics have native MIR operations that they correspond to. Instead of requiring
7069backends to implement both the intrinsic and the MIR operation, the `lower_intrinsics` pass
7070will convert the calls to the MIR operation. Backends do not need to know about these intrinsics
7071at all. These intrinsics only make sense without a body, and can either be declared as a "rust-intrinsic"
7072or as a `#[rustc_intrinsic]`. The body is never used, as calls to the intrinsic do not exist
7073anymore after MIR analyses.
7074
7075## Intrinsics without fallback logic
7076
7077These must be implemented by all backends.
7078
7079### `#[rustc_intrinsic]` declarations
7080
7081These are written like intrinsics with fallback bodies, but the body is irrelevant.
7082Use `loop {}` for the body or call the intrinsic recursively and add
7083`#[rustc_intrinsic_must_be_overridden]` to the function to ensure that backends don't
7084invoke the body.
7085
7086### Legacy extern ABI based intrinsics
7087
7088These are imported as if they were FFI functions, with the special
7089`rust-intrinsic` ABI. For example, if one was in a freestanding
7090context, but wished to be able to `transmute` between types, and
7091perform efficient pointer arithmetic, one would import those functions
7092via a declaration like
7093
7094```rust
7095#![feature(intrinsics)]
7096#![allow(internal_features)]
7097# fn main() {}
7098
7099extern "rust-intrinsic" {
7100    fn transmute<T, U>(x: T) -> U;
7101
7102    fn arith_offset<T>(dst: *const T, offset: isize) -> *const T;
7103}
7104```
7105
7106As with any other FFI functions, these are by default always `unsafe` to call.
7107You can add `#[rustc_safe_intrinsic]` to the intrinsic to make it safe to call.
7108"##,
7109        default_severity: Severity::Allow,
7110        warn_since: None,
7111        deny_since: None,
7112    },
7113    Lint {
7114        label: "io_const_error",
7115        description: r##"# `io_const_error`
7116
7117The tracking issue for this feature is: [#133448]
7118
7119[#133448]: https://github.com/rust-lang/rust/issues/133448
7120
7121------------------------
7122"##,
7123        default_severity: Severity::Allow,
7124        warn_since: None,
7125        deny_since: None,
7126    },
7127    Lint {
7128        label: "io_const_error_internals",
7129        description: r##"# `io_const_error_internals`
7130
7131This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
7132
7133------------------------
7134"##,
7135        default_severity: Severity::Allow,
7136        warn_since: None,
7137        deny_since: None,
7138    },
7139    Lint {
7140        label: "io_error_inprogress",
7141        description: r##"# `io_error_inprogress`
7142
7143The tracking issue for this feature is: [#130840]
7144
7145[#130840]: https://github.com/rust-lang/rust/issues/130840
7146
7147------------------------
7148"##,
7149        default_severity: Severity::Allow,
7150        warn_since: None,
7151        deny_since: None,
7152    },
7153    Lint {
7154        label: "io_error_more",
7155        description: r##"# `io_error_more`
7156
7157The tracking issue for this feature is: [#86442]
7158
7159[#86442]: https://github.com/rust-lang/rust/issues/86442
7160
7161------------------------
7162"##,
7163        default_severity: Severity::Allow,
7164        warn_since: None,
7165        deny_since: None,
7166    },
7167    Lint {
7168        label: "io_error_uncategorized",
7169        description: r##"# `io_error_uncategorized`
7170
7171This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
7172
7173------------------------
7174"##,
7175        default_severity: Severity::Allow,
7176        warn_since: None,
7177        deny_since: None,
7178    },
7179    Lint {
7180        label: "io_slice_as_bytes",
7181        description: r##"# `io_slice_as_bytes`
7182
7183The tracking issue for this feature is: [#132818]
7184
7185[#132818]: https://github.com/rust-lang/rust/issues/132818
7186
7187------------------------
7188"##,
7189        default_severity: Severity::Allow,
7190        warn_since: None,
7191        deny_since: None,
7192    },
7193    Lint {
7194        label: "ip",
7195        description: r##"# `ip`
7196
7197The tracking issue for this feature is: [#27709]
7198
7199[#27709]: https://github.com/rust-lang/rust/issues/27709
7200
7201------------------------
7202"##,
7203        default_severity: Severity::Allow,
7204        warn_since: None,
7205        deny_since: None,
7206    },
7207    Lint {
7208        label: "ip_from",
7209        description: r##"# `ip_from`
7210
7211The tracking issue for this feature is: [#131360]
7212
7213[#131360]: https://github.com/rust-lang/rust/issues/131360
7214
7215------------------------
7216"##,
7217        default_severity: Severity::Allow,
7218        warn_since: None,
7219        deny_since: None,
7220    },
7221    Lint {
7222        label: "is_ascii_octdigit",
7223        description: r##"# `is_ascii_octdigit`
7224
7225The tracking issue for this feature is: [#101288]
7226
7227[#101288]: https://github.com/rust-lang/rust/issues/101288
7228
7229------------------------
7230"##,
7231        default_severity: Severity::Allow,
7232        warn_since: None,
7233        deny_since: None,
7234    },
7235    Lint {
7236        label: "is_loongarch_feature_detected",
7237        description: r##"# `is_loongarch_feature_detected`
7238
7239The tracking issue for this feature is: [#117425]
7240
7241[#117425]: https://github.com/rust-lang/rust/issues/117425
7242
7243------------------------
7244"##,
7245        default_severity: Severity::Allow,
7246        warn_since: None,
7247        deny_since: None,
7248    },
7249    Lint {
7250        label: "is_riscv_feature_detected",
7251        description: r##"# `is_riscv_feature_detected`
7252
7253The tracking issue for this feature is: [#111192]
7254
7255[#111192]: https://github.com/rust-lang/rust/issues/111192
7256
7257------------------------
7258"##,
7259        default_severity: Severity::Allow,
7260        warn_since: None,
7261        deny_since: None,
7262    },
7263    Lint {
7264        label: "iter_advance_by",
7265        description: r##"# `iter_advance_by`
7266
7267The tracking issue for this feature is: [#77404]
7268
7269[#77404]: https://github.com/rust-lang/rust/issues/77404
7270
7271------------------------
7272"##,
7273        default_severity: Severity::Allow,
7274        warn_since: None,
7275        deny_since: None,
7276    },
7277    Lint {
7278        label: "iter_array_chunks",
7279        description: r##"# `iter_array_chunks`
7280
7281The tracking issue for this feature is: [#100450]
7282
7283[#100450]: https://github.com/rust-lang/rust/issues/100450
7284
7285------------------------
7286"##,
7287        default_severity: Severity::Allow,
7288        warn_since: None,
7289        deny_since: None,
7290    },
7291    Lint {
7292        label: "iter_chain",
7293        description: r##"# `iter_chain`
7294
7295The tracking issue for this feature is: [#125964]
7296
7297[#125964]: https://github.com/rust-lang/rust/issues/125964
7298
7299------------------------
7300"##,
7301        default_severity: Severity::Allow,
7302        warn_since: None,
7303        deny_since: None,
7304    },
7305    Lint {
7306        label: "iter_collect_into",
7307        description: r##"# `iter_collect_into`
7308
7309The tracking issue for this feature is: [#94780]
7310
7311[#94780]: https://github.com/rust-lang/rust/issues/94780
7312
7313------------------------
7314"##,
7315        default_severity: Severity::Allow,
7316        warn_since: None,
7317        deny_since: None,
7318    },
7319    Lint {
7320        label: "iter_from_coroutine",
7321        description: r##"# `iter_from_coroutine`
7322
7323The tracking issue for this feature is: [#43122]
7324
7325[#43122]: https://github.com/rust-lang/rust/issues/43122
7326
7327------------------------
7328"##,
7329        default_severity: Severity::Allow,
7330        warn_since: None,
7331        deny_since: None,
7332    },
7333    Lint {
7334        label: "iter_intersperse",
7335        description: r##"# `iter_intersperse`
7336
7337The tracking issue for this feature is: [#79524]
7338
7339[#79524]: https://github.com/rust-lang/rust/issues/79524
7340
7341------------------------
7342"##,
7343        default_severity: Severity::Allow,
7344        warn_since: None,
7345        deny_since: None,
7346    },
7347    Lint {
7348        label: "iter_is_partitioned",
7349        description: r##"# `iter_is_partitioned`
7350
7351The tracking issue for this feature is: [#62544]
7352
7353[#62544]: https://github.com/rust-lang/rust/issues/62544
7354
7355------------------------
7356"##,
7357        default_severity: Severity::Allow,
7358        warn_since: None,
7359        deny_since: None,
7360    },
7361    Lint {
7362        label: "iter_map_windows",
7363        description: r##"# `iter_map_windows`
7364
7365The tracking issue for this feature is: [#87155]
7366
7367[#87155]: https://github.com/rust-lang/rust/issues/87155
7368
7369------------------------
7370"##,
7371        default_severity: Severity::Allow,
7372        warn_since: None,
7373        deny_since: None,
7374    },
7375    Lint {
7376        label: "iter_next_chunk",
7377        description: r##"# `iter_next_chunk`
7378
7379The tracking issue for this feature is: [#98326]
7380
7381[#98326]: https://github.com/rust-lang/rust/issues/98326
7382
7383------------------------
7384"##,
7385        default_severity: Severity::Allow,
7386        warn_since: None,
7387        deny_since: None,
7388    },
7389    Lint {
7390        label: "iter_order_by",
7391        description: r##"# `iter_order_by`
7392
7393The tracking issue for this feature is: [#64295]
7394
7395[#64295]: https://github.com/rust-lang/rust/issues/64295
7396
7397------------------------
7398"##,
7399        default_severity: Severity::Allow,
7400        warn_since: None,
7401        deny_since: None,
7402    },
7403    Lint {
7404        label: "iter_partition_in_place",
7405        description: r##"# `iter_partition_in_place`
7406
7407The tracking issue for this feature is: [#62543]
7408
7409[#62543]: https://github.com/rust-lang/rust/issues/62543
7410
7411------------------------
7412"##,
7413        default_severity: Severity::Allow,
7414        warn_since: None,
7415        deny_since: None,
7416    },
7417    Lint {
7418        label: "iterator_try_collect",
7419        description: r##"# `iterator_try_collect`
7420
7421The tracking issue for this feature is: [#94047]
7422
7423[#94047]: https://github.com/rust-lang/rust/issues/94047
7424
7425------------------------
7426"##,
7427        default_severity: Severity::Allow,
7428        warn_since: None,
7429        deny_since: None,
7430    },
7431    Lint {
7432        label: "iterator_try_reduce",
7433        description: r##"# `iterator_try_reduce`
7434
7435The tracking issue for this feature is: [#87053]
7436
7437[#87053]: https://github.com/rust-lang/rust/issues/87053
7438
7439------------------------
7440"##,
7441        default_severity: Severity::Allow,
7442        warn_since: None,
7443        deny_since: None,
7444    },
7445    Lint {
7446        label: "junction_point",
7447        description: r##"# `junction_point`
7448
7449The tracking issue for this feature is: [#121709]
7450
7451[#121709]: https://github.com/rust-lang/rust/issues/121709
7452
7453------------------------
7454"##,
7455        default_severity: Severity::Allow,
7456        warn_since: None,
7457        deny_since: None,
7458    },
7459    Lint {
7460        label: "lahfsahf_target_feature",
7461        description: r##"# `lahfsahf_target_feature`
7462
7463The tracking issue for this feature is: [#44839]
7464
7465[#44839]: https://github.com/rust-lang/rust/issues/44839
7466
7467------------------------
7468"##,
7469        default_severity: Severity::Allow,
7470        warn_since: None,
7471        deny_since: None,
7472    },
7473    Lint {
7474        label: "lang_items",
7475        description: r##"# `lang_items`
7476
7477The tracking issue for this feature is: None.
7478
7479------------------------
7480
7481The `rustc` compiler has certain pluggable operations, that is,
7482functionality that isn't hard-coded into the language, but is
7483implemented in libraries, with a special marker to tell the compiler
7484it exists. The marker is the attribute `#[lang = "..."]` and there are
7485various different values of `...`, i.e. various different 'lang
7486items'. Most of them can only be defined once.
7487
7488Lang items are loaded lazily by the compiler; e.g. if one never uses `Box`
7489then there is no need to define a function for `exchange_malloc`.
7490`rustc` will emit an error when an item is needed but not found in the current
7491crate or any that it depends on.
7492
7493Some features provided by lang items:
7494
7495- overloadable operators via traits: the traits corresponding to the
7496  `==`, `<`, dereferencing (`*`) and `+` (etc.) operators are all
7497  marked with lang items; those specific four are `eq`, `partial_ord`,
7498  `deref`/`deref_mut`, and `add` respectively.
7499- panicking: the `panic` and `panic_impl` lang items, among others.
7500- stack unwinding: the lang item `eh_personality` is a function used by the
7501  failure mechanisms of the compiler. This is often mapped to GCC's personality
7502  function (see the [`std` implementation][personality] for more information),
7503  but programs which don't trigger a panic can be assured that this function is
7504  never called. Additionally, a `eh_catch_typeinfo` static is needed for certain
7505  targets which implement Rust panics on top of C++ exceptions.
7506- the traits in `core::marker` used to indicate types of
7507  various kinds; e.g. lang items `sized`, `sync` and `copy`.
7508- memory allocation, see below.
7509
7510Most lang items are defined by `core`, but if you're trying to build
7511an executable without the `std` crate, you might run into the need
7512for lang item definitions.
7513
7514[personality]: https://github.com/rust-lang/rust/blob/master/library/std/src/sys/personality/gcc.rs
7515
7516## Example: Implementing a `Box`
7517
7518`Box` pointers require two lang items: one for the type itself and one for
7519allocation. A freestanding program that uses the `Box` sugar for dynamic
7520allocations via `malloc` and `free`:
7521
7522```rust,ignore (libc-is-finicky)
7523#![feature(lang_items, start, core_intrinsics, rustc_private, panic_unwind, rustc_attrs)]
7524#![allow(internal_features)]
7525#![no_std]
7526
7527extern crate libc;
7528extern crate unwind;
7529
7530use core::ffi::c_void;
7531use core::intrinsics;
7532use core::panic::PanicInfo;
7533use core::ptr::NonNull;
7534
7535pub struct Global; // the global allocator
7536struct Unique<T>(NonNull<T>);
7537
7538#[lang = "owned_box"]
7539pub struct Box<T, A = Global>(Unique<T>, A);
7540
7541impl<T> Box<T> {
7542    pub fn new(x: T) -> Self {
7543        #[rustc_box]
7544        Box::new(x)
7545    }
7546}
7547
7548impl<T, A> Drop for Box<T, A> {
7549    fn drop(&mut self) {
7550        unsafe {
7551            libc::free(self.0.0.as_ptr() as *mut c_void);
7552        }
7553    }
7554}
7555
7556#[lang = "exchange_malloc"]
7557unsafe fn allocate(size: usize, _align: usize) -> *mut u8 {
7558    let p = libc::malloc(size) as *mut u8;
7559
7560    // Check if `malloc` failed:
7561    if p.is_null() {
7562        intrinsics::abort();
7563    }
7564
7565    p
7566}
7567
7568#[start]
7569fn main(_argc: isize, _argv: *const *const u8) -> isize {
7570    let _x = Box::new(1);
7571
7572    0
7573}
7574
7575#[lang = "eh_personality"]
7576fn rust_eh_personality() {}
7577
7578#[panic_handler]
7579fn panic_handler(_info: &PanicInfo) -> ! { intrinsics::abort() }
7580```
7581
7582Note the use of `abort`: the `exchange_malloc` lang item is assumed to
7583return a valid pointer, and so needs to do the check internally.
7584
7585## List of all language items
7586
7587An up-to-date list of all language items can be found [here] in the compiler code.
7588
7589[here]: https://github.com/rust-lang/rust/blob/master/compiler/rustc_hir/src/lang_items.rs
7590"##,
7591        default_severity: Severity::Allow,
7592        warn_since: None,
7593        deny_since: None,
7594    },
7595    Lint {
7596        label: "large_assignments",
7597        description: r##"# `large_assignments`
7598
7599The tracking issue for this feature is: [#83518]
7600
7601[#83518]: https://github.com/rust-lang/rust/issues/83518
7602
7603------------------------
7604"##,
7605        default_severity: Severity::Allow,
7606        warn_since: None,
7607        deny_since: None,
7608    },
7609    Lint {
7610        label: "layout_for_ptr",
7611        description: r##"# `layout_for_ptr`
7612
7613The tracking issue for this feature is: [#69835]
7614
7615[#69835]: https://github.com/rust-lang/rust/issues/69835
7616
7617------------------------
7618"##,
7619        default_severity: Severity::Allow,
7620        warn_since: None,
7621        deny_since: None,
7622    },
7623    Lint {
7624        label: "lazy_cell_into_inner",
7625        description: r##"# `lazy_cell_into_inner`
7626
7627The tracking issue for this feature is: [#125623]
7628
7629[#125623]: https://github.com/rust-lang/rust/issues/125623
7630
7631------------------------
7632"##,
7633        default_severity: Severity::Allow,
7634        warn_since: None,
7635        deny_since: None,
7636    },
7637    Lint {
7638        label: "lazy_get",
7639        description: r##"# `lazy_get`
7640
7641The tracking issue for this feature is: [#129333]
7642
7643[#129333]: https://github.com/rust-lang/rust/issues/129333
7644
7645------------------------
7646"##,
7647        default_severity: Severity::Allow,
7648        warn_since: None,
7649        deny_since: None,
7650    },
7651    Lint {
7652        label: "lazy_type_alias",
7653        description: r##"# `lazy_type_alias`
7654
7655The tracking issue for this feature is: [#112792]
7656
7657[#112792]: https://github.com/rust-lang/rust/issues/112792
7658
7659------------------------
7660"##,
7661        default_severity: Severity::Allow,
7662        warn_since: None,
7663        deny_since: None,
7664    },
7665    Lint {
7666        label: "legacy_receiver_trait",
7667        description: r##"# `legacy_receiver_trait`
7668
7669This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
7670
7671------------------------
7672"##,
7673        default_severity: Severity::Allow,
7674        warn_since: None,
7675        deny_since: None,
7676    },
7677    Lint {
7678        label: "let_chains",
7679        description: r##"# `let_chains`
7680
7681The tracking issue for this feature is: [#53667]
7682
7683[#53667]: https://github.com/rust-lang/rust/issues/53667
7684
7685------------------------
7686"##,
7687        default_severity: Severity::Allow,
7688        warn_since: None,
7689        deny_since: None,
7690    },
7691    Lint {
7692        label: "liballoc_internals",
7693        description: r##"# `liballoc_internals`
7694
7695This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
7696
7697------------------------
7698"##,
7699        default_severity: Severity::Allow,
7700        warn_since: None,
7701        deny_since: None,
7702    },
7703    Lint {
7704        label: "libstd_sys_internals",
7705        description: r##"# `libstd_sys_internals`
7706
7707This feature is internal to the Rust compiler and is not intended for general use.
7708
7709------------------------
7710"##,
7711        default_severity: Severity::Allow,
7712        warn_since: None,
7713        deny_since: None,
7714    },
7715    Lint {
7716        label: "lifetime_capture_rules_2024",
7717        description: r##"# `lifetime_capture_rules_2024`
7718
7719This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
7720
7721------------------------
7722"##,
7723        default_severity: Severity::Allow,
7724        warn_since: None,
7725        deny_since: None,
7726    },
7727    Lint {
7728        label: "link_arg_attribute",
7729        description: r##"# `link_arg_attribute`
7730
7731The tracking issue for this feature is: [#99427]
7732
7733------
7734
7735The `link_arg_attribute` feature allows passing arguments into the linker
7736from inside of the source code. Order is preserved for link attributes as
7737they were defined on a single extern block:
7738
7739```rust,no_run
7740#![feature(link_arg_attribute)]
7741
7742#[link(kind = "link-arg", name = "--start-group")]
7743#[link(kind = "static", name = "c")]
7744#[link(kind = "static", name = "gcc")]
7745#[link(kind = "link-arg", name = "--end-group")]
7746extern "C" {}
7747```
7748
7749[#99427]: https://github.com/rust-lang/rust/issues/99427
7750"##,
7751        default_severity: Severity::Allow,
7752        warn_since: None,
7753        deny_since: None,
7754    },
7755    Lint {
7756        label: "link_cfg",
7757        description: r##"# `link_cfg`
7758
7759This feature is internal to the Rust compiler and is not intended for general use.
7760
7761------------------------
7762"##,
7763        default_severity: Severity::Allow,
7764        warn_since: None,
7765        deny_since: None,
7766    },
7767    Lint {
7768        label: "link_llvm_intrinsics",
7769        description: r##"# `link_llvm_intrinsics`
7770
7771The tracking issue for this feature is: [#29602]
7772
7773[#29602]: https://github.com/rust-lang/rust/issues/29602
7774
7775------------------------
7776"##,
7777        default_severity: Severity::Allow,
7778        warn_since: None,
7779        deny_since: None,
7780    },
7781    Lint {
7782        label: "linkage",
7783        description: r##"# `linkage`
7784
7785The tracking issue for this feature is: [#29603]
7786
7787[#29603]: https://github.com/rust-lang/rust/issues/29603
7788
7789------------------------
7790"##,
7791        default_severity: Severity::Allow,
7792        warn_since: None,
7793        deny_since: None,
7794    },
7795    Lint {
7796        label: "linked_list_cursors",
7797        description: r##"# `linked_list_cursors`
7798
7799The tracking issue for this feature is: [#58533]
7800
7801[#58533]: https://github.com/rust-lang/rust/issues/58533
7802
7803------------------------
7804"##,
7805        default_severity: Severity::Allow,
7806        warn_since: None,
7807        deny_since: None,
7808    },
7809    Lint {
7810        label: "linked_list_remove",
7811        description: r##"# `linked_list_remove`
7812
7813The tracking issue for this feature is: [#69210]
7814
7815[#69210]: https://github.com/rust-lang/rust/issues/69210
7816
7817------------------------
7818"##,
7819        default_severity: Severity::Allow,
7820        warn_since: None,
7821        deny_since: None,
7822    },
7823    Lint {
7824        label: "linked_list_retain",
7825        description: r##"# `linked_list_retain`
7826
7827The tracking issue for this feature is: [#114135]
7828
7829[#114135]: https://github.com/rust-lang/rust/issues/114135
7830
7831------------------------
7832"##,
7833        default_severity: Severity::Allow,
7834        warn_since: None,
7835        deny_since: None,
7836    },
7837    Lint {
7838        label: "linux_pidfd",
7839        description: r##"# `linux_pidfd`
7840
7841The tracking issue for this feature is: [#82971]
7842
7843[#82971]: https://github.com/rust-lang/rust/issues/82971
7844
7845------------------------
7846"##,
7847        default_severity: Severity::Allow,
7848        warn_since: None,
7849        deny_since: None,
7850    },
7851    Lint {
7852        label: "local_waker",
7853        description: r##"# `local_waker`
7854
7855The tracking issue for this feature is: [#118959]
7856
7857[#118959]: https://github.com/rust-lang/rust/issues/118959
7858
7859------------------------
7860"##,
7861        default_severity: Severity::Allow,
7862        warn_since: None,
7863        deny_since: None,
7864    },
7865    Lint {
7866        label: "log_syntax",
7867        description: r##"# `log_syntax`
7868
7869The tracking issue for this feature is: [#29598]
7870
7871[#29598]: https://github.com/rust-lang/rust/issues/29598
7872
7873------------------------
7874"##,
7875        default_severity: Severity::Allow,
7876        warn_since: None,
7877        deny_since: None,
7878    },
7879    Lint {
7880        label: "loongarch_target_feature",
7881        description: r##"# `loongarch_target_feature`
7882
7883The tracking issue for this feature is: [#44839]
7884
7885[#44839]: https://github.com/rust-lang/rust/issues/44839
7886
7887------------------------
7888"##,
7889        default_severity: Severity::Allow,
7890        warn_since: None,
7891        deny_since: None,
7892    },
7893    Lint {
7894        label: "macro_metavar_expr",
7895        description: r##"# `macro_metavar_expr`
7896
7897The tracking issue for this feature is: [#83527]
7898
7899[#83527]: https://github.com/rust-lang/rust/issues/83527
7900
7901------------------------
7902"##,
7903        default_severity: Severity::Allow,
7904        warn_since: None,
7905        deny_since: None,
7906    },
7907    Lint {
7908        label: "macro_metavar_expr_concat",
7909        description: r##"# `macro_metavar_expr_concat`
7910
7911The tracking issue for this feature is: [#124225]
7912
7913[#124225]: https://github.com/rust-lang/rust/issues/124225
7914
7915------------------------
7916"##,
7917        default_severity: Severity::Allow,
7918        warn_since: None,
7919        deny_since: None,
7920    },
7921    Lint {
7922        label: "map_many_mut",
7923        description: r##"# `map_many_mut`
7924
7925The tracking issue for this feature is: [#97601]
7926
7927[#97601]: https://github.com/rust-lang/rust/issues/97601
7928
7929------------------------
7930"##,
7931        default_severity: Severity::Allow,
7932        warn_since: None,
7933        deny_since: None,
7934    },
7935    Lint {
7936        label: "map_try_insert",
7937        description: r##"# `map_try_insert`
7938
7939The tracking issue for this feature is: [#82766]
7940
7941[#82766]: https://github.com/rust-lang/rust/issues/82766
7942
7943------------------------
7944"##,
7945        default_severity: Severity::Allow,
7946        warn_since: None,
7947        deny_since: None,
7948    },
7949    Lint {
7950        label: "mapped_lock_guards",
7951        description: r##"# `mapped_lock_guards`
7952
7953The tracking issue for this feature is: [#117108]
7954
7955[#117108]: https://github.com/rust-lang/rust/issues/117108
7956
7957------------------------
7958"##,
7959        default_severity: Severity::Allow,
7960        warn_since: None,
7961        deny_since: None,
7962    },
7963    Lint {
7964        label: "marker_trait_attr",
7965        description: r##"# `marker_trait_attr`
7966
7967The tracking issue for this feature is: [#29864]
7968
7969[#29864]: https://github.com/rust-lang/rust/issues/29864
7970
7971------------------------
7972
7973Normally, Rust keeps you from adding trait implementations that could
7974overlap with each other, as it would be ambiguous which to use.  This
7975feature, however, carves out an exception to that rule: a trait can
7976opt-in to having overlapping implementations, at the cost that those
7977implementations are not allowed to override anything (and thus the
7978trait itself cannot have any associated items, as they're pointless
7979when they'd need to do the same thing for every type anyway).
7980
7981```rust
7982#![feature(marker_trait_attr)]
7983
7984#[marker] trait CheapToClone: Clone {}
7985
7986impl<T: Copy> CheapToClone for T {}
7987
7988// These could potentially overlap with the blanket implementation above,
7989// so are only allowed because CheapToClone is a marker trait.
7990impl<T: CheapToClone, U: CheapToClone> CheapToClone for (T, U) {}
7991impl<T: CheapToClone> CheapToClone for std::ops::Range<T> {}
7992
7993fn cheap_clone<T: CheapToClone>(t: T) -> T {
7994    t.clone()
7995}
7996```
7997
7998This is expected to replace the unstable `overlapping_marker_traits`
7999feature, which applied to all empty traits (without needing an opt-in).
8000"##,
8001        default_severity: Severity::Allow,
8002        warn_since: None,
8003        deny_since: None,
8004    },
8005    Lint {
8006        label: "maybe_uninit_array_assume_init",
8007        description: r##"# `maybe_uninit_array_assume_init`
8008
8009The tracking issue for this feature is: [#96097]
8010
8011[#96097]: https://github.com/rust-lang/rust/issues/96097
8012
8013------------------------
8014"##,
8015        default_severity: Severity::Allow,
8016        warn_since: None,
8017        deny_since: None,
8018    },
8019    Lint {
8020        label: "maybe_uninit_as_bytes",
8021        description: r##"# `maybe_uninit_as_bytes`
8022
8023The tracking issue for this feature is: [#93092]
8024
8025[#93092]: https://github.com/rust-lang/rust/issues/93092
8026
8027------------------------
8028"##,
8029        default_severity: Severity::Allow,
8030        warn_since: None,
8031        deny_since: None,
8032    },
8033    Lint {
8034        label: "maybe_uninit_fill",
8035        description: r##"# `maybe_uninit_fill`
8036
8037The tracking issue for this feature is: [#117428]
8038
8039[#117428]: https://github.com/rust-lang/rust/issues/117428
8040
8041------------------------
8042"##,
8043        default_severity: Severity::Allow,
8044        warn_since: None,
8045        deny_since: None,
8046    },
8047    Lint {
8048        label: "maybe_uninit_slice",
8049        description: r##"# `maybe_uninit_slice`
8050
8051The tracking issue for this feature is: [#63569]
8052
8053[#63569]: https://github.com/rust-lang/rust/issues/63569
8054
8055------------------------
8056"##,
8057        default_severity: Severity::Allow,
8058        warn_since: None,
8059        deny_since: None,
8060    },
8061    Lint {
8062        label: "maybe_uninit_uninit_array",
8063        description: r##"# `maybe_uninit_uninit_array`
8064
8065The tracking issue for this feature is: [#96097]
8066
8067[#96097]: https://github.com/rust-lang/rust/issues/96097
8068
8069------------------------
8070"##,
8071        default_severity: Severity::Allow,
8072        warn_since: None,
8073        deny_since: None,
8074    },
8075    Lint {
8076        label: "maybe_uninit_uninit_array_transpose",
8077        description: r##"# `maybe_uninit_uninit_array_transpose`
8078
8079The tracking issue for this feature is: [#96097]
8080
8081[#96097]: https://github.com/rust-lang/rust/issues/96097
8082
8083------------------------
8084"##,
8085        default_severity: Severity::Allow,
8086        warn_since: None,
8087        deny_since: None,
8088    },
8089    Lint {
8090        label: "maybe_uninit_write_slice",
8091        description: r##"# `maybe_uninit_write_slice`
8092
8093The tracking issue for this feature is: [#79995]
8094
8095[#79995]: https://github.com/rust-lang/rust/issues/79995
8096
8097------------------------
8098"##,
8099        default_severity: Severity::Allow,
8100        warn_since: None,
8101        deny_since: None,
8102    },
8103    Lint {
8104        label: "mem_copy_fn",
8105        description: r##"# `mem_copy_fn`
8106
8107The tracking issue for this feature is: [#98262]
8108
8109[#98262]: https://github.com/rust-lang/rust/issues/98262
8110
8111------------------------
8112"##,
8113        default_severity: Severity::Allow,
8114        warn_since: None,
8115        deny_since: None,
8116    },
8117    Lint {
8118        label: "min_generic_const_args",
8119        description: r##"# `min_generic_const_args`
8120
8121The tracking issue for this feature is: [#132980]
8122
8123[#132980]: https://github.com/rust-lang/rust/issues/132980
8124
8125------------------------
8126"##,
8127        default_severity: Severity::Allow,
8128        warn_since: None,
8129        deny_since: None,
8130    },
8131    Lint {
8132        label: "min_specialization",
8133        description: r##"# `min_specialization`
8134
8135The tracking issue for this feature is: [#31844]
8136
8137[#31844]: https://github.com/rust-lang/rust/issues/31844
8138
8139------------------------
8140"##,
8141        default_severity: Severity::Allow,
8142        warn_since: None,
8143        deny_since: None,
8144    },
8145    Lint {
8146        label: "mips_target_feature",
8147        description: r##"# `mips_target_feature`
8148
8149The tracking issue for this feature is: [#44839]
8150
8151[#44839]: https://github.com/rust-lang/rust/issues/44839
8152
8153------------------------
8154"##,
8155        default_severity: Severity::Allow,
8156        warn_since: None,
8157        deny_since: None,
8158    },
8159    Lint {
8160        label: "mixed_integer_ops_unsigned_sub",
8161        description: r##"# `mixed_integer_ops_unsigned_sub`
8162
8163The tracking issue for this feature is: [#126043]
8164
8165[#126043]: https://github.com/rust-lang/rust/issues/126043
8166
8167------------------------
8168"##,
8169        default_severity: Severity::Allow,
8170        warn_since: None,
8171        deny_since: None,
8172    },
8173    Lint {
8174        label: "more_float_constants",
8175        description: r##"# `more_float_constants`
8176
8177The tracking issue for this feature is: [#103883]
8178
8179[#103883]: https://github.com/rust-lang/rust/issues/103883
8180
8181------------------------
8182"##,
8183        default_severity: Severity::Allow,
8184        warn_since: None,
8185        deny_since: None,
8186    },
8187    Lint {
8188        label: "more_maybe_bounds",
8189        description: r##"# `more_maybe_bounds`
8190
8191This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
8192
8193------------------------
8194"##,
8195        default_severity: Severity::Allow,
8196        warn_since: None,
8197        deny_since: None,
8198    },
8199    Lint {
8200        label: "more_qualified_paths",
8201        description: r##"# `more_qualified_paths`
8202
8203The `more_qualified_paths` feature can be used in order to enable the
8204use of qualified paths in patterns.
8205
8206The tracking issue for this feature is: [#86935](https://github.com/rust-lang/rust/issues/86935).
8207
8208------------------------
8209
8210## Example
8211
8212```rust
8213#![feature(more_qualified_paths)]
8214
8215fn main() {
8216    // destructure through a qualified path
8217    let <Foo as A>::Assoc { br } = StructStruct { br: 2 };
8218}
8219
8220struct StructStruct {
8221    br: i8,
8222}
8223
8224struct Foo;
8225
8226trait A {
8227    type Assoc;
8228}
8229
8230impl A for Foo {
8231    type Assoc = StructStruct;
8232}
8233```
8234"##,
8235        default_severity: Severity::Allow,
8236        warn_since: None,
8237        deny_since: None,
8238    },
8239    Lint {
8240        label: "mpmc_channel",
8241        description: r##"# `mpmc_channel`
8242
8243The tracking issue for this feature is: [#126840]
8244
8245[#126840]: https://github.com/rust-lang/rust/issues/126840
8246
8247------------------------
8248"##,
8249        default_severity: Severity::Allow,
8250        warn_since: None,
8251        deny_since: None,
8252    },
8253    Lint {
8254        label: "multiple_supertrait_upcastable",
8255        description: r##"# `multiple_supertrait_upcastable`
8256
8257This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
8258
8259------------------------
8260"##,
8261        default_severity: Severity::Allow,
8262        warn_since: None,
8263        deny_since: None,
8264    },
8265    Lint {
8266        label: "must_not_suspend",
8267        description: r##"# `must_not_suspend`
8268
8269The tracking issue for this feature is: [#83310]
8270
8271[#83310]: https://github.com/rust-lang/rust/issues/83310
8272
8273------------------------
8274"##,
8275        default_severity: Severity::Allow,
8276        warn_since: None,
8277        deny_since: None,
8278    },
8279    Lint {
8280        label: "mut_ref",
8281        description: r##"# `mut_ref`
8282
8283The tracking issue for this feature is: [#123076]
8284
8285[#123076]: https://github.com/rust-lang/rust/issues/123076
8286
8287------------------------
8288"##,
8289        default_severity: Severity::Allow,
8290        warn_since: None,
8291        deny_since: None,
8292    },
8293    Lint {
8294        label: "naked_functions",
8295        description: r##"# `naked_functions`
8296
8297The tracking issue for this feature is: [#90957]
8298
8299[#90957]: https://github.com/rust-lang/rust/issues/90957
8300
8301------------------------
8302"##,
8303        default_severity: Severity::Allow,
8304        warn_since: None,
8305        deny_since: None,
8306    },
8307    Lint {
8308        label: "native_link_modifiers_as_needed",
8309        description: r##"# `native_link_modifiers_as_needed`
8310
8311The tracking issue for this feature is: [#81490]
8312
8313[#81490]: https://github.com/rust-lang/rust/issues/81490
8314
8315------------------------
8316
8317The `native_link_modifiers_as_needed` feature allows you to use the `as-needed` modifier.
8318
8319`as-needed` is only compatible with the `dynamic` and `framework` linking kinds. Using any other kind will result in a compiler error.
8320
8321`+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.
8322
8323This modifier translates to `--as-needed` for ld-like linkers, and to `-dead_strip_dylibs` / `-needed_library` / `-needed_framework` for ld64.
8324The modifier does nothing for linkers that don't support it (e.g. `link.exe`).
8325
8326The 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.
8327"##,
8328        default_severity: Severity::Allow,
8329        warn_since: None,
8330        deny_since: None,
8331    },
8332    Lint {
8333        label: "needs_panic_runtime",
8334        description: r##"# `needs_panic_runtime`
8335
8336The tracking issue for this feature is: [#32837]
8337
8338[#32837]: https://github.com/rust-lang/rust/issues/32837
8339
8340------------------------
8341"##,
8342        default_severity: Severity::Allow,
8343        warn_since: None,
8344        deny_since: None,
8345    },
8346    Lint {
8347        label: "negative_bounds",
8348        description: r##"# `negative_bounds`
8349
8350This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
8351
8352------------------------
8353"##,
8354        default_severity: Severity::Allow,
8355        warn_since: None,
8356        deny_since: None,
8357    },
8358    Lint {
8359        label: "negative_impls",
8360        description: r##"# `negative_impls`
8361
8362The tracking issue for this feature is [#68318].
8363
8364[#68318]: https://github.com/rust-lang/rust/issues/68318
8365
8366----
8367
8368With the feature gate `negative_impls`, you can write negative impls as well as positive ones:
8369
8370```rust
8371#![feature(negative_impls)]
8372trait DerefMut { }
8373impl<T: ?Sized> !DerefMut for &T { }
8374```
8375
8376Negative 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.
8377
8378Negative impls have the following characteristics:
8379
8380* They do not have any items.
8381* They must obey the orphan rules as if they were a positive impl.
8382* They cannot "overlap" with any positive impls.
8383
8384## Semver interaction
8385
8386It is a breaking change to remove a negative impl. Negative impls are a commitment not to implement the given trait for the named types.
8387
8388## Orphan and overlap rules
8389
8390Negative 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.
8391
8392Similarly, 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.)
8393
8394## Interaction with auto traits
8395
8396Declaring a negative impl `impl !SomeAutoTrait for SomeType` for an
8397auto-trait serves two purposes:
8398
8399* as with any trait, it declares that `SomeType` will never implement `SomeAutoTrait`;
8400* it disables the automatic `SomeType: SomeAutoTrait` impl that would otherwise have been generated.
8401
8402Note that, at present, there is no way to indicate that a given type
8403does not implement an auto trait *but that it may do so in the
8404future*. For ordinary types, this is done by simply not declaring any
8405impl at all, but that is not an option for auto traits. A workaround
8406is that one could embed a marker type as one of the fields, where the
8407marker type is `!AutoTrait`.
8408
8409## Immediate uses
8410
8411Negative 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).
8412
8413This serves two purposes:
8414
8415* For proving the correctness of unsafe code, we can use that impl as evidence that no `DerefMut` or `Clone` impl exists.
8416* It prevents downstream crates from creating such impls.
8417"##,
8418        default_severity: Severity::Allow,
8419        warn_since: None,
8420        deny_since: None,
8421    },
8422    Lint {
8423        label: "never_patterns",
8424        description: r##"# `never_patterns`
8425
8426The tracking issue for this feature is: [#118155]
8427
8428[#118155]: https://github.com/rust-lang/rust/issues/118155
8429
8430------------------------
8431"##,
8432        default_severity: Severity::Allow,
8433        warn_since: None,
8434        deny_since: None,
8435    },
8436    Lint {
8437        label: "never_type",
8438        description: r##"# `never_type`
8439
8440The tracking issue for this feature is: [#35121]
8441
8442[#35121]: https://github.com/rust-lang/rust/issues/35121
8443
8444------------------------
8445"##,
8446        default_severity: Severity::Allow,
8447        warn_since: None,
8448        deny_since: None,
8449    },
8450    Lint {
8451        label: "never_type_fallback",
8452        description: r##"# `never_type_fallback`
8453
8454The tracking issue for this feature is: [#65992]
8455
8456[#65992]: https://github.com/rust-lang/rust/issues/65992
8457
8458------------------------
8459"##,
8460        default_severity: Severity::Allow,
8461        warn_since: None,
8462        deny_since: None,
8463    },
8464    Lint {
8465        label: "new_range_api",
8466        description: r##"# `new_range_api`
8467
8468The tracking issue for this feature is: [#125687]
8469
8470[#125687]: https://github.com/rust-lang/rust/issues/125687
8471
8472------------------------
8473"##,
8474        default_severity: Severity::Allow,
8475        warn_since: None,
8476        deny_since: None,
8477    },
8478    Lint {
8479        label: "new_zeroed_alloc",
8480        description: r##"# `new_zeroed_alloc`
8481
8482The tracking issue for this feature is: [#129396]
8483
8484[#129396]: https://github.com/rust-lang/rust/issues/129396
8485
8486------------------------
8487"##,
8488        default_severity: Severity::Allow,
8489        warn_since: None,
8490        deny_since: None,
8491    },
8492    Lint {
8493        label: "no_core",
8494        description: r##"# `no_core`
8495
8496The tracking issue for this feature is: [#29639]
8497
8498[#29639]: https://github.com/rust-lang/rust/issues/29639
8499
8500------------------------
8501"##,
8502        default_severity: Severity::Allow,
8503        warn_since: None,
8504        deny_since: None,
8505    },
8506    Lint {
8507        label: "no_sanitize",
8508        description: r##"# `no_sanitize`
8509
8510The tracking issue for this feature is: [#39699]
8511
8512[#39699]: https://github.com/rust-lang/rust/issues/39699
8513
8514------------------------
8515
8516The `no_sanitize` attribute can be used to selectively disable sanitizer
8517instrumentation in an annotated function. This might be useful to: avoid
8518instrumentation overhead in a performance critical function, or avoid
8519instrumenting code that contains constructs unsupported by given sanitizer.
8520
8521The precise effect of this annotation depends on particular sanitizer in use.
8522For example, with `no_sanitize(thread)`, the thread sanitizer will no longer
8523instrument non-atomic store / load operations, but it will instrument atomic
8524operations to avoid reporting false positives and provide meaning full stack
8525traces.
8526
8527## Examples
8528
8529``` rust
8530#![feature(no_sanitize)]
8531
8532#[no_sanitize(address)]
8533fn foo() {
8534  // ...
8535}
8536```
8537"##,
8538        default_severity: Severity::Allow,
8539        warn_since: None,
8540        deny_since: None,
8541    },
8542    Lint {
8543        label: "non_exhaustive_omitted_patterns_lint",
8544        description: r##"# `non_exhaustive_omitted_patterns_lint`
8545
8546The tracking issue for this feature is: [#89554]
8547
8548[#89554]: https://github.com/rust-lang/rust/issues/89554
8549
8550------------------------
8551"##,
8552        default_severity: Severity::Allow,
8553        warn_since: None,
8554        deny_since: None,
8555    },
8556    Lint {
8557        label: "non_lifetime_binders",
8558        description: r##"# `non_lifetime_binders`
8559
8560The tracking issue for this feature is: [#108185]
8561
8562[#108185]: https://github.com/rust-lang/rust/issues/108185
8563
8564------------------------
8565"##,
8566        default_severity: Severity::Allow,
8567        warn_since: None,
8568        deny_since: None,
8569    },
8570    Lint {
8571        label: "non_null_from_ref",
8572        description: r##"# `non_null_from_ref`
8573
8574The tracking issue for this feature is: [#130823]
8575
8576[#130823]: https://github.com/rust-lang/rust/issues/130823
8577
8578------------------------
8579"##,
8580        default_severity: Severity::Allow,
8581        warn_since: None,
8582        deny_since: None,
8583    },
8584    Lint {
8585        label: "non_zero_count_ones",
8586        description: r##"# `non_zero_count_ones`
8587
8588The tracking issue for this feature is: [#120287]
8589
8590[#120287]: https://github.com/rust-lang/rust/issues/120287
8591
8592------------------------
8593"##,
8594        default_severity: Severity::Allow,
8595        warn_since: None,
8596        deny_since: None,
8597    },
8598    Lint {
8599        label: "nonzero_bitwise",
8600        description: r##"# `nonzero_bitwise`
8601
8602The tracking issue for this feature is: [#128281]
8603
8604[#128281]: https://github.com/rust-lang/rust/issues/128281
8605
8606------------------------
8607"##,
8608        default_severity: Severity::Allow,
8609        warn_since: None,
8610        deny_since: None,
8611    },
8612    Lint {
8613        label: "nonzero_from_mut",
8614        description: r##"# `nonzero_from_mut`
8615
8616The tracking issue for this feature is: [#106290]
8617
8618[#106290]: https://github.com/rust-lang/rust/issues/106290
8619
8620------------------------
8621"##,
8622        default_severity: Severity::Allow,
8623        warn_since: None,
8624        deny_since: None,
8625    },
8626    Lint {
8627        label: "nonzero_internals",
8628        description: r##"# `nonzero_internals`
8629
8630This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
8631
8632------------------------
8633"##,
8634        default_severity: Severity::Allow,
8635        warn_since: None,
8636        deny_since: None,
8637    },
8638    Lint {
8639        label: "nonzero_ops",
8640        description: r##"# `nonzero_ops`
8641
8642The tracking issue for this feature is: [#84186]
8643
8644[#84186]: https://github.com/rust-lang/rust/issues/84186
8645
8646------------------------
8647"##,
8648        default_severity: Severity::Allow,
8649        warn_since: None,
8650        deny_since: None,
8651    },
8652    Lint {
8653        label: "num_midpoint_signed",
8654        description: r##"# `num_midpoint_signed`
8655
8656The tracking issue for this feature is: [#110840]
8657
8658[#110840]: https://github.com/rust-lang/rust/issues/110840
8659
8660------------------------
8661"##,
8662        default_severity: Severity::Allow,
8663        warn_since: None,
8664        deny_since: None,
8665    },
8666    Lint {
8667        label: "numfmt",
8668        description: r##"# `numfmt`
8669
8670This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
8671
8672------------------------
8673"##,
8674        default_severity: Severity::Allow,
8675        warn_since: None,
8676        deny_since: None,
8677    },
8678    Lint {
8679        label: "offset_of_enum",
8680        description: r##"# `offset_of_enum`
8681
8682The tracking issue for this feature is: [#120141]
8683
8684[#120141]: https://github.com/rust-lang/rust/issues/120141
8685
8686------------------------
8687"##,
8688        default_severity: Severity::Allow,
8689        warn_since: None,
8690        deny_since: None,
8691    },
8692    Lint {
8693        label: "offset_of_slice",
8694        description: r##"# `offset_of_slice`
8695
8696The tracking issue for this feature is: [#126151]
8697
8698[#126151]: https://github.com/rust-lang/rust/issues/126151
8699
8700------------------------
8701"##,
8702        default_severity: Severity::Allow,
8703        warn_since: None,
8704        deny_since: None,
8705    },
8706    Lint {
8707        label: "omit_gdb_pretty_printer_section",
8708        description: r##"# `omit_gdb_pretty_printer_section`
8709
8710This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
8711
8712------------------------
8713"##,
8714        default_severity: Severity::Allow,
8715        warn_since: None,
8716        deny_since: None,
8717    },
8718    Lint {
8719        label: "once_cell_get_mut",
8720        description: r##"# `once_cell_get_mut`
8721
8722The tracking issue for this feature is: [#121641]
8723
8724[#121641]: https://github.com/rust-lang/rust/issues/121641
8725
8726------------------------
8727"##,
8728        default_severity: Severity::Allow,
8729        warn_since: None,
8730        deny_since: None,
8731    },
8732    Lint {
8733        label: "once_cell_try",
8734        description: r##"# `once_cell_try`
8735
8736The tracking issue for this feature is: [#109737]
8737
8738[#109737]: https://github.com/rust-lang/rust/issues/109737
8739
8740------------------------
8741"##,
8742        default_severity: Severity::Allow,
8743        warn_since: None,
8744        deny_since: None,
8745    },
8746    Lint {
8747        label: "once_cell_try_insert",
8748        description: r##"# `once_cell_try_insert`
8749
8750The tracking issue for this feature is: [#116693]
8751
8752[#116693]: https://github.com/rust-lang/rust/issues/116693
8753
8754------------------------
8755"##,
8756        default_severity: Severity::Allow,
8757        warn_since: None,
8758        deny_since: None,
8759    },
8760    Lint {
8761        label: "once_wait",
8762        description: r##"# `once_wait`
8763
8764The tracking issue for this feature is: [#127527]
8765
8766[#127527]: https://github.com/rust-lang/rust/issues/127527
8767
8768------------------------
8769"##,
8770        default_severity: Severity::Allow,
8771        warn_since: None,
8772        deny_since: None,
8773    },
8774    Lint {
8775        label: "one_sided_range",
8776        description: r##"# `one_sided_range`
8777
8778The tracking issue for this feature is: [#69780]
8779
8780[#69780]: https://github.com/rust-lang/rust/issues/69780
8781
8782------------------------
8783"##,
8784        default_severity: Severity::Allow,
8785        warn_since: None,
8786        deny_since: None,
8787    },
8788    Lint {
8789        label: "optimize_attribute",
8790        description: r##"# `optimize_attribute`
8791
8792The tracking issue for this feature is: [#54882]
8793
8794[#54882]: https://github.com/rust-lang/rust/issues/54882
8795
8796------------------------
8797"##,
8798        default_severity: Severity::Allow,
8799        warn_since: None,
8800        deny_since: None,
8801    },
8802    Lint {
8803        label: "option_array_transpose",
8804        description: r##"# `option_array_transpose`
8805
8806The tracking issue for this feature is: [#130828]
8807
8808[#130828]: https://github.com/rust-lang/rust/issues/130828
8809
8810------------------------
8811"##,
8812        default_severity: Severity::Allow,
8813        warn_since: None,
8814        deny_since: None,
8815    },
8816    Lint {
8817        label: "option_zip",
8818        description: r##"# `option_zip`
8819
8820The tracking issue for this feature is: [#70086]
8821
8822[#70086]: https://github.com/rust-lang/rust/issues/70086
8823
8824------------------------
8825"##,
8826        default_severity: Severity::Allow,
8827        warn_since: None,
8828        deny_since: None,
8829    },
8830    Lint {
8831        label: "os_str_display",
8832        description: r##"# `os_str_display`
8833
8834The tracking issue for this feature is: [#120048]
8835
8836[#120048]: https://github.com/rust-lang/rust/issues/120048
8837
8838------------------------
8839"##,
8840        default_severity: Severity::Allow,
8841        warn_since: None,
8842        deny_since: None,
8843    },
8844    Lint {
8845        label: "os_str_slice",
8846        description: r##"# `os_str_slice`
8847
8848The tracking issue for this feature is: [#118485]
8849
8850[#118485]: https://github.com/rust-lang/rust/issues/118485
8851
8852------------------------
8853"##,
8854        default_severity: Severity::Allow,
8855        warn_since: None,
8856        deny_since: None,
8857    },
8858    Lint {
8859        label: "os_string_pathbuf_leak",
8860        description: r##"# `os_string_pathbuf_leak`
8861
8862The tracking issue for this feature is: [#125965]
8863
8864[#125965]: https://github.com/rust-lang/rust/issues/125965
8865
8866------------------------
8867"##,
8868        default_severity: Severity::Allow,
8869        warn_since: None,
8870        deny_since: None,
8871    },
8872    Lint {
8873        label: "os_string_truncate",
8874        description: r##"# `os_string_truncate`
8875
8876The tracking issue for this feature is: [#133262]
8877
8878[#133262]: https://github.com/rust-lang/rust/issues/133262
8879
8880------------------------
8881"##,
8882        default_severity: Severity::Allow,
8883        warn_since: None,
8884        deny_since: None,
8885    },
8886    Lint {
8887        label: "panic_abort",
8888        description: r##"# `panic_abort`
8889
8890The tracking issue for this feature is: [#32837]
8891
8892[#32837]: https://github.com/rust-lang/rust/issues/32837
8893
8894------------------------
8895"##,
8896        default_severity: Severity::Allow,
8897        warn_since: None,
8898        deny_since: None,
8899    },
8900    Lint {
8901        label: "panic_always_abort",
8902        description: r##"# `panic_always_abort`
8903
8904The tracking issue for this feature is: [#84438]
8905
8906[#84438]: https://github.com/rust-lang/rust/issues/84438
8907
8908------------------------
8909"##,
8910        default_severity: Severity::Allow,
8911        warn_since: None,
8912        deny_since: None,
8913    },
8914    Lint {
8915        label: "panic_backtrace_config",
8916        description: r##"# `panic_backtrace_config`
8917
8918The tracking issue for this feature is: [#93346]
8919
8920[#93346]: https://github.com/rust-lang/rust/issues/93346
8921
8922------------------------
8923"##,
8924        default_severity: Severity::Allow,
8925        warn_since: None,
8926        deny_since: None,
8927    },
8928    Lint {
8929        label: "panic_can_unwind",
8930        description: r##"# `panic_can_unwind`
8931
8932The tracking issue for this feature is: [#92988]
8933
8934[#92988]: https://github.com/rust-lang/rust/issues/92988
8935
8936------------------------
8937"##,
8938        default_severity: Severity::Allow,
8939        warn_since: None,
8940        deny_since: None,
8941    },
8942    Lint {
8943        label: "panic_internals",
8944        description: r##"# `panic_internals`
8945
8946This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
8947
8948------------------------
8949"##,
8950        default_severity: Severity::Allow,
8951        warn_since: None,
8952        deny_since: None,
8953    },
8954    Lint {
8955        label: "panic_payload_as_str",
8956        description: r##"# `panic_payload_as_str`
8957
8958The tracking issue for this feature is: [#125175]
8959
8960[#125175]: https://github.com/rust-lang/rust/issues/125175
8961
8962------------------------
8963"##,
8964        default_severity: Severity::Allow,
8965        warn_since: None,
8966        deny_since: None,
8967    },
8968    Lint {
8969        label: "panic_runtime",
8970        description: r##"# `panic_runtime`
8971
8972The tracking issue for this feature is: [#32837]
8973
8974[#32837]: https://github.com/rust-lang/rust/issues/32837
8975
8976------------------------
8977"##,
8978        default_severity: Severity::Allow,
8979        warn_since: None,
8980        deny_since: None,
8981    },
8982    Lint {
8983        label: "panic_unwind",
8984        description: r##"# `panic_unwind`
8985
8986The tracking issue for this feature is: [#32837]
8987
8988[#32837]: https://github.com/rust-lang/rust/issues/32837
8989
8990------------------------
8991"##,
8992        default_severity: Severity::Allow,
8993        warn_since: None,
8994        deny_since: None,
8995    },
8996    Lint {
8997        label: "panic_update_hook",
8998        description: r##"# `panic_update_hook`
8999
9000The tracking issue for this feature is: [#92649]
9001
9002[#92649]: https://github.com/rust-lang/rust/issues/92649
9003
9004------------------------
9005"##,
9006        default_severity: Severity::Allow,
9007        warn_since: None,
9008        deny_since: None,
9009    },
9010    Lint {
9011        label: "patchable_function_entry",
9012        description: r##"# `patchable_function_entry`
9013
9014The tracking issue for this feature is: [#123115]
9015
9016[#123115]: https://github.com/rust-lang/rust/issues/123115
9017
9018------------------------
9019"##,
9020        default_severity: Severity::Allow,
9021        warn_since: None,
9022        deny_since: None,
9023    },
9024    Lint {
9025        label: "path_add_extension",
9026        description: r##"# `path_add_extension`
9027
9028The tracking issue for this feature is: [#127292]
9029
9030[#127292]: https://github.com/rust-lang/rust/issues/127292
9031
9032------------------------
9033"##,
9034        default_severity: Severity::Allow,
9035        warn_since: None,
9036        deny_since: None,
9037    },
9038    Lint {
9039        label: "path_file_prefix",
9040        description: r##"# `path_file_prefix`
9041
9042The tracking issue for this feature is: [#86319]
9043
9044[#86319]: https://github.com/rust-lang/rust/issues/86319
9045
9046------------------------
9047"##,
9048        default_severity: Severity::Allow,
9049        warn_since: None,
9050        deny_since: None,
9051    },
9052    Lint {
9053        label: "pattern",
9054        description: r##"# `pattern`
9055
9056The tracking issue for this feature is: [#27721]
9057
9058[#27721]: https://github.com/rust-lang/rust/issues/27721
9059
9060------------------------
9061"##,
9062        default_severity: Severity::Allow,
9063        warn_since: None,
9064        deny_since: None,
9065    },
9066    Lint {
9067        label: "pattern_complexity_limit",
9068        description: r##"# `pattern_complexity_limit`
9069
9070This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
9071
9072------------------------
9073"##,
9074        default_severity: Severity::Allow,
9075        warn_since: None,
9076        deny_since: None,
9077    },
9078    Lint {
9079        label: "pattern_type_macro",
9080        description: r##"# `pattern_type_macro`
9081
9082The tracking issue for this feature is: [#123646]
9083
9084[#123646]: https://github.com/rust-lang/rust/issues/123646
9085
9086------------------------
9087"##,
9088        default_severity: Severity::Allow,
9089        warn_since: None,
9090        deny_since: None,
9091    },
9092    Lint {
9093        label: "pattern_types",
9094        description: r##"# `pattern_types`
9095
9096The tracking issue for this feature is: [#123646]
9097
9098[#123646]: https://github.com/rust-lang/rust/issues/123646
9099
9100------------------------
9101"##,
9102        default_severity: Severity::Allow,
9103        warn_since: None,
9104        deny_since: None,
9105    },
9106    Lint {
9107        label: "peer_credentials_unix_socket",
9108        description: r##"# `peer_credentials_unix_socket`
9109
9110The tracking issue for this feature is: [#42839]
9111
9112[#42839]: https://github.com/rust-lang/rust/issues/42839
9113
9114------------------------
9115"##,
9116        default_severity: Severity::Allow,
9117        warn_since: None,
9118        deny_since: None,
9119    },
9120    Lint {
9121        label: "pin_coerce_unsized_trait",
9122        description: r##"# `pin_coerce_unsized_trait`
9123
9124The tracking issue for this feature is: [#123430]
9125
9126[#123430]: https://github.com/rust-lang/rust/issues/123430
9127
9128------------------------
9129"##,
9130        default_severity: Severity::Allow,
9131        warn_since: None,
9132        deny_since: None,
9133    },
9134    Lint {
9135        label: "pin_ergonomics",
9136        description: r##"# `pin_ergonomics`
9137
9138The tracking issue for this feature is: [#130494]
9139
9140[#130494]: https://github.com/rust-lang/rust/issues/130494
9141
9142------------------------
9143"##,
9144        default_severity: Severity::Allow,
9145        warn_since: None,
9146        deny_since: None,
9147    },
9148    Lint {
9149        label: "pointer_is_aligned_to",
9150        description: r##"# `pointer_is_aligned_to`
9151
9152The tracking issue for this feature is: [#96284]
9153
9154[#96284]: https://github.com/rust-lang/rust/issues/96284
9155
9156------------------------
9157"##,
9158        default_severity: Severity::Allow,
9159        warn_since: None,
9160        deny_since: None,
9161    },
9162    Lint {
9163        label: "pointer_like_trait",
9164        description: r##"# `pointer_like_trait`
9165
9166This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
9167
9168------------------------
9169"##,
9170        default_severity: Severity::Allow,
9171        warn_since: None,
9172        deny_since: None,
9173    },
9174    Lint {
9175        label: "portable_simd",
9176        description: r##"# `portable_simd`
9177
9178The tracking issue for this feature is: [#86656]
9179
9180[#86656]: https://github.com/rust-lang/rust/issues/86656
9181
9182------------------------
9183"##,
9184        default_severity: Severity::Allow,
9185        warn_since: None,
9186        deny_since: None,
9187    },
9188    Lint {
9189        label: "postfix_match",
9190        description: r##"# `postfix-match`
9191
9192`postfix-match` adds the feature for matching upon values postfix
9193the expressions that generate the values.
9194
9195The tracking issue for this feature is: [#121618](https://github.com/rust-lang/rust/issues/121618).
9196
9197------------------------
9198
9199```rust,edition2021
9200#![feature(postfix_match)]
9201
9202enum Foo {
9203    Bar,
9204    Baz
9205}
9206
9207fn get_foo() -> Foo {
9208    Foo::Bar
9209}
9210
9211get_foo().match {
9212    Foo::Bar => {},
9213    Foo::Baz => panic!(),
9214}
9215```
9216"##,
9217        default_severity: Severity::Allow,
9218        warn_since: None,
9219        deny_since: None,
9220    },
9221    Lint {
9222        label: "powerpc_target_feature",
9223        description: r##"# `powerpc_target_feature`
9224
9225The tracking issue for this feature is: [#44839]
9226
9227[#44839]: https://github.com/rust-lang/rust/issues/44839
9228
9229------------------------
9230"##,
9231        default_severity: Severity::Allow,
9232        warn_since: None,
9233        deny_since: None,
9234    },
9235    Lint {
9236        label: "precise_capturing_in_traits",
9237        description: r##"# `precise_capturing_in_traits`
9238
9239The tracking issue for this feature is: [#130044]
9240
9241[#130044]: https://github.com/rust-lang/rust/issues/130044
9242
9243------------------------
9244"##,
9245        default_severity: Severity::Allow,
9246        warn_since: None,
9247        deny_since: None,
9248    },
9249    Lint {
9250        label: "prelude_2024",
9251        description: r##"# `prelude_2024`
9252
9253The tracking issue for this feature is: [#121042]
9254
9255[#121042]: https://github.com/rust-lang/rust/issues/121042
9256
9257------------------------
9258"##,
9259        default_severity: Severity::Allow,
9260        warn_since: None,
9261        deny_since: None,
9262    },
9263    Lint {
9264        label: "prelude_import",
9265        description: r##"# `prelude_import`
9266
9267This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
9268
9269------------------------
9270"##,
9271        default_severity: Severity::Allow,
9272        warn_since: None,
9273        deny_since: None,
9274    },
9275    Lint {
9276        label: "prfchw_target_feature",
9277        description: r##"# `prfchw_target_feature`
9278
9279The tracking issue for this feature is: [#44839]
9280
9281[#44839]: https://github.com/rust-lang/rust/issues/44839
9282
9283------------------------
9284"##,
9285        default_severity: Severity::Allow,
9286        warn_since: None,
9287        deny_since: None,
9288    },
9289    Lint {
9290        label: "print_internals",
9291        description: r##"# `print_internals`
9292
9293This feature is internal to the Rust compiler and is not intended for general use.
9294
9295------------------------
9296"##,
9297        default_severity: Severity::Allow,
9298        warn_since: None,
9299        deny_since: None,
9300    },
9301    Lint {
9302        label: "proc_macro_def_site",
9303        description: r##"# `proc_macro_def_site`
9304
9305The tracking issue for this feature is: [#54724]
9306
9307[#54724]: https://github.com/rust-lang/rust/issues/54724
9308
9309------------------------
9310"##,
9311        default_severity: Severity::Allow,
9312        warn_since: None,
9313        deny_since: None,
9314    },
9315    Lint {
9316        label: "proc_macro_diagnostic",
9317        description: r##"# `proc_macro_diagnostic`
9318
9319The tracking issue for this feature is: [#54140]
9320
9321[#54140]: https://github.com/rust-lang/rust/issues/54140
9322
9323------------------------
9324"##,
9325        default_severity: Severity::Allow,
9326        warn_since: None,
9327        deny_since: None,
9328    },
9329    Lint {
9330        label: "proc_macro_expand",
9331        description: r##"# `proc_macro_expand`
9332
9333The tracking issue for this feature is: [#90765]
9334
9335[#90765]: https://github.com/rust-lang/rust/issues/90765
9336
9337------------------------
9338"##,
9339        default_severity: Severity::Allow,
9340        warn_since: None,
9341        deny_since: None,
9342    },
9343    Lint {
9344        label: "proc_macro_hygiene",
9345        description: r##"# `proc_macro_hygiene`
9346
9347The tracking issue for this feature is: [#54727]
9348
9349[#54727]: https://github.com/rust-lang/rust/issues/54727
9350
9351------------------------
9352"##,
9353        default_severity: Severity::Allow,
9354        warn_since: None,
9355        deny_since: None,
9356    },
9357    Lint {
9358        label: "proc_macro_internals",
9359        description: r##"# `proc_macro_internals`
9360
9361The tracking issue for this feature is: [#27812]
9362
9363[#27812]: https://github.com/rust-lang/rust/issues/27812
9364
9365------------------------
9366"##,
9367        default_severity: Severity::Allow,
9368        warn_since: None,
9369        deny_since: None,
9370    },
9371    Lint {
9372        label: "proc_macro_quote",
9373        description: r##"# `proc_macro_quote`
9374
9375The tracking issue for this feature is: [#54722]
9376
9377[#54722]: https://github.com/rust-lang/rust/issues/54722
9378
9379------------------------
9380"##,
9381        default_severity: Severity::Allow,
9382        warn_since: None,
9383        deny_since: None,
9384    },
9385    Lint {
9386        label: "proc_macro_span",
9387        description: r##"# `proc_macro_span`
9388
9389The tracking issue for this feature is: [#54725]
9390
9391[#54725]: https://github.com/rust-lang/rust/issues/54725
9392
9393------------------------
9394"##,
9395        default_severity: Severity::Allow,
9396        warn_since: None,
9397        deny_since: None,
9398    },
9399    Lint {
9400        label: "proc_macro_totokens",
9401        description: r##"# `proc_macro_totokens`
9402
9403The tracking issue for this feature is: [#130977]
9404
9405[#130977]: https://github.com/rust-lang/rust/issues/130977
9406
9407------------------------
9408"##,
9409        default_severity: Severity::Allow,
9410        warn_since: None,
9411        deny_since: None,
9412    },
9413    Lint {
9414        label: "proc_macro_tracked_env",
9415        description: r##"# `proc_macro_tracked_env`
9416
9417The tracking issue for this feature is: [#99515]
9418
9419[#99515]: https://github.com/rust-lang/rust/issues/99515
9420
9421------------------------
9422"##,
9423        default_severity: Severity::Allow,
9424        warn_since: None,
9425        deny_since: None,
9426    },
9427    Lint {
9428        label: "process_exitcode_internals",
9429        description: r##"# `process_exitcode_internals`
9430
9431This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
9432
9433------------------------
9434"##,
9435        default_severity: Severity::Allow,
9436        warn_since: None,
9437        deny_since: None,
9438    },
9439    Lint {
9440        label: "process_internals",
9441        description: r##"# `process_internals`
9442
9443This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
9444
9445------------------------
9446"##,
9447        default_severity: Severity::Allow,
9448        warn_since: None,
9449        deny_since: None,
9450    },
9451    Lint {
9452        label: "profiler_runtime",
9453        description: r##"# `profiler_runtime`
9454
9455The tracking issue for this feature is: [#42524](https://github.com/rust-lang/rust/issues/42524).
9456
9457------------------------
9458"##,
9459        default_severity: Severity::Allow,
9460        warn_since: None,
9461        deny_since: None,
9462    },
9463    Lint {
9464        label: "profiler_runtime_lib",
9465        description: r##"# `profiler_runtime_lib`
9466
9467This feature is internal to the Rust compiler and is not intended for general use.
9468
9469------------------------
9470"##,
9471        default_severity: Severity::Allow,
9472        warn_since: None,
9473        deny_since: None,
9474    },
9475    Lint {
9476        label: "ptr_alignment_type",
9477        description: r##"# `ptr_alignment_type`
9478
9479The tracking issue for this feature is: [#102070]
9480
9481[#102070]: https://github.com/rust-lang/rust/issues/102070
9482
9483------------------------
9484"##,
9485        default_severity: Severity::Allow,
9486        warn_since: None,
9487        deny_since: None,
9488    },
9489    Lint {
9490        label: "ptr_as_ref_unchecked",
9491        description: r##"# `ptr_as_ref_unchecked`
9492
9493The tracking issue for this feature is: [#122034]
9494
9495[#122034]: https://github.com/rust-lang/rust/issues/122034
9496
9497------------------------
9498"##,
9499        default_severity: Severity::Allow,
9500        warn_since: None,
9501        deny_since: None,
9502    },
9503    Lint {
9504        label: "ptr_as_uninit",
9505        description: r##"# `ptr_as_uninit`
9506
9507The tracking issue for this feature is: [#75402]
9508
9509[#75402]: https://github.com/rust-lang/rust/issues/75402
9510
9511------------------------
9512"##,
9513        default_severity: Severity::Allow,
9514        warn_since: None,
9515        deny_since: None,
9516    },
9517    Lint {
9518        label: "ptr_internals",
9519        description: r##"# `ptr_internals`
9520
9521This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
9522
9523------------------------
9524"##,
9525        default_severity: Severity::Allow,
9526        warn_since: None,
9527        deny_since: None,
9528    },
9529    Lint {
9530        label: "ptr_mask",
9531        description: r##"# `ptr_mask`
9532
9533The tracking issue for this feature is: [#98290]
9534
9535[#98290]: https://github.com/rust-lang/rust/issues/98290
9536
9537------------------------
9538"##,
9539        default_severity: Severity::Allow,
9540        warn_since: None,
9541        deny_since: None,
9542    },
9543    Lint {
9544        label: "ptr_metadata",
9545        description: r##"# `ptr_metadata`
9546
9547The tracking issue for this feature is: [#81513]
9548
9549[#81513]: https://github.com/rust-lang/rust/issues/81513
9550
9551------------------------
9552"##,
9553        default_severity: Severity::Allow,
9554        warn_since: None,
9555        deny_since: None,
9556    },
9557    Lint {
9558        label: "ptr_sub_ptr",
9559        description: r##"# `ptr_sub_ptr`
9560
9561The tracking issue for this feature is: [#95892]
9562
9563[#95892]: https://github.com/rust-lang/rust/issues/95892
9564
9565------------------------
9566"##,
9567        default_severity: Severity::Allow,
9568        warn_since: None,
9569        deny_since: None,
9570    },
9571    Lint {
9572        label: "pub_crate_should_not_need_unstable_attr",
9573        description: r##"# `pub_crate_should_not_need_unstable_attr`
9574
9575This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
9576
9577------------------------
9578"##,
9579        default_severity: Severity::Allow,
9580        warn_since: None,
9581        deny_since: None,
9582    },
9583    Lint {
9584        label: "random",
9585        description: r##"# `random`
9586
9587The tracking issue for this feature is: [#130703]
9588
9589[#130703]: https://github.com/rust-lang/rust/issues/130703
9590
9591------------------------
9592"##,
9593        default_severity: Severity::Allow,
9594        warn_since: None,
9595        deny_since: None,
9596    },
9597    Lint {
9598        label: "raw_os_error_ty",
9599        description: r##"# `raw_os_error_ty`
9600
9601The tracking issue for this feature is: [#107792]
9602
9603[#107792]: https://github.com/rust-lang/rust/issues/107792
9604
9605------------------------
9606"##,
9607        default_severity: Severity::Allow,
9608        warn_since: None,
9609        deny_since: None,
9610    },
9611    Lint {
9612        label: "raw_slice_split",
9613        description: r##"# `raw_slice_split`
9614
9615The tracking issue for this feature is: [#95595]
9616
9617[#95595]: https://github.com/rust-lang/rust/issues/95595
9618
9619------------------------
9620"##,
9621        default_severity: Severity::Allow,
9622        warn_since: None,
9623        deny_since: None,
9624    },
9625    Lint {
9626        label: "raw_vec_internals",
9627        description: r##"# `raw_vec_internals`
9628
9629This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
9630
9631------------------------
9632"##,
9633        default_severity: Severity::Allow,
9634        warn_since: None,
9635        deny_since: None,
9636    },
9637    Lint {
9638        label: "read_buf",
9639        description: r##"# `read_buf`
9640
9641The tracking issue for this feature is: [#78485]
9642
9643[#78485]: https://github.com/rust-lang/rust/issues/78485
9644
9645------------------------
9646"##,
9647        default_severity: Severity::Allow,
9648        warn_since: None,
9649        deny_since: None,
9650    },
9651    Lint {
9652        label: "reentrant_lock",
9653        description: r##"# `reentrant_lock`
9654
9655The tracking issue for this feature is: [#121440]
9656
9657[#121440]: https://github.com/rust-lang/rust/issues/121440
9658
9659------------------------
9660"##,
9661        default_severity: Severity::Allow,
9662        warn_since: None,
9663        deny_since: None,
9664    },
9665    Lint {
9666        label: "ref_pat_eat_one_layer_2024",
9667        description: r##"# `ref_pat_eat_one_layer_2024`
9668
9669The tracking issue for this feature is: [#123076]
9670
9671[#123076]: https://github.com/rust-lang/rust/issues/123076
9672
9673------------------------
9674"##,
9675        default_severity: Severity::Allow,
9676        warn_since: None,
9677        deny_since: None,
9678    },
9679    Lint {
9680        label: "ref_pat_eat_one_layer_2024_structural",
9681        description: r##"# `ref_pat_eat_one_layer_2024_structural`
9682
9683The tracking issue for this feature is: [#123076]
9684
9685[#123076]: https://github.com/rust-lang/rust/issues/123076
9686
9687------------------------
9688"##,
9689        default_severity: Severity::Allow,
9690        warn_since: None,
9691        deny_since: None,
9692    },
9693    Lint {
9694        label: "register_tool",
9695        description: r##"# `register_tool`
9696
9697The tracking issue for this feature is: [#66079]
9698
9699[#66079]: https://github.com/rust-lang/rust/issues/66079
9700
9701------------------------
9702"##,
9703        default_severity: Severity::Allow,
9704        warn_since: None,
9705        deny_since: None,
9706    },
9707    Lint {
9708        label: "repr128",
9709        description: r##"# `repr128`
9710
9711The tracking issue for this feature is: [#56071]
9712
9713[#56071]: https://github.com/rust-lang/rust/issues/56071
9714
9715------------------------
9716
9717The `repr128` feature adds support for `#[repr(u128)]` on `enum`s.
9718
9719```rust
9720#![feature(repr128)]
9721
9722#[repr(u128)]
9723enum Foo {
9724    Bar(u64),
9725}
9726```
9727"##,
9728        default_severity: Severity::Allow,
9729        warn_since: None,
9730        deny_since: None,
9731    },
9732    Lint {
9733        label: "repr_simd",
9734        description: r##"# `repr_simd`
9735
9736The tracking issue for this feature is: [#27731]
9737
9738[#27731]: https://github.com/rust-lang/rust/issues/27731
9739
9740------------------------
9741"##,
9742        default_severity: Severity::Allow,
9743        warn_since: None,
9744        deny_since: None,
9745    },
9746    Lint {
9747        label: "restricted_std",
9748        description: r##"# `restricted_std`
9749
9750This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
9751
9752------------------------
9753"##,
9754        default_severity: Severity::Allow,
9755        warn_since: None,
9756        deny_since: None,
9757    },
9758    Lint {
9759        label: "result_flattening",
9760        description: r##"# `result_flattening`
9761
9762The tracking issue for this feature is: [#70142]
9763
9764[#70142]: https://github.com/rust-lang/rust/issues/70142
9765
9766------------------------
9767"##,
9768        default_severity: Severity::Allow,
9769        warn_since: None,
9770        deny_since: None,
9771    },
9772    Lint {
9773        label: "return_type_notation",
9774        description: r##"# `return_type_notation`
9775
9776The tracking issue for this feature is: [#109417]
9777
9778[#109417]: https://github.com/rust-lang/rust/issues/109417
9779
9780------------------------
9781"##,
9782        default_severity: Severity::Allow,
9783        warn_since: None,
9784        deny_since: None,
9785    },
9786    Lint {
9787        label: "riscv_target_feature",
9788        description: r##"# `riscv_target_feature`
9789
9790The tracking issue for this feature is: [#44839]
9791
9792[#44839]: https://github.com/rust-lang/rust/issues/44839
9793
9794------------------------
9795"##,
9796        default_severity: Severity::Allow,
9797        warn_since: None,
9798        deny_since: None,
9799    },
9800    Lint {
9801        label: "round_char_boundary",
9802        description: r##"# `round_char_boundary`
9803
9804The tracking issue for this feature is: [#93743]
9805
9806[#93743]: https://github.com/rust-lang/rust/issues/93743
9807
9808------------------------
9809"##,
9810        default_severity: Severity::Allow,
9811        warn_since: None,
9812        deny_since: None,
9813    },
9814    Lint {
9815        label: "rt",
9816        description: r##"# `rt`
9817
9818This feature is internal to the Rust compiler and is not intended for general use.
9819
9820------------------------
9821"##,
9822        default_severity: Severity::Allow,
9823        warn_since: None,
9824        deny_since: None,
9825    },
9826    Lint {
9827        label: "rtm_target_feature",
9828        description: r##"# `rtm_target_feature`
9829
9830The tracking issue for this feature is: [#44839]
9831
9832[#44839]: https://github.com/rust-lang/rust/issues/44839
9833
9834------------------------
9835"##,
9836        default_severity: Severity::Allow,
9837        warn_since: None,
9838        deny_since: None,
9839    },
9840    Lint {
9841        label: "rust_cold_cc",
9842        description: r##"# `rust_cold_cc`
9843
9844The tracking issue for this feature is: [#97544]
9845
9846[#97544]: https://github.com/rust-lang/rust/issues/97544
9847
9848------------------------
9849"##,
9850        default_severity: Severity::Allow,
9851        warn_since: None,
9852        deny_since: None,
9853    },
9854    Lint {
9855        label: "rustc_allow_const_fn_unstable",
9856        description: r##"# `rustc_allow_const_fn_unstable`
9857
9858The tracking issue for this feature is: [#69399]
9859
9860[#69399]: https://github.com/rust-lang/rust/issues/69399
9861
9862------------------------
9863"##,
9864        default_severity: Severity::Allow,
9865        warn_since: None,
9866        deny_since: None,
9867    },
9868    Lint {
9869        label: "rustc_attrs",
9870        description: r##"# `rustc_attrs`
9871
9872This feature has no tracking issue, and is therefore internal to
9873the compiler, not being intended for general use.
9874
9875Note: `rustc_attrs` enables many rustc-internal attributes and this page
9876only discuss a few of them.
9877
9878------------------------
9879
9880The `rustc_attrs` feature allows debugging rustc type layouts by using
9881`#[rustc_layout(...)]` to debug layout at compile time (it even works
9882with `cargo check`) as an alternative to `rustc -Z print-type-sizes`
9883that is way more verbose.
9884
9885Options provided by `#[rustc_layout(...)]` are `debug`, `size`, `align`,
9886`abi`. Note that it only works on sized types without generics.
9887
9888## Examples
9889
9890```rust,compile_fail
9891#![feature(rustc_attrs)]
9892
9893#[rustc_layout(abi, size)]
9894pub enum X {
9895    Y(u8, u8, u8),
9896    Z(isize),
9897}
9898```
9899
9900When that is compiled, the compiler will error with something like
9901
9902```text
9903error: abi: Aggregate { sized: true }
9904 --> src/lib.rs:4:1
9905  |
99064 | / pub enum T {
99075 | |     Y(u8, u8, u8),
99086 | |     Z(isize),
99097 | | }
9910  | |_^
9911
9912error: size: Size { raw: 16 }
9913 --> src/lib.rs:4:1
9914  |
99154 | / pub enum T {
99165 | |     Y(u8, u8, u8),
99176 | |     Z(isize),
99187 | | }
9919  | |_^
9920
9921error: aborting due to 2 previous errors
9922```
9923"##,
9924        default_severity: Severity::Allow,
9925        warn_since: None,
9926        deny_since: None,
9927    },
9928    Lint {
9929        label: "rustc_encodable_decodable",
9930        description: r##"# `rustc_encodable_decodable`
9931
9932This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
9933
9934------------------------
9935"##,
9936        default_severity: Severity::Allow,
9937        warn_since: None,
9938        deny_since: None,
9939    },
9940    Lint {
9941        label: "rustc_private",
9942        description: r##"# `rustc_private`
9943
9944The tracking issue for this feature is: [#27812]
9945
9946[#27812]: https://github.com/rust-lang/rust/issues/27812
9947
9948------------------------
9949
9950This feature allows access to unstable internal compiler crates.
9951
9952Additionally it changes the linking behavior of crates which have this feature enabled. It will prevent linking to a dylib if there's a static variant of it already statically linked into another dylib dependency. This is required to successfully link to `rustc_driver`.
9953"##,
9954        default_severity: Severity::Allow,
9955        warn_since: None,
9956        deny_since: None,
9957    },
9958    Lint {
9959        label: "rustdoc_internals",
9960        description: r##"# `rustdoc_internals`
9961
9962The tracking issue for this feature is: [#90418]
9963
9964[#90418]: https://github.com/rust-lang/rust/issues/90418
9965
9966------------------------
9967"##,
9968        default_severity: Severity::Allow,
9969        warn_since: None,
9970        deny_since: None,
9971    },
9972    Lint {
9973        label: "rustdoc_missing_doc_code_examples",
9974        description: r##"# `rustdoc_missing_doc_code_examples`
9975
9976The tracking issue for this feature is: [#101730]
9977
9978[#101730]: https://github.com/rust-lang/rust/issues/101730
9979
9980------------------------
9981"##,
9982        default_severity: Severity::Allow,
9983        warn_since: None,
9984        deny_since: None,
9985    },
9986    Lint {
9987        label: "rwlock_downgrade",
9988        description: r##"# `rwlock_downgrade`
9989
9990The tracking issue for this feature is: [#128203]
9991
9992[#128203]: https://github.com/rust-lang/rust/issues/128203
9993
9994------------------------
9995"##,
9996        default_severity: Severity::Allow,
9997        warn_since: None,
9998        deny_since: None,
9999    },
10000    Lint {
10001        label: "s390x_target_feature",
10002        description: r##"# `s390x_target_feature`
10003
10004The tracking issue for this feature is: [#44839]
10005
10006[#44839]: https://github.com/rust-lang/rust/issues/44839
10007
10008------------------------
10009"##,
10010        default_severity: Severity::Allow,
10011        warn_since: None,
10012        deny_since: None,
10013    },
10014    Lint {
10015        label: "sealed",
10016        description: r##"# `sealed`
10017
10018This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
10019
10020------------------------
10021"##,
10022        default_severity: Severity::Allow,
10023        warn_since: None,
10024        deny_since: None,
10025    },
10026    Lint {
10027        label: "seek_stream_len",
10028        description: r##"# `seek_stream_len`
10029
10030The tracking issue for this feature is: [#59359]
10031
10032[#59359]: https://github.com/rust-lang/rust/issues/59359
10033
10034------------------------
10035"##,
10036        default_severity: Severity::Allow,
10037        warn_since: None,
10038        deny_since: None,
10039    },
10040    Lint {
10041        label: "set_ptr_value",
10042        description: r##"# `set_ptr_value`
10043
10044The tracking issue for this feature is: [#75091]
10045
10046[#75091]: https://github.com/rust-lang/rust/issues/75091
10047
10048------------------------
10049"##,
10050        default_severity: Severity::Allow,
10051        warn_since: None,
10052        deny_since: None,
10053    },
10054    Lint {
10055        label: "setgroups",
10056        description: r##"# `setgroups`
10057
10058The tracking issue for this feature is: [#90747]
10059
10060[#90747]: https://github.com/rust-lang/rust/issues/90747
10061
10062------------------------
10063"##,
10064        default_severity: Severity::Allow,
10065        warn_since: None,
10066        deny_since: None,
10067    },
10068    Lint {
10069        label: "sgx_platform",
10070        description: r##"# `sgx_platform`
10071
10072The tracking issue for this feature is: [#56975]
10073
10074[#56975]: https://github.com/rust-lang/rust/issues/56975
10075
10076------------------------
10077"##,
10078        default_severity: Severity::Allow,
10079        warn_since: None,
10080        deny_since: None,
10081    },
10082    Lint {
10083        label: "sha512_sm_x86",
10084        description: r##"# `sha512_sm_x86`
10085
10086The tracking issue for this feature is: [#126624]
10087
10088[#126624]: https://github.com/rust-lang/rust/issues/126624
10089
10090------------------------
10091"##,
10092        default_severity: Severity::Allow,
10093        warn_since: None,
10094        deny_since: None,
10095    },
10096    Lint {
10097        label: "simd_ffi",
10098        description: r##"# `simd_ffi`
10099
10100The tracking issue for this feature is: [#27731]
10101
10102[#27731]: https://github.com/rust-lang/rust/issues/27731
10103
10104------------------------
10105"##,
10106        default_severity: Severity::Allow,
10107        warn_since: None,
10108        deny_since: None,
10109    },
10110    Lint {
10111        label: "sized_type_properties",
10112        description: r##"# `sized_type_properties`
10113
10114This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
10115
10116------------------------
10117"##,
10118        default_severity: Severity::Allow,
10119        warn_since: None,
10120        deny_since: None,
10121    },
10122    Lint {
10123        label: "slice_as_array",
10124        description: r##"# `slice_as_array`
10125
10126The tracking issue for this feature is: [#133508]
10127
10128[#133508]: https://github.com/rust-lang/rust/issues/133508
10129
10130------------------------
10131"##,
10132        default_severity: Severity::Allow,
10133        warn_since: None,
10134        deny_since: None,
10135    },
10136    Lint {
10137        label: "slice_as_chunks",
10138        description: r##"# `slice_as_chunks`
10139
10140The tracking issue for this feature is: [#74985]
10141
10142[#74985]: https://github.com/rust-lang/rust/issues/74985
10143
10144------------------------
10145"##,
10146        default_severity: Severity::Allow,
10147        warn_since: None,
10148        deny_since: None,
10149    },
10150    Lint {
10151        label: "slice_concat_ext",
10152        description: r##"# `slice_concat_ext`
10153
10154The tracking issue for this feature is: [#27747]
10155
10156[#27747]: https://github.com/rust-lang/rust/issues/27747
10157
10158------------------------
10159"##,
10160        default_severity: Severity::Allow,
10161        warn_since: None,
10162        deny_since: None,
10163    },
10164    Lint {
10165        label: "slice_concat_trait",
10166        description: r##"# `slice_concat_trait`
10167
10168The tracking issue for this feature is: [#27747]
10169
10170[#27747]: https://github.com/rust-lang/rust/issues/27747
10171
10172------------------------
10173"##,
10174        default_severity: Severity::Allow,
10175        warn_since: None,
10176        deny_since: None,
10177    },
10178    Lint {
10179        label: "slice_from_ptr_range",
10180        description: r##"# `slice_from_ptr_range`
10181
10182The tracking issue for this feature is: [#89792]
10183
10184[#89792]: https://github.com/rust-lang/rust/issues/89792
10185
10186------------------------
10187"##,
10188        default_severity: Severity::Allow,
10189        warn_since: None,
10190        deny_since: None,
10191    },
10192    Lint {
10193        label: "slice_index_methods",
10194        description: r##"# `slice_index_methods`
10195
10196This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
10197
10198------------------------
10199"##,
10200        default_severity: Severity::Allow,
10201        warn_since: None,
10202        deny_since: None,
10203    },
10204    Lint {
10205        label: "slice_internals",
10206        description: r##"# `slice_internals`
10207
10208This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
10209
10210------------------------
10211"##,
10212        default_severity: Severity::Allow,
10213        warn_since: None,
10214        deny_since: None,
10215    },
10216    Lint {
10217        label: "slice_iter_mut_as_mut_slice",
10218        description: r##"# `slice_iter_mut_as_mut_slice`
10219
10220The tracking issue for this feature is: [#93079]
10221
10222[#93079]: https://github.com/rust-lang/rust/issues/93079
10223
10224------------------------
10225"##,
10226        default_severity: Severity::Allow,
10227        warn_since: None,
10228        deny_since: None,
10229    },
10230    Lint {
10231        label: "slice_partition_dedup",
10232        description: r##"# `slice_partition_dedup`
10233
10234The tracking issue for this feature is: [#54279]
10235
10236[#54279]: https://github.com/rust-lang/rust/issues/54279
10237
10238------------------------
10239"##,
10240        default_severity: Severity::Allow,
10241        warn_since: None,
10242        deny_since: None,
10243    },
10244    Lint {
10245        label: "slice_pattern",
10246        description: r##"# `slice_pattern`
10247
10248The tracking issue for this feature is: [#56345]
10249
10250[#56345]: https://github.com/rust-lang/rust/issues/56345
10251
10252------------------------
10253"##,
10254        default_severity: Severity::Allow,
10255        warn_since: None,
10256        deny_since: None,
10257    },
10258    Lint {
10259        label: "slice_ptr_get",
10260        description: r##"# `slice_ptr_get`
10261
10262The tracking issue for this feature is: [#74265]
10263
10264[#74265]: https://github.com/rust-lang/rust/issues/74265
10265
10266------------------------
10267"##,
10268        default_severity: Severity::Allow,
10269        warn_since: None,
10270        deny_since: None,
10271    },
10272    Lint {
10273        label: "slice_range",
10274        description: r##"# `slice_range`
10275
10276The tracking issue for this feature is: [#76393]
10277
10278[#76393]: https://github.com/rust-lang/rust/issues/76393
10279
10280------------------------
10281"##,
10282        default_severity: Severity::Allow,
10283        warn_since: None,
10284        deny_since: None,
10285    },
10286    Lint {
10287        label: "slice_split_once",
10288        description: r##"# `slice_split_once`
10289
10290The tracking issue for this feature is: [#112811]
10291
10292[#112811]: https://github.com/rust-lang/rust/issues/112811
10293
10294------------------------
10295"##,
10296        default_severity: Severity::Allow,
10297        warn_since: None,
10298        deny_since: None,
10299    },
10300    Lint {
10301        label: "slice_swap_unchecked",
10302        description: r##"# `slice_swap_unchecked`
10303
10304The tracking issue for this feature is: [#88539]
10305
10306[#88539]: https://github.com/rust-lang/rust/issues/88539
10307
10308------------------------
10309"##,
10310        default_severity: Severity::Allow,
10311        warn_since: None,
10312        deny_since: None,
10313    },
10314    Lint {
10315        label: "slice_take",
10316        description: r##"# `slice_take`
10317
10318The tracking issue for this feature is: [#62280]
10319
10320[#62280]: https://github.com/rust-lang/rust/issues/62280
10321
10322------------------------
10323"##,
10324        default_severity: Severity::Allow,
10325        warn_since: None,
10326        deny_since: None,
10327    },
10328    Lint {
10329        label: "solid_ext",
10330        description: r##"# `solid_ext`
10331
10332This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
10333
10334------------------------
10335"##,
10336        default_severity: Severity::Allow,
10337        warn_since: None,
10338        deny_since: None,
10339    },
10340    Lint {
10341        label: "sort_floats",
10342        description: r##"# `sort_floats`
10343
10344The tracking issue for this feature is: [#93396]
10345
10346[#93396]: https://github.com/rust-lang/rust/issues/93396
10347
10348------------------------
10349"##,
10350        default_severity: Severity::Allow,
10351        warn_since: None,
10352        deny_since: None,
10353    },
10354    Lint {
10355        label: "sparc_target_feature",
10356        description: r##"# `sparc_target_feature`
10357
10358The tracking issue for this feature is: [#132783]
10359
10360[#132783]: https://github.com/rust-lang/rust/issues/132783
10361
10362------------------------
10363"##,
10364        default_severity: Severity::Allow,
10365        warn_since: None,
10366        deny_since: None,
10367    },
10368    Lint {
10369        label: "specialization",
10370        description: r##"# `specialization`
10371
10372The tracking issue for this feature is: [#31844]
10373
10374[#31844]: https://github.com/rust-lang/rust/issues/31844
10375
10376------------------------
10377"##,
10378        default_severity: Severity::Allow,
10379        warn_since: None,
10380        deny_since: None,
10381    },
10382    Lint {
10383        label: "split_array",
10384        description: r##"# `split_array`
10385
10386The tracking issue for this feature is: [#90091]
10387
10388[#90091]: https://github.com/rust-lang/rust/issues/90091
10389
10390------------------------
10391"##,
10392        default_severity: Severity::Allow,
10393        warn_since: None,
10394        deny_since: None,
10395    },
10396    Lint {
10397        label: "split_as_slice",
10398        description: r##"# `split_as_slice`
10399
10400The tracking issue for this feature is: [#96137]
10401
10402[#96137]: https://github.com/rust-lang/rust/issues/96137
10403
10404------------------------
10405"##,
10406        default_severity: Severity::Allow,
10407        warn_since: None,
10408        deny_since: None,
10409    },
10410    Lint {
10411        label: "sse4a_target_feature",
10412        description: r##"# `sse4a_target_feature`
10413
10414The tracking issue for this feature is: [#44839]
10415
10416[#44839]: https://github.com/rust-lang/rust/issues/44839
10417
10418------------------------
10419"##,
10420        default_severity: Severity::Allow,
10421        warn_since: None,
10422        deny_since: None,
10423    },
10424    Lint {
10425        label: "staged_api",
10426        description: r##"# `staged_api`
10427
10428This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
10429
10430------------------------
10431"##,
10432        default_severity: Severity::Allow,
10433        warn_since: None,
10434        deny_since: None,
10435    },
10436    Lint {
10437        label: "start",
10438        description: r##"# `start`
10439
10440The tracking issue for this feature is: [#29633]
10441
10442[#29633]: https://github.com/rust-lang/rust/issues/29633
10443
10444------------------------
10445
10446Allows you to mark a function as the entry point of the executable, which is
10447necessary in `#![no_std]` environments.
10448
10449The function marked `#[start]` is passed the command line parameters in the same
10450format as the C main function (aside from the integer types being used).
10451It has to be non-generic and have the following signature:
10452
10453```rust,ignore (only-for-syntax-highlight)
10454# let _:
10455fn(isize, *const *const u8) -> isize
10456# ;
10457```
10458
10459This feature should not be confused with the `start` *lang item* which is
10460defined by the `std` crate and is written `#[lang = "start"]`.
10461
10462## Usage together with the `std` crate
10463
10464`#[start]` can be used in combination with the `std` crate, in which case the
10465normal `main` function (which would get called from the `std` crate) won't be
10466used as an entry point.
10467The initialization code in `std` will be skipped this way.
10468
10469Example:
10470
10471```rust
10472#![feature(start)]
10473
10474#[start]
10475fn start(_argc: isize, _argv: *const *const u8) -> isize {
10476    0
10477}
10478```
10479
10480Unwinding the stack past the `#[start]` function is currently considered
10481Undefined Behavior (for any unwinding implementation):
10482
10483```rust,ignore (UB)
10484#![feature(start)]
10485
10486#[start]
10487fn start(_argc: isize, _argv: *const *const u8) -> isize {
10488    std::panic::catch_unwind(|| {
10489        panic!(); // panic safely gets caught or safely aborts execution
10490    });
10491
10492    panic!(); // UB!
10493
10494    0
10495}
10496```
10497"##,
10498        default_severity: Severity::Allow,
10499        warn_since: None,
10500        deny_since: None,
10501    },
10502    Lint {
10503        label: "std_internals",
10504        description: r##"# `std_internals`
10505
10506This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
10507
10508------------------------
10509"##,
10510        default_severity: Severity::Allow,
10511        warn_since: None,
10512        deny_since: None,
10513    },
10514    Lint {
10515        label: "stdarch_arm_feature_detection",
10516        description: r##"# `stdarch_arm_feature_detection`
10517
10518The tracking issue for this feature is: [#111190]
10519
10520[#111190]: https://github.com/rust-lang/rust/issues/111190
10521
10522------------------------
10523"##,
10524        default_severity: Severity::Allow,
10525        warn_since: None,
10526        deny_since: None,
10527    },
10528    Lint {
10529        label: "stdarch_mips_feature_detection",
10530        description: r##"# `stdarch_mips_feature_detection`
10531
10532The tracking issue for this feature is: [#111188]
10533
10534[#111188]: https://github.com/rust-lang/rust/issues/111188
10535
10536------------------------
10537"##,
10538        default_severity: Severity::Allow,
10539        warn_since: None,
10540        deny_since: None,
10541    },
10542    Lint {
10543        label: "stdarch_powerpc_feature_detection",
10544        description: r##"# `stdarch_powerpc_feature_detection`
10545
10546The tracking issue for this feature is: [#111191]
10547
10548[#111191]: https://github.com/rust-lang/rust/issues/111191
10549
10550------------------------
10551"##,
10552        default_severity: Severity::Allow,
10553        warn_since: None,
10554        deny_since: None,
10555    },
10556    Lint {
10557        label: "stdio_makes_pipe",
10558        description: r##"# `stdio_makes_pipe`
10559
10560The tracking issue for this feature is: [#98288]
10561
10562[#98288]: https://github.com/rust-lang/rust/issues/98288
10563
10564------------------------
10565"##,
10566        default_severity: Severity::Allow,
10567        warn_since: None,
10568        deny_since: None,
10569    },
10570    Lint {
10571        label: "step_trait",
10572        description: r##"# `step_trait`
10573
10574The tracking issue for this feature is: [#42168]
10575
10576[#42168]: https://github.com/rust-lang/rust/issues/42168
10577
10578------------------------
10579"##,
10580        default_severity: Severity::Allow,
10581        warn_since: None,
10582        deny_since: None,
10583    },
10584    Lint {
10585        label: "stmt_expr_attributes",
10586        description: r##"# `stmt_expr_attributes`
10587
10588The tracking issue for this feature is: [#15701]
10589
10590[#15701]: https://github.com/rust-lang/rust/issues/15701
10591
10592------------------------
10593"##,
10594        default_severity: Severity::Allow,
10595        warn_since: None,
10596        deny_since: None,
10597    },
10598    Lint {
10599        label: "str_as_str",
10600        description: r##"# `str_as_str`
10601
10602The tracking issue for this feature is: [#130366]
10603
10604[#130366]: https://github.com/rust-lang/rust/issues/130366
10605
10606------------------------
10607"##,
10608        default_severity: Severity::Allow,
10609        warn_since: None,
10610        deny_since: None,
10611    },
10612    Lint {
10613        label: "str_from_raw_parts",
10614        description: r##"# `str_from_raw_parts`
10615
10616The tracking issue for this feature is: [#119206]
10617
10618[#119206]: https://github.com/rust-lang/rust/issues/119206
10619
10620------------------------
10621"##,
10622        default_severity: Severity::Allow,
10623        warn_since: None,
10624        deny_since: None,
10625    },
10626    Lint {
10627        label: "str_from_utf16_endian",
10628        description: r##"# `str_from_utf16_endian`
10629
10630The tracking issue for this feature is: [#116258]
10631
10632[#116258]: https://github.com/rust-lang/rust/issues/116258
10633
10634------------------------
10635"##,
10636        default_severity: Severity::Allow,
10637        warn_since: None,
10638        deny_since: None,
10639    },
10640    Lint {
10641        label: "str_internals",
10642        description: r##"# `str_internals`
10643
10644This feature is internal to the Rust compiler and is not intended for general use.
10645
10646------------------------
10647"##,
10648        default_severity: Severity::Allow,
10649        warn_since: None,
10650        deny_since: None,
10651    },
10652    Lint {
10653        label: "str_lines_remainder",
10654        description: r##"# `str_lines_remainder`
10655
10656The tracking issue for this feature is: [#77998]
10657
10658[#77998]: https://github.com/rust-lang/rust/issues/77998
10659
10660------------------------
10661"##,
10662        default_severity: Severity::Allow,
10663        warn_since: None,
10664        deny_since: None,
10665    },
10666    Lint {
10667        label: "str_split_inclusive_remainder",
10668        description: r##"# `str_split_inclusive_remainder`
10669
10670The tracking issue for this feature is: [#77998]
10671
10672[#77998]: https://github.com/rust-lang/rust/issues/77998
10673
10674------------------------
10675"##,
10676        default_severity: Severity::Allow,
10677        warn_since: None,
10678        deny_since: None,
10679    },
10680    Lint {
10681        label: "str_split_remainder",
10682        description: r##"# `str_split_remainder`
10683
10684The tracking issue for this feature is: [#77998]
10685
10686[#77998]: https://github.com/rust-lang/rust/issues/77998
10687
10688------------------------
10689"##,
10690        default_severity: Severity::Allow,
10691        warn_since: None,
10692        deny_since: None,
10693    },
10694    Lint {
10695        label: "str_split_whitespace_remainder",
10696        description: r##"# `str_split_whitespace_remainder`
10697
10698The tracking issue for this feature is: [#77998]
10699
10700[#77998]: https://github.com/rust-lang/rust/issues/77998
10701
10702------------------------
10703"##,
10704        default_severity: Severity::Allow,
10705        warn_since: None,
10706        deny_since: None,
10707    },
10708    Lint {
10709        label: "strict_provenance_atomic_ptr",
10710        description: r##"# `strict_provenance_atomic_ptr`
10711
10712The tracking issue for this feature is: [#99108]
10713
10714[#99108]: https://github.com/rust-lang/rust/issues/99108
10715
10716------------------------
10717"##,
10718        default_severity: Severity::Allow,
10719        warn_since: None,
10720        deny_since: None,
10721    },
10722    Lint {
10723        label: "strict_provenance_lints",
10724        description: r##"# `strict_provenance_lints`
10725
10726The tracking issue for this feature is: [#95228]
10727
10728[#95228]: https://github.com/rust-lang/rust/issues/95228
10729-----
10730
10731The `strict_provenance_lints` feature allows to enable the `fuzzy_provenance_casts` and `lossy_provenance_casts` lints.
10732These lint on casts between integers and pointers, that are recommended against or invalid in the strict provenance model.
10733
10734## Example
10735
10736```rust
10737#![feature(strict_provenance_lints)]
10738#![warn(fuzzy_provenance_casts)]
10739
10740fn main() {
10741    let _dangling = 16_usize as *const u8;
10742    //~^ WARNING: strict provenance disallows casting integer `usize` to pointer `*const u8`
10743}
10744```
10745"##,
10746        default_severity: Severity::Allow,
10747        warn_since: None,
10748        deny_since: None,
10749    },
10750    Lint {
10751        label: "string_deref_patterns",
10752        description: r##"# `string_deref_patterns`
10753
10754The tracking issue for this feature is: [#87121]
10755
10756[#87121]: https://github.com/rust-lang/rust/issues/87121
10757
10758------------------------
10759
10760This feature permits pattern matching `String` to `&str` through [its `Deref` implementation].
10761
10762```rust
10763#![feature(string_deref_patterns)]
10764
10765pub enum Value {
10766    String(String),
10767    Number(u32),
10768}
10769
10770pub fn is_it_the_answer(value: Value) -> bool {
10771    match value {
10772        Value::String("42") => true,
10773        Value::Number(42) => true,
10774        _ => false,
10775    }
10776}
10777```
10778
10779Without this feature other constructs such as match guards have to be used.
10780
10781```rust
10782# pub enum Value {
10783#    String(String),
10784#    Number(u32),
10785# }
10786#
10787pub fn is_it_the_answer(value: Value) -> bool {
10788    match value {
10789        Value::String(s) if s == "42" => true,
10790        Value::Number(42) => true,
10791        _ => false,
10792    }
10793}
10794```
10795
10796[its `Deref` implementation]: https://doc.rust-lang.org/std/string/struct.String.html#impl-Deref-for-String
10797"##,
10798        default_severity: Severity::Allow,
10799        warn_since: None,
10800        deny_since: None,
10801    },
10802    Lint {
10803        label: "string_extend_from_within",
10804        description: r##"# `string_extend_from_within`
10805
10806The tracking issue for this feature is: [#103806]
10807
10808[#103806]: https://github.com/rust-lang/rust/issues/103806
10809
10810------------------------
10811"##,
10812        default_severity: Severity::Allow,
10813        warn_since: None,
10814        deny_since: None,
10815    },
10816    Lint {
10817        label: "string_from_utf8_lossy_owned",
10818        description: r##"# `string_from_utf8_lossy_owned`
10819
10820The tracking issue for this feature is: [#129436]
10821
10822[#129436]: https://github.com/rust-lang/rust/issues/129436
10823
10824------------------------
10825"##,
10826        default_severity: Severity::Allow,
10827        warn_since: None,
10828        deny_since: None,
10829    },
10830    Lint {
10831        label: "string_remove_matches",
10832        description: r##"# `string_remove_matches`
10833
10834The tracking issue for this feature is: [#72826]
10835
10836[#72826]: https://github.com/rust-lang/rust/issues/72826
10837
10838------------------------
10839"##,
10840        default_severity: Severity::Allow,
10841        warn_since: None,
10842        deny_since: None,
10843    },
10844    Lint {
10845        label: "structural_match",
10846        description: r##"# `structural_match`
10847
10848The tracking issue for this feature is: [#31434]
10849
10850[#31434]: https://github.com/rust-lang/rust/issues/31434
10851
10852------------------------
10853"##,
10854        default_severity: Severity::Allow,
10855        warn_since: None,
10856        deny_since: None,
10857    },
10858    Lint {
10859        label: "substr_range",
10860        description: r##"# `substr_range`
10861
10862The tracking issue for this feature is: [#126769]
10863
10864[#126769]: https://github.com/rust-lang/rust/issues/126769
10865
10866------------------------
10867"##,
10868        default_severity: Severity::Allow,
10869        warn_since: None,
10870        deny_since: None,
10871    },
10872    Lint {
10873        label: "sync_unsafe_cell",
10874        description: r##"# `sync_unsafe_cell`
10875
10876The tracking issue for this feature is: [#95439]
10877
10878[#95439]: https://github.com/rust-lang/rust/issues/95439
10879
10880------------------------
10881"##,
10882        default_severity: Severity::Allow,
10883        warn_since: None,
10884        deny_since: None,
10885    },
10886    Lint {
10887        label: "target_feature_11",
10888        description: r##"# `target_feature_11`
10889
10890The tracking issue for this feature is: [#69098]
10891
10892[#69098]: https://github.com/rust-lang/rust/issues/69098
10893
10894------------------------
10895"##,
10896        default_severity: Severity::Allow,
10897        warn_since: None,
10898        deny_since: None,
10899    },
10900    Lint {
10901        label: "tbm_target_feature",
10902        description: r##"# `tbm_target_feature`
10903
10904The tracking issue for this feature is: [#44839]
10905
10906[#44839]: https://github.com/rust-lang/rust/issues/44839
10907
10908------------------------
10909"##,
10910        default_severity: Severity::Allow,
10911        warn_since: None,
10912        deny_since: None,
10913    },
10914    Lint {
10915        label: "tcp_deferaccept",
10916        description: r##"# `tcp_deferaccept`
10917
10918The tracking issue for this feature is: [#119639]
10919
10920[#119639]: https://github.com/rust-lang/rust/issues/119639
10921
10922------------------------
10923"##,
10924        default_severity: Severity::Allow,
10925        warn_since: None,
10926        deny_since: None,
10927    },
10928    Lint {
10929        label: "tcp_linger",
10930        description: r##"# `tcp_linger`
10931
10932The tracking issue for this feature is: [#88494]
10933
10934[#88494]: https://github.com/rust-lang/rust/issues/88494
10935
10936------------------------
10937"##,
10938        default_severity: Severity::Allow,
10939        warn_since: None,
10940        deny_since: None,
10941    },
10942    Lint {
10943        label: "tcp_quickack",
10944        description: r##"# `tcp_quickack`
10945
10946The tracking issue for this feature is: [#96256]
10947
10948[#96256]: https://github.com/rust-lang/rust/issues/96256
10949
10950------------------------
10951"##,
10952        default_severity: Severity::Allow,
10953        warn_since: None,
10954        deny_since: None,
10955    },
10956    Lint {
10957        label: "tcplistener_into_incoming",
10958        description: r##"# `tcplistener_into_incoming`
10959
10960The tracking issue for this feature is: [#88373]
10961
10962[#88373]: https://github.com/rust-lang/rust/issues/88373
10963
10964------------------------
10965"##,
10966        default_severity: Severity::Allow,
10967        warn_since: None,
10968        deny_since: None,
10969    },
10970    Lint {
10971        label: "test",
10972        description: r##"# `test`
10973
10974The tracking issue for this feature is: None.
10975
10976------------------------
10977
10978The internals of the `test` crate are unstable, behind the `test` flag.  The
10979most widely used part of the `test` crate are benchmark tests, which can test
10980the performance of your code.  Let's make our `src/lib.rs` look like this
10981(comments elided):
10982
10983```rust,no_run
10984#![feature(test)]
10985
10986extern crate test;
10987
10988pub fn add_two(a: i32) -> i32 {
10989    a + 2
10990}
10991
10992#[cfg(test)]
10993mod tests {
10994    use super::*;
10995    use test::Bencher;
10996
10997    #[test]
10998    fn it_works() {
10999        assert_eq!(4, add_two(2));
11000    }
11001
11002    #[bench]
11003    fn bench_add_two(b: &mut Bencher) {
11004        b.iter(|| add_two(2));
11005    }
11006}
11007```
11008
11009Note the `test` feature gate, which enables this unstable feature.
11010
11011We've imported the `test` crate, which contains our benchmarking support.
11012We have a new function as well, with the `bench` attribute. Unlike regular
11013tests, which take no arguments, benchmark tests take a `&mut Bencher`. This
11014`Bencher` provides an `iter` method, which takes a closure. This closure
11015contains the code we'd like to benchmark.
11016
11017We can run benchmark tests with `cargo bench`:
11018
11019```bash
11020$ cargo bench
11021   Compiling adder v0.0.1 (file:///home/steve/tmp/adder)
11022     Running target/release/adder-91b3e234d4ed382a
11023
11024running 2 tests
11025test tests::it_works ... ignored
11026test tests::bench_add_two ... bench:         1 ns/iter (+/- 0)
11027
11028test result: ok. 0 passed; 0 failed; 1 ignored; 1 measured
11029```
11030
11031Our non-benchmark test was ignored. You may have noticed that `cargo bench`
11032takes a bit longer than `cargo test`. This is because Rust runs our benchmark
11033a number of times, and then takes the average. Because we're doing so little
11034work in this example, we have a `1 ns/iter (+/- 0)`, but this would show
11035the variance if there was one.
11036
11037Advice on writing benchmarks:
11038
11039
11040* Move setup code outside the `iter` loop; only put the part you want to measure inside
11041* Make the code do "the same thing" on each iteration; do not accumulate or change state
11042* Make the outer function idempotent too; the benchmark runner is likely to run
11043  it many times
11044*  Make the inner `iter` loop short and fast so benchmark runs are fast and the
11045   calibrator can adjust the run-length at fine resolution
11046* Make the code in the `iter` loop do something simple, to assist in pinpointing
11047  performance improvements (or regressions)
11048
11049## Gotcha: optimizations
11050
11051There's another tricky part to writing benchmarks: benchmarks compiled with
11052optimizations activated can be dramatically changed by the optimizer so that
11053the benchmark is no longer benchmarking what one expects. For example, the
11054compiler might recognize that some calculation has no external effects and
11055remove it entirely.
11056
11057```rust,no_run
11058#![feature(test)]
11059
11060extern crate test;
11061use test::Bencher;
11062
11063#[bench]
11064fn bench_xor_1000_ints(b: &mut Bencher) {
11065    b.iter(|| {
11066        (0..1000).fold(0, |old, new| old ^ new);
11067    });
11068}
11069```
11070
11071gives the following results
11072
11073```text
11074running 1 test
11075test bench_xor_1000_ints ... bench:         0 ns/iter (+/- 0)
11076
11077test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
11078```
11079
11080The benchmarking runner offers two ways to avoid this. Either, the closure that
11081the `iter` method receives can return an arbitrary value which forces the
11082optimizer to consider the result used and ensures it cannot remove the
11083computation entirely. This could be done for the example above by adjusting the
11084`b.iter` call to
11085
11086```rust
11087# struct X;
11088# impl X { fn iter<T, F>(&self, _: F) where F: FnMut() -> T {} } let b = X;
11089b.iter(|| {
11090    // Note lack of `;` (could also use an explicit `return`).
11091    (0..1000).fold(0, |old, new| old ^ new)
11092});
11093```
11094
11095Or, the other option is to call the generic `test::black_box` function, which
11096is an opaque "black box" to the optimizer and so forces it to consider any
11097argument as used.
11098
11099```rust
11100#![feature(test)]
11101
11102extern crate test;
11103
11104# fn main() {
11105# struct X;
11106# impl X { fn iter<T, F>(&self, _: F) where F: FnMut() -> T {} } let b = X;
11107b.iter(|| {
11108    let n = test::black_box(1000);
11109
11110    (0..n).fold(0, |a, b| a ^ b)
11111})
11112# }
11113```
11114
11115Neither of these read or modify the value, and are very cheap for small values.
11116Larger values can be passed indirectly to reduce overhead (e.g.
11117`black_box(&huge_struct)`).
11118
11119Performing either of the above changes gives the following benchmarking results
11120
11121```text
11122running 1 test
11123test bench_xor_1000_ints ... bench:       131 ns/iter (+/- 3)
11124
11125test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
11126```
11127
11128However, the optimizer can still modify a testcase in an undesirable manner
11129even when using either of the above.
11130"##,
11131        default_severity: Severity::Allow,
11132        warn_since: None,
11133        deny_since: None,
11134    },
11135    Lint {
11136        label: "test_unstable_lint",
11137        description: r##"# `test_unstable_lint`
11138
11139This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
11140
11141------------------------
11142"##,
11143        default_severity: Severity::Allow,
11144        warn_since: None,
11145        deny_since: None,
11146    },
11147    Lint {
11148        label: "thin_box",
11149        description: r##"# `thin_box`
11150
11151The tracking issue for this feature is: [#92791]
11152
11153[#92791]: https://github.com/rust-lang/rust/issues/92791
11154
11155------------------------
11156"##,
11157        default_severity: Severity::Allow,
11158        warn_since: None,
11159        deny_since: None,
11160    },
11161    Lint {
11162        label: "thread_id_value",
11163        description: r##"# `thread_id_value`
11164
11165The tracking issue for this feature is: [#67939]
11166
11167[#67939]: https://github.com/rust-lang/rust/issues/67939
11168
11169------------------------
11170"##,
11171        default_severity: Severity::Allow,
11172        warn_since: None,
11173        deny_since: None,
11174    },
11175    Lint {
11176        label: "thread_local",
11177        description: r##"# `thread_local`
11178
11179The tracking issue for this feature is: [#29594]
11180
11181[#29594]: https://github.com/rust-lang/rust/issues/29594
11182
11183------------------------
11184"##,
11185        default_severity: Severity::Allow,
11186        warn_since: None,
11187        deny_since: None,
11188    },
11189    Lint {
11190        label: "thread_local_internals",
11191        description: r##"# `thread_local_internals`
11192
11193This feature is internal to the Rust compiler and is not intended for general use.
11194
11195------------------------
11196"##,
11197        default_severity: Severity::Allow,
11198        warn_since: None,
11199        deny_since: None,
11200    },
11201    Lint {
11202        label: "thread_raw",
11203        description: r##"# `thread_raw`
11204
11205The tracking issue for this feature is: [#97523]
11206
11207[#97523]: https://github.com/rust-lang/rust/issues/97523
11208
11209------------------------
11210"##,
11211        default_severity: Severity::Allow,
11212        warn_since: None,
11213        deny_since: None,
11214    },
11215    Lint {
11216        label: "thread_sleep_until",
11217        description: r##"# `thread_sleep_until`
11218
11219The tracking issue for this feature is: [#113752]
11220
11221[#113752]: https://github.com/rust-lang/rust/issues/113752
11222
11223------------------------
11224"##,
11225        default_severity: Severity::Allow,
11226        warn_since: None,
11227        deny_since: None,
11228    },
11229    Lint {
11230        label: "thread_spawn_hook",
11231        description: r##"# `thread_spawn_hook`
11232
11233The tracking issue for this feature is: [#132951]
11234
11235[#132951]: https://github.com/rust-lang/rust/issues/132951
11236
11237------------------------
11238"##,
11239        default_severity: Severity::Allow,
11240        warn_since: None,
11241        deny_since: None,
11242    },
11243    Lint {
11244        label: "trace_macros",
11245        description: r##"# `trace_macros`
11246
11247The tracking issue for this feature is [#29598].
11248
11249[#29598]: https://github.com/rust-lang/rust/issues/29598
11250
11251------------------------
11252
11253With `trace_macros` you can trace the expansion of macros in your code.
11254
11255## Examples
11256
11257```rust
11258#![feature(trace_macros)]
11259
11260fn main() {
11261    trace_macros!(true);
11262    println!("Hello, Rust!");
11263    trace_macros!(false);
11264}
11265```
11266
11267The `cargo build` output:
11268
11269```txt
11270note: trace_macro
11271 --> src/main.rs:5:5
11272  |
112735 |     println!("Hello, Rust!");
11274  |     ^^^^^^^^^^^^^^^^^^^^^^^^^
11275  |
11276  = note: expanding `println! { "Hello, Rust!" }`
11277  = note: to `print ! ( concat ! ( "Hello, Rust!" , "\n" ) )`
11278  = note: expanding `print! { concat ! ( "Hello, Rust!" , "\n" ) }`
11279  = note: to `$crate :: io :: _print ( format_args ! ( concat ! ( "Hello, Rust!" , "\n" ) )
11280          )`
11281
11282    Finished dev [unoptimized + debuginfo] target(s) in 0.60 secs
11283```
11284"##,
11285        default_severity: Severity::Allow,
11286        warn_since: None,
11287        deny_since: None,
11288    },
11289    Lint {
11290        label: "track_path",
11291        description: r##"# `track_path`
11292
11293The tracking issue for this feature is: [#99515]
11294
11295[#99515]: https://github.com/rust-lang/rust/issues/99515
11296
11297------------------------
11298"##,
11299        default_severity: Severity::Allow,
11300        warn_since: None,
11301        deny_since: None,
11302    },
11303    Lint {
11304        label: "trait_alias",
11305        description: r##"# `trait_alias`
11306
11307The tracking issue for this feature is: [#41517]
11308
11309[#41517]: https://github.com/rust-lang/rust/issues/41517
11310
11311------------------------
11312
11313The `trait_alias` feature adds support for trait aliases. These allow aliases
11314to be created for one or more traits (currently just a single regular trait plus
11315any number of auto-traits), and used wherever traits would normally be used as
11316either bounds or trait objects.
11317
11318```rust
11319#![feature(trait_alias)]
11320
11321trait Foo = std::fmt::Debug + Send;
11322trait Bar = Foo + Sync;
11323
11324// Use trait alias as bound on type parameter.
11325fn foo<T: Foo>(v: &T) {
11326    println!("{:?}", v);
11327}
11328
11329pub fn main() {
11330    foo(&1);
11331
11332    // Use trait alias for trait objects.
11333    let a: &Bar = &123;
11334    println!("{:?}", a);
11335    let b = Box::new(456) as Box<dyn Foo>;
11336    println!("{:?}", b);
11337}
11338```
11339"##,
11340        default_severity: Severity::Allow,
11341        warn_since: None,
11342        deny_since: None,
11343    },
11344    Lint {
11345        label: "trait_upcasting",
11346        description: r##"# `trait_upcasting`
11347
11348The tracking issue for this feature is: [#65991]
11349
11350[#65991]: https://github.com/rust-lang/rust/issues/65991
11351
11352------------------------
11353
11354The `trait_upcasting` feature adds support for trait upcasting coercion. This allows a
11355trait object of type `dyn Bar` to be cast to a trait object of type `dyn Foo`
11356so long as `Bar: Foo`.
11357
11358```rust,edition2018
11359#![feature(trait_upcasting)]
11360
11361trait Foo {}
11362
11363trait Bar: Foo {}
11364
11365impl Foo for i32 {}
11366
11367impl<T: Foo + ?Sized> Bar for T {}
11368
11369let bar: &dyn Bar = &123;
11370let foo: &dyn Foo = bar;
11371```
11372"##,
11373        default_severity: Severity::Allow,
11374        warn_since: None,
11375        deny_since: None,
11376    },
11377    Lint {
11378        label: "transmutability",
11379        description: r##"# `transmutability`
11380
11381The tracking issue for this feature is: [#99571]
11382
11383[#99571]: https://github.com/rust-lang/rust/issues/99571
11384
11385------------------------
11386"##,
11387        default_severity: Severity::Allow,
11388        warn_since: None,
11389        deny_since: None,
11390    },
11391    Lint {
11392        label: "transmute_generic_consts",
11393        description: r##"# `transmute_generic_consts`
11394
11395The tracking issue for this feature is: [#109929]
11396
11397[#109929]: https://github.com/rust-lang/rust/issues/109929
11398
11399------------------------
11400"##,
11401        default_severity: Severity::Allow,
11402        warn_since: None,
11403        deny_since: None,
11404    },
11405    Lint {
11406        label: "transparent_unions",
11407        description: r##"# `transparent_unions`
11408
11409The tracking issue for this feature is [#60405]
11410
11411[#60405]: https://github.com/rust-lang/rust/issues/60405
11412
11413----
11414
11415The `transparent_unions` feature allows you mark `union`s as
11416`#[repr(transparent)]`. A `union` may be `#[repr(transparent)]` in exactly the
11417same conditions in which a `struct` may be `#[repr(transparent)]` (generally,
11418this means the `union` must have exactly one non-zero-sized field). Some
11419concrete illustrations follow.
11420
11421```rust
11422#![feature(transparent_unions)]
11423
11424// This union has the same representation as `f32`.
11425#[repr(transparent)]
11426union SingleFieldUnion {
11427    field: f32,
11428}
11429
11430// This union has the same representation as `usize`.
11431#[repr(transparent)]
11432union MultiFieldUnion {
11433    field: usize,
11434    nothing: (),
11435}
11436```
11437
11438For consistency with transparent `struct`s, `union`s must have exactly one
11439non-zero-sized field. If all fields are zero-sized, the `union` must not be
11440`#[repr(transparent)]`:
11441
11442```rust
11443#![feature(transparent_unions)]
11444
11445// This (non-transparent) union is already valid in stable Rust:
11446pub union GoodUnion {
11447    pub nothing: (),
11448}
11449
11450// Error: transparent union needs exactly one non-zero-sized field, but has 0
11451// #[repr(transparent)]
11452// pub union BadUnion {
11453//     pub nothing: (),
11454// }
11455```
11456
11457The one exception is if the `union` is generic over `T` and has a field of type
11458`T`, it may be `#[repr(transparent)]` even if `T` is a zero-sized type:
11459
11460```rust
11461#![feature(transparent_unions)]
11462
11463// This union has the same representation as `T`.
11464#[repr(transparent)]
11465pub union GenericUnion<T: Copy> { // Unions with non-`Copy` fields are unstable.
11466    pub field: T,
11467    pub nothing: (),
11468}
11469
11470// This is okay even though `()` is a zero-sized type.
11471pub const THIS_IS_OKAY: GenericUnion<()> = GenericUnion { field: () };
11472```
11473
11474Like transparent `struct`s, a transparent `union` of type `U` has the same
11475layout, size, and ABI as its single non-ZST field. If it is generic over a type
11476`T`, and all its fields are ZSTs except for exactly one field of type `T`, then
11477it has the same layout and ABI as `T` (even if `T` is a ZST when monomorphized).
11478
11479Like transparent `struct`s, transparent `union`s are FFI-safe if and only if
11480their underlying representation type is also FFI-safe.
11481
11482A `union` may not be eligible for the same nonnull-style optimizations that a
11483`struct` or `enum` (with the same fields) are eligible for. Adding
11484`#[repr(transparent)]` to  `union` does not change this. To give a more concrete
11485example, it is unspecified whether `size_of::<T>()` is equal to
11486`size_of::<Option<T>>()`, where `T` is a `union` (regardless of whether or not
11487it is transparent). The Rust compiler is free to perform this optimization if
11488possible, but is not required to, and different compiler versions may differ in
11489their application of these optimizations.
11490"##,
11491        default_severity: Severity::Allow,
11492        warn_since: None,
11493        deny_since: None,
11494    },
11495    Lint {
11496        label: "trivial_bounds",
11497        description: r##"# `trivial_bounds`
11498
11499The tracking issue for this feature is: [#48214]
11500
11501[#48214]: https://github.com/rust-lang/rust/issues/48214
11502
11503------------------------
11504"##,
11505        default_severity: Severity::Allow,
11506        warn_since: None,
11507        deny_since: None,
11508    },
11509    Lint {
11510        label: "trusted_fused",
11511        description: r##"# `trusted_fused`
11512
11513This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
11514
11515------------------------
11516"##,
11517        default_severity: Severity::Allow,
11518        warn_since: None,
11519        deny_since: None,
11520    },
11521    Lint {
11522        label: "trusted_len",
11523        description: r##"# `trusted_len`
11524
11525The tracking issue for this feature is: [#37572]
11526
11527[#37572]: https://github.com/rust-lang/rust/issues/37572
11528
11529------------------------
11530"##,
11531        default_severity: Severity::Allow,
11532        warn_since: None,
11533        deny_since: None,
11534    },
11535    Lint {
11536        label: "trusted_len_next_unchecked",
11537        description: r##"# `trusted_len_next_unchecked`
11538
11539The tracking issue for this feature is: [#37572]
11540
11541[#37572]: https://github.com/rust-lang/rust/issues/37572
11542
11543------------------------
11544"##,
11545        default_severity: Severity::Allow,
11546        warn_since: None,
11547        deny_since: None,
11548    },
11549    Lint {
11550        label: "trusted_random_access",
11551        description: r##"# `trusted_random_access`
11552
11553This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
11554
11555------------------------
11556"##,
11557        default_severity: Severity::Allow,
11558        warn_since: None,
11559        deny_since: None,
11560    },
11561    Lint {
11562        label: "trusted_step",
11563        description: r##"# `trusted_step`
11564
11565The tracking issue for this feature is: [#85731]
11566
11567[#85731]: https://github.com/rust-lang/rust/issues/85731
11568
11569------------------------
11570"##,
11571        default_severity: Severity::Allow,
11572        warn_since: None,
11573        deny_since: None,
11574    },
11575    Lint {
11576        label: "try_blocks",
11577        description: r##"# `try_blocks`
11578
11579The tracking issue for this feature is: [#31436]
11580
11581[#31436]: https://github.com/rust-lang/rust/issues/31436
11582
11583------------------------
11584
11585The `try_blocks` feature adds support for `try` blocks. A `try`
11586block creates a new scope one can use the `?` operator in.
11587
11588```rust,edition2018
11589#![feature(try_blocks)]
11590
11591use std::num::ParseIntError;
11592
11593let result: Result<i32, ParseIntError> = try {
11594    "1".parse::<i32>()?
11595        + "2".parse::<i32>()?
11596        + "3".parse::<i32>()?
11597};
11598assert_eq!(result, Ok(6));
11599
11600let result: Result<i32, ParseIntError> = try {
11601    "1".parse::<i32>()?
11602        + "foo".parse::<i32>()?
11603        + "3".parse::<i32>()?
11604};
11605assert!(result.is_err());
11606```
11607"##,
11608        default_severity: Severity::Allow,
11609        warn_since: None,
11610        deny_since: None,
11611    },
11612    Lint {
11613        label: "try_find",
11614        description: r##"# `try_find`
11615
11616The tracking issue for this feature is: [#63178]
11617
11618[#63178]: https://github.com/rust-lang/rust/issues/63178
11619
11620------------------------
11621"##,
11622        default_severity: Severity::Allow,
11623        warn_since: None,
11624        deny_since: None,
11625    },
11626    Lint {
11627        label: "try_reserve_kind",
11628        description: r##"# `try_reserve_kind`
11629
11630The tracking issue for this feature is: [#48043]
11631
11632[#48043]: https://github.com/rust-lang/rust/issues/48043
11633
11634------------------------
11635"##,
11636        default_severity: Severity::Allow,
11637        warn_since: None,
11638        deny_since: None,
11639    },
11640    Lint {
11641        label: "try_trait_v2",
11642        description: r##"# `try_trait_v2`
11643
11644The tracking issue for this feature is: [#84277]
11645
11646[#84277]: https://github.com/rust-lang/rust/issues/84277
11647
11648------------------------
11649"##,
11650        default_severity: Severity::Allow,
11651        warn_since: None,
11652        deny_since: None,
11653    },
11654    Lint {
11655        label: "try_trait_v2_residual",
11656        description: r##"# `try_trait_v2_residual`
11657
11658The tracking issue for this feature is: [#91285]
11659
11660[#91285]: https://github.com/rust-lang/rust/issues/91285
11661
11662------------------------
11663"##,
11664        default_severity: Severity::Allow,
11665        warn_since: None,
11666        deny_since: None,
11667    },
11668    Lint {
11669        label: "try_trait_v2_yeet",
11670        description: r##"# `try_trait_v2_yeet`
11671
11672The tracking issue for this feature is: [#96374]
11673
11674[#96374]: https://github.com/rust-lang/rust/issues/96374
11675
11676------------------------
11677"##,
11678        default_severity: Severity::Allow,
11679        warn_since: None,
11680        deny_since: None,
11681    },
11682    Lint {
11683        label: "try_with_capacity",
11684        description: r##"# `try_with_capacity`
11685
11686The tracking issue for this feature is: [#91913]
11687
11688[#91913]: https://github.com/rust-lang/rust/issues/91913
11689
11690------------------------
11691"##,
11692        default_severity: Severity::Allow,
11693        warn_since: None,
11694        deny_since: None,
11695    },
11696    Lint {
11697        label: "tuple_trait",
11698        description: r##"# `tuple_trait`
11699
11700This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
11701
11702------------------------
11703"##,
11704        default_severity: Severity::Allow,
11705        warn_since: None,
11706        deny_since: None,
11707    },
11708    Lint {
11709        label: "type_alias_impl_trait",
11710        description: r##"# `type_alias_impl_trait`
11711
11712The tracking issue for this feature is: [#63063]
11713
11714[#63063]: https://github.com/rust-lang/rust/issues/63063
11715
11716------------------------
11717"##,
11718        default_severity: Severity::Allow,
11719        warn_since: None,
11720        deny_since: None,
11721    },
11722    Lint {
11723        label: "type_ascription",
11724        description: r##"# `type_ascription`
11725
11726The tracking issue for this feature is: [#23416]
11727
11728[#23416]: https://github.com/rust-lang/rust/issues/23416
11729
11730------------------------
11731"##,
11732        default_severity: Severity::Allow,
11733        warn_since: None,
11734        deny_since: None,
11735    },
11736    Lint {
11737        label: "type_changing_struct_update",
11738        description: r##"# `type_changing_struct_update`
11739
11740The tracking issue for this feature is: [#86555]
11741
11742[#86555]: https://github.com/rust-lang/rust/issues/86555
11743
11744------------------------
11745
11746This implements [RFC2528]. When turned on, you can create instances of the same struct
11747that have different generic type or lifetime parameters.
11748
11749[RFC2528]: https://github.com/rust-lang/rfcs/blob/master/text/2528-type-changing-struct-update-syntax.md
11750
11751```rust
11752#![allow(unused_variables, dead_code)]
11753#![feature(type_changing_struct_update)]
11754
11755fn main () {
11756    struct Foo<T, U> {
11757        field1: T,
11758        field2: U,
11759    }
11760
11761    let base: Foo<String, i32> = Foo {
11762        field1: String::from("hello"),
11763        field2: 1234,
11764    };
11765    let updated: Foo<f64, i32> = Foo {
11766        field1: 3.14,
11767        ..base
11768    };
11769}
11770```
11771"##,
11772        default_severity: Severity::Allow,
11773        warn_since: None,
11774        deny_since: None,
11775    },
11776    Lint {
11777        label: "ub_checks",
11778        description: r##"# `ub_checks`
11779
11780This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
11781
11782------------------------
11783"##,
11784        default_severity: Severity::Allow,
11785        warn_since: None,
11786        deny_since: None,
11787    },
11788    Lint {
11789        label: "uefi_std",
11790        description: r##"# `uefi_std`
11791
11792The tracking issue for this feature is: [#100499]
11793
11794[#100499]: https://github.com/rust-lang/rust/issues/100499
11795
11796------------------------
11797"##,
11798        default_severity: Severity::Allow,
11799        warn_since: None,
11800        deny_since: None,
11801    },
11802    Lint {
11803        label: "unbounded_shifts",
11804        description: r##"# `unbounded_shifts`
11805
11806The tracking issue for this feature is: [#129375]
11807
11808[#129375]: https://github.com/rust-lang/rust/issues/129375
11809
11810------------------------
11811"##,
11812        default_severity: Severity::Allow,
11813        warn_since: None,
11814        deny_since: None,
11815    },
11816    Lint {
11817        label: "unboxed_closures",
11818        description: r##"# `unboxed_closures`
11819
11820The tracking issue for this feature is [#29625]
11821
11822See Also: [`fn_traits`](../library-features/fn-traits.md)
11823
11824[#29625]: https://github.com/rust-lang/rust/issues/29625
11825
11826----
11827
11828The `unboxed_closures` feature allows you to write functions using the `"rust-call"` ABI,
11829required for implementing the [`Fn*`] family of traits. `"rust-call"` functions must have
11830exactly one (non self) argument, a tuple representing the argument list.
11831
11832[`Fn*`]: ../../std/ops/trait.Fn.html
11833
11834```rust
11835#![feature(unboxed_closures)]
11836
11837extern "rust-call" fn add_args(args: (u32, u32)) -> u32 {
11838    args.0 + args.1
11839}
11840
11841fn main() {}
11842```
11843"##,
11844        default_severity: Severity::Allow,
11845        warn_since: None,
11846        deny_since: None,
11847    },
11848    Lint {
11849        label: "unchecked_neg",
11850        description: r##"# `unchecked_neg`
11851
11852The tracking issue for this feature is: [#85122]
11853
11854[#85122]: https://github.com/rust-lang/rust/issues/85122
11855
11856------------------------
11857"##,
11858        default_severity: Severity::Allow,
11859        warn_since: None,
11860        deny_since: None,
11861    },
11862    Lint {
11863        label: "unchecked_shifts",
11864        description: r##"# `unchecked_shifts`
11865
11866The tracking issue for this feature is: [#85122]
11867
11868[#85122]: https://github.com/rust-lang/rust/issues/85122
11869
11870------------------------
11871"##,
11872        default_severity: Severity::Allow,
11873        warn_since: None,
11874        deny_since: None,
11875    },
11876    Lint {
11877        label: "unicode_internals",
11878        description: r##"# `unicode_internals`
11879
11880This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
11881
11882------------------------
11883"##,
11884        default_severity: Severity::Allow,
11885        warn_since: None,
11886        deny_since: None,
11887    },
11888    Lint {
11889        label: "unique_rc_arc",
11890        description: r##"# `unique_rc_arc`
11891
11892The tracking issue for this feature is: [#112566]
11893
11894[#112566]: https://github.com/rust-lang/rust/issues/112566
11895
11896------------------------
11897"##,
11898        default_severity: Severity::Allow,
11899        warn_since: None,
11900        deny_since: None,
11901    },
11902    Lint {
11903        label: "unix_file_vectored_at",
11904        description: r##"# `unix_file_vectored_at`
11905
11906The tracking issue for this feature is: [#89517]
11907
11908[#89517]: https://github.com/rust-lang/rust/issues/89517
11909
11910------------------------
11911"##,
11912        default_severity: Severity::Allow,
11913        warn_since: None,
11914        deny_since: None,
11915    },
11916    Lint {
11917        label: "unix_set_mark",
11918        description: r##"# `unix_set_mark`
11919
11920The tracking issue for this feature is: [#96467]
11921
11922[#96467]: https://github.com/rust-lang/rust/issues/96467
11923
11924------------------------
11925"##,
11926        default_severity: Severity::Allow,
11927        warn_since: None,
11928        deny_since: None,
11929    },
11930    Lint {
11931        label: "unix_socket_ancillary_data",
11932        description: r##"# `unix_socket_ancillary_data`
11933
11934The tracking issue for this feature is: [#76915]
11935
11936[#76915]: https://github.com/rust-lang/rust/issues/76915
11937
11938------------------------
11939"##,
11940        default_severity: Severity::Allow,
11941        warn_since: None,
11942        deny_since: None,
11943    },
11944    Lint {
11945        label: "unix_socket_peek",
11946        description: r##"# `unix_socket_peek`
11947
11948The tracking issue for this feature is: [#76923]
11949
11950[#76923]: https://github.com/rust-lang/rust/issues/76923
11951
11952------------------------
11953"##,
11954        default_severity: Severity::Allow,
11955        warn_since: None,
11956        deny_since: None,
11957    },
11958    Lint {
11959        label: "unqualified_local_imports",
11960        description: r##"# `unqualified_local_imports`
11961
11962This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
11963
11964------------------------
11965"##,
11966        default_severity: Severity::Allow,
11967        warn_since: None,
11968        deny_since: None,
11969    },
11970    Lint {
11971        label: "unsafe_fields",
11972        description: r##"# `unsafe_fields`
11973
11974The tracking issue for this feature is: [#132922]
11975
11976[#132922]: https://github.com/rust-lang/rust/issues/132922
11977
11978------------------------
11979"##,
11980        default_severity: Severity::Allow,
11981        warn_since: None,
11982        deny_since: None,
11983    },
11984    Lint {
11985        label: "unsafe_pin_internals",
11986        description: r##"# `unsafe_pin_internals`
11987
11988This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
11989
11990------------------------
11991"##,
11992        default_severity: Severity::Allow,
11993        warn_since: None,
11994        deny_since: None,
11995    },
11996    Lint {
11997        label: "unsigned_is_multiple_of",
11998        description: r##"# `unsigned_is_multiple_of`
11999
12000The tracking issue for this feature is: [#128101]
12001
12002[#128101]: https://github.com/rust-lang/rust/issues/128101
12003
12004------------------------
12005"##,
12006        default_severity: Severity::Allow,
12007        warn_since: None,
12008        deny_since: None,
12009    },
12010    Lint {
12011        label: "unsigned_nonzero_div_ceil",
12012        description: r##"# `unsigned_nonzero_div_ceil`
12013
12014The tracking issue for this feature is: [#132968]
12015
12016[#132968]: https://github.com/rust-lang/rust/issues/132968
12017
12018------------------------
12019"##,
12020        default_severity: Severity::Allow,
12021        warn_since: None,
12022        deny_since: None,
12023    },
12024    Lint {
12025        label: "unsigned_signed_diff",
12026        description: r##"# `unsigned_signed_diff`
12027
12028The tracking issue for this feature is: [#126041]
12029
12030[#126041]: https://github.com/rust-lang/rust/issues/126041
12031
12032------------------------
12033"##,
12034        default_severity: Severity::Allow,
12035        warn_since: None,
12036        deny_since: None,
12037    },
12038    Lint {
12039        label: "unsize",
12040        description: r##"# `unsize`
12041
12042The tracking issue for this feature is: [#18598]
12043
12044[#18598]: https://github.com/rust-lang/rust/issues/18598
12045
12046------------------------
12047"##,
12048        default_severity: Severity::Allow,
12049        warn_since: None,
12050        deny_since: None,
12051    },
12052    Lint {
12053        label: "unsized_const_params",
12054        description: r##"# `unsized_const_params`
12055
12056The tracking issue for this feature is: [#95174]
12057
12058[#95174]: https://github.com/rust-lang/rust/issues/95174
12059
12060------------------------
12061"##,
12062        default_severity: Severity::Allow,
12063        warn_since: None,
12064        deny_since: None,
12065    },
12066    Lint {
12067        label: "unsized_fn_params",
12068        description: r##"# `unsized_fn_params`
12069
12070The tracking issue for this feature is: [#48055]
12071
12072[#48055]: https://github.com/rust-lang/rust/issues/48055
12073
12074------------------------
12075"##,
12076        default_severity: Severity::Allow,
12077        warn_since: None,
12078        deny_since: None,
12079    },
12080    Lint {
12081        label: "unsized_locals",
12082        description: r##"# `unsized_locals`
12083
12084The tracking issue for this feature is: [#48055]
12085
12086[#48055]: https://github.com/rust-lang/rust/issues/48055
12087
12088------------------------
12089
12090This implements [RFC1909]. When turned on, you can have unsized arguments and locals:
12091
12092[RFC1909]: https://github.com/rust-lang/rfcs/blob/master/text/1909-unsized-rvalues.md
12093
12094```rust
12095#![allow(incomplete_features)]
12096#![feature(unsized_locals, unsized_fn_params)]
12097
12098use std::any::Any;
12099
12100fn main() {
12101    let x: Box<dyn Any> = Box::new(42);
12102    let x: dyn Any = *x;
12103    //  ^ unsized local variable
12104    //               ^^ unsized temporary
12105    foo(x);
12106}
12107
12108fn foo(_: dyn Any) {}
12109//     ^^^^^^ unsized argument
12110```
12111
12112The RFC still forbids the following unsized expressions:
12113
12114```rust,compile_fail
12115#![feature(unsized_locals)]
12116
12117use std::any::Any;
12118
12119struct MyStruct<T: ?Sized> {
12120    content: T,
12121}
12122
12123struct MyTupleStruct<T: ?Sized>(T);
12124
12125fn answer() -> Box<dyn Any> {
12126    Box::new(42)
12127}
12128
12129fn main() {
12130    // You CANNOT have unsized statics.
12131    static X: dyn Any = *answer();  // ERROR
12132    const Y: dyn Any = *answer();  // ERROR
12133
12134    // You CANNOT have struct initialized unsized.
12135    MyStruct { content: *answer() };  // ERROR
12136    MyTupleStruct(*answer());  // ERROR
12137    (42, *answer());  // ERROR
12138
12139    // You CANNOT have unsized return types.
12140    fn my_function() -> dyn Any { *answer() }  // ERROR
12141
12142    // You CAN have unsized local variables...
12143    let mut x: dyn Any = *answer();  // OK
12144    // ...but you CANNOT reassign to them.
12145    x = *answer();  // ERROR
12146
12147    // You CANNOT even initialize them separately.
12148    let y: dyn Any;  // OK
12149    y = *answer();  // ERROR
12150
12151    // Not mentioned in the RFC, but by-move captured variables are also Sized.
12152    let x: dyn Any = *answer();
12153    (move || {  // ERROR
12154        let y = x;
12155    })();
12156
12157    // You CAN create a closure with unsized arguments,
12158    // but you CANNOT call it.
12159    // This is an implementation detail and may be changed in the future.
12160    let f = |x: dyn Any| {};
12161    f(*answer());  // ERROR
12162}
12163```
12164
12165## By-value trait objects
12166
12167With this feature, you can have by-value `self` arguments without `Self: Sized` bounds.
12168
12169```rust
12170#![feature(unsized_fn_params)]
12171
12172trait Foo {
12173    fn foo(self) {}
12174}
12175
12176impl<T: ?Sized> Foo for T {}
12177
12178fn main() {
12179    let slice: Box<[i32]> = Box::new([1, 2, 3]);
12180    <[i32] as Foo>::foo(*slice);
12181}
12182```
12183
12184And `Foo` will also be object-safe.
12185
12186```rust
12187#![feature(unsized_fn_params)]
12188
12189trait Foo {
12190    fn foo(self) {}
12191}
12192
12193impl<T: ?Sized> Foo for T {}
12194
12195fn main () {
12196    let slice: Box<dyn Foo> = Box::new([1, 2, 3]);
12197    // doesn't compile yet
12198    <dyn Foo as Foo>::foo(*slice);
12199}
12200```
12201
12202One of the objectives of this feature is to allow `Box<dyn FnOnce>`.
12203
12204## Variable length arrays
12205
12206The RFC also describes an extension to the array literal syntax: `[e; dyn n]`. In the syntax, `n` isn't necessarily a constant expression. The array is dynamically allocated on the stack and has the type of `[T]`, instead of `[T; n]`.
12207
12208```rust,ignore (not-yet-implemented)
12209#![feature(unsized_locals)]
12210
12211fn mergesort<T: Ord>(a: &mut [T]) {
12212    let mut tmp = [T; dyn a.len()];
12213    // ...
12214}
12215
12216fn main() {
12217    let mut a = [3, 1, 5, 6];
12218    mergesort(&mut a);
12219    assert_eq!(a, [1, 3, 5, 6]);
12220}
12221```
12222
12223VLAs are not implemented yet. The syntax isn't final, either. We may need an alternative syntax for Rust 2015 because, in Rust 2015, expressions like `[e; dyn(1)]` would be ambiguous. One possible alternative proposed in the RFC is `[e; n]`: if `n` captures one or more local variables, then it is considered as `[e; dyn n]`.
12224
12225## Advisory on stack usage
12226
12227It's advised not to casually use the `#![feature(unsized_locals)]` feature. Typical use-cases are:
12228
12229- When you need a by-value trait objects.
12230- When you really need a fast allocation of small temporary arrays.
12231
12232Another pitfall is repetitive allocation and temporaries. Currently the compiler simply extends the stack frame every time it encounters an unsized assignment. So for example, the code
12233
12234```rust
12235#![feature(unsized_locals)]
12236
12237fn main() {
12238    let x: Box<[i32]> = Box::new([1, 2, 3, 4, 5]);
12239    let _x = {{{{{{{{{{*x}}}}}}}}}};
12240}
12241```
12242
12243and the code
12244
12245```rust
12246#![feature(unsized_locals)]
12247
12248fn main() {
12249    for _ in 0..10 {
12250        let x: Box<[i32]> = Box::new([1, 2, 3, 4, 5]);
12251        let _x = *x;
12252    }
12253}
12254```
12255
12256will unnecessarily extend the stack frame.
12257"##,
12258        default_severity: Severity::Allow,
12259        warn_since: None,
12260        deny_since: None,
12261    },
12262    Lint {
12263        label: "unwrap_infallible",
12264        description: r##"# `unwrap_infallible`
12265
12266The tracking issue for this feature is: [#61695]
12267
12268[#61695]: https://github.com/rust-lang/rust/issues/61695
12269
12270------------------------
12271"##,
12272        default_severity: Severity::Allow,
12273        warn_since: None,
12274        deny_since: None,
12275    },
12276    Lint {
12277        label: "update_panic_count",
12278        description: r##"# `update_panic_count`
12279
12280This feature is internal to the Rust compiler and is not intended for general use.
12281
12282------------------------
12283"##,
12284        default_severity: Severity::Allow,
12285        warn_since: None,
12286        deny_since: None,
12287    },
12288    Lint {
12289        label: "used_with_arg",
12290        description: r##"# `used_with_arg`
12291
12292The tracking issue for this feature is: [#93798]
12293
12294[#93798]: https://github.com/rust-lang/rust/issues/93798
12295
12296------------------------
12297"##,
12298        default_severity: Severity::Allow,
12299        warn_since: None,
12300        deny_since: None,
12301    },
12302    Lint {
12303        label: "utf16_extra",
12304        description: r##"# `utf16_extra`
12305
12306The tracking issue for this feature is: [#94919]
12307
12308[#94919]: https://github.com/rust-lang/rust/issues/94919
12309
12310------------------------
12311"##,
12312        default_severity: Severity::Allow,
12313        warn_since: None,
12314        deny_since: None,
12315    },
12316    Lint {
12317        label: "variant_count",
12318        description: r##"# `variant_count`
12319
12320The tracking issue for this feature is: [#73662]
12321
12322[#73662]: https://github.com/rust-lang/rust/issues/73662
12323
12324------------------------
12325"##,
12326        default_severity: Severity::Allow,
12327        warn_since: None,
12328        deny_since: None,
12329    },
12330    Lint {
12331        label: "vec_deque_iter_as_slices",
12332        description: r##"# `vec_deque_iter_as_slices`
12333
12334The tracking issue for this feature is: [#123947]
12335
12336[#123947]: https://github.com/rust-lang/rust/issues/123947
12337
12338------------------------
12339"##,
12340        default_severity: Severity::Allow,
12341        warn_since: None,
12342        deny_since: None,
12343    },
12344    Lint {
12345        label: "vec_into_raw_parts",
12346        description: r##"# `vec_into_raw_parts`
12347
12348The tracking issue for this feature is: [#65816]
12349
12350[#65816]: https://github.com/rust-lang/rust/issues/65816
12351
12352------------------------
12353"##,
12354        default_severity: Severity::Allow,
12355        warn_since: None,
12356        deny_since: None,
12357    },
12358    Lint {
12359        label: "vec_pop_if",
12360        description: r##"# `vec_pop_if`
12361
12362The tracking issue for this feature is: [#122741]
12363
12364[#122741]: https://github.com/rust-lang/rust/issues/122741
12365
12366------------------------
12367"##,
12368        default_severity: Severity::Allow,
12369        warn_since: None,
12370        deny_since: None,
12371    },
12372    Lint {
12373        label: "vec_push_within_capacity",
12374        description: r##"# `vec_push_within_capacity`
12375
12376The tracking issue for this feature is: [#100486]
12377
12378[#100486]: https://github.com/rust-lang/rust/issues/100486
12379
12380------------------------
12381"##,
12382        default_severity: Severity::Allow,
12383        warn_since: None,
12384        deny_since: None,
12385    },
12386    Lint {
12387        label: "vec_split_at_spare",
12388        description: r##"# `vec_split_at_spare`
12389
12390The tracking issue for this feature is: [#81944]
12391
12392[#81944]: https://github.com/rust-lang/rust/issues/81944
12393
12394------------------------
12395"##,
12396        default_severity: Severity::Allow,
12397        warn_since: None,
12398        deny_since: None,
12399    },
12400    Lint {
12401        label: "wasi_ext",
12402        description: r##"# `wasi_ext`
12403
12404The tracking issue for this feature is: [#71213]
12405
12406[#71213]: https://github.com/rust-lang/rust/issues/71213
12407
12408------------------------
12409"##,
12410        default_severity: Severity::Allow,
12411        warn_since: None,
12412        deny_since: None,
12413    },
12414    Lint {
12415        label: "wasm_target_feature",
12416        description: r##"# `wasm_target_feature`
12417
12418The tracking issue for this feature is: [#44839]
12419
12420[#44839]: https://github.com/rust-lang/rust/issues/44839
12421
12422------------------------
12423"##,
12424        default_severity: Severity::Allow,
12425        warn_since: None,
12426        deny_since: None,
12427    },
12428    Lint {
12429        label: "windows_by_handle",
12430        description: r##"# `windows_by_handle`
12431
12432The tracking issue for this feature is: [#63010]
12433
12434[#63010]: https://github.com/rust-lang/rust/issues/63010
12435
12436------------------------
12437"##,
12438        default_severity: Severity::Allow,
12439        warn_since: None,
12440        deny_since: None,
12441    },
12442    Lint {
12443        label: "windows_c",
12444        description: r##"# `windows_c`
12445
12446This feature is internal to the Rust compiler and is not intended for general use.
12447
12448------------------------
12449"##,
12450        default_severity: Severity::Allow,
12451        warn_since: None,
12452        deny_since: None,
12453    },
12454    Lint {
12455        label: "windows_change_time",
12456        description: r##"# `windows_change_time`
12457
12458The tracking issue for this feature is: [#121478]
12459
12460[#121478]: https://github.com/rust-lang/rust/issues/121478
12461
12462------------------------
12463"##,
12464        default_severity: Severity::Allow,
12465        warn_since: None,
12466        deny_since: None,
12467    },
12468    Lint {
12469        label: "windows_handle",
12470        description: r##"# `windows_handle`
12471
12472This feature is internal to the Rust compiler and is not intended for general use.
12473
12474------------------------
12475"##,
12476        default_severity: Severity::Allow,
12477        warn_since: None,
12478        deny_since: None,
12479    },
12480    Lint {
12481        label: "windows_net",
12482        description: r##"# `windows_net`
12483
12484This feature is internal to the Rust compiler and is not intended for general use.
12485
12486------------------------
12487"##,
12488        default_severity: Severity::Allow,
12489        warn_since: None,
12490        deny_since: None,
12491    },
12492    Lint {
12493        label: "windows_process_exit_code_from",
12494        description: r##"# `windows_process_exit_code_from`
12495
12496The tracking issue for this feature is: [#111688]
12497
12498[#111688]: https://github.com/rust-lang/rust/issues/111688
12499
12500------------------------
12501"##,
12502        default_severity: Severity::Allow,
12503        warn_since: None,
12504        deny_since: None,
12505    },
12506    Lint {
12507        label: "windows_process_extensions_async_pipes",
12508        description: r##"# `windows_process_extensions_async_pipes`
12509
12510The tracking issue for this feature is: [#98289]
12511
12512[#98289]: https://github.com/rust-lang/rust/issues/98289
12513
12514------------------------
12515"##,
12516        default_severity: Severity::Allow,
12517        warn_since: None,
12518        deny_since: None,
12519    },
12520    Lint {
12521        label: "windows_process_extensions_force_quotes",
12522        description: r##"# `windows_process_extensions_force_quotes`
12523
12524The tracking issue for this feature is: [#82227]
12525
12526[#82227]: https://github.com/rust-lang/rust/issues/82227
12527
12528------------------------
12529"##,
12530        default_severity: Severity::Allow,
12531        warn_since: None,
12532        deny_since: None,
12533    },
12534    Lint {
12535        label: "windows_process_extensions_main_thread_handle",
12536        description: r##"# `windows_process_extensions_main_thread_handle`
12537
12538The tracking issue for this feature is: [#96723]
12539
12540[#96723]: https://github.com/rust-lang/rust/issues/96723
12541
12542------------------------
12543"##,
12544        default_severity: Severity::Allow,
12545        warn_since: None,
12546        deny_since: None,
12547    },
12548    Lint {
12549        label: "windows_process_extensions_raw_attribute",
12550        description: r##"# `windows_process_extensions_raw_attribute`
12551
12552The tracking issue for this feature is: [#114854]
12553
12554[#114854]: https://github.com/rust-lang/rust/issues/114854
12555
12556------------------------
12557"##,
12558        default_severity: Severity::Allow,
12559        warn_since: None,
12560        deny_since: None,
12561    },
12562    Lint {
12563        label: "windows_process_extensions_show_window",
12564        description: r##"# `windows_process_extensions_show_window`
12565
12566The tracking issue for this feature is: [#127544]
12567
12568[#127544]: https://github.com/rust-lang/rust/issues/127544
12569
12570------------------------
12571"##,
12572        default_severity: Severity::Allow,
12573        warn_since: None,
12574        deny_since: None,
12575    },
12576    Lint {
12577        label: "windows_stdio",
12578        description: r##"# `windows_stdio`
12579
12580This feature is internal to the Rust compiler and is not intended for general use.
12581
12582------------------------
12583"##,
12584        default_severity: Severity::Allow,
12585        warn_since: None,
12586        deny_since: None,
12587    },
12588    Lint {
12589        label: "with_negative_coherence",
12590        description: r##"# `with_negative_coherence`
12591
12592This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
12593
12594------------------------
12595"##,
12596        default_severity: Severity::Allow,
12597        warn_since: None,
12598        deny_since: None,
12599    },
12600    Lint {
12601        label: "wrapping_int_impl",
12602        description: r##"# `wrapping_int_impl`
12603
12604The tracking issue for this feature is: [#32463]
12605
12606[#32463]: https://github.com/rust-lang/rust/issues/32463
12607
12608------------------------
12609"##,
12610        default_severity: Severity::Allow,
12611        warn_since: None,
12612        deny_since: None,
12613    },
12614    Lint {
12615        label: "wrapping_next_power_of_two",
12616        description: r##"# `wrapping_next_power_of_two`
12617
12618The tracking issue for this feature is: [#32463]
12619
12620[#32463]: https://github.com/rust-lang/rust/issues/32463
12621
12622------------------------
12623"##,
12624        default_severity: Severity::Allow,
12625        warn_since: None,
12626        deny_since: None,
12627    },
12628    Lint {
12629        label: "write_all_vectored",
12630        description: r##"# `write_all_vectored`
12631
12632The tracking issue for this feature is: [#70436]
12633
12634[#70436]: https://github.com/rust-lang/rust/issues/70436
12635
12636------------------------
12637"##,
12638        default_severity: Severity::Allow,
12639        warn_since: None,
12640        deny_since: None,
12641    },
12642    Lint {
12643        label: "x86_amx_intrinsics",
12644        description: r##"# `x86_amx_intrinsics`
12645
12646The tracking issue for this feature is: [#126622]
12647
12648[#126622]: https://github.com/rust-lang/rust/issues/126622
12649
12650------------------------
12651"##,
12652        default_severity: Severity::Allow,
12653        warn_since: None,
12654        deny_since: None,
12655    },
12656    Lint {
12657        label: "xop_target_feature",
12658        description: r##"# `xop_target_feature`
12659
12660The tracking issue for this feature is: [#127208]
12661
12662[#127208]: https://github.com/rust-lang/rust/issues/127208
12663
12664------------------------
12665"##,
12666        default_severity: Severity::Allow,
12667        warn_since: None,
12668        deny_since: None,
12669    },
12670    Lint {
12671        label: "yeet_desugar_details",
12672        description: r##"# `yeet_desugar_details`
12673
12674This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
12675
12676------------------------
12677"##,
12678        default_severity: Severity::Allow,
12679        warn_since: None,
12680        deny_since: None,
12681    },
12682    Lint {
12683        label: "yeet_expr",
12684        description: r##"# `yeet_expr`
12685
12686The tracking issue for this feature is: [#96373]
12687
12688[#96373]: https://github.com/rust-lang/rust/issues/96373
12689
12690------------------------
12691
12692The `yeet_expr` feature adds support for `do yeet` expressions,
12693which can be used to early-exit from a function or `try` block.
12694
12695These are highly experimental, thus the placeholder syntax.
12696
12697```rust,edition2021
12698#![feature(yeet_expr)]
12699
12700fn foo() -> Result<String, i32> {
12701    do yeet 4;
12702}
12703assert_eq!(foo(), Err(4));
12704
12705fn bar() -> Option<String> {
12706    do yeet;
12707}
12708assert_eq!(bar(), None);
12709```
12710"##,
12711        default_severity: Severity::Allow,
12712        warn_since: None,
12713        deny_since: None,
12714    },
12715];
12716
12717pub const CLIPPY_LINTS: &[Lint] = &[
12718    Lint {
12719        label: "clippy::absolute_paths",
12720        description: r##"Checks for usage of items through absolute paths, like `std::env::current_dir`."##,
12721        default_severity: Severity::Allow,
12722        warn_since: None,
12723        deny_since: None,
12724    },
12725    Lint {
12726        label: "clippy::absurd_extreme_comparisons",
12727        description: r##"Checks for comparisons where one side of the relation is
12728either the minimum or maximum value for its type and warns if it involves a
12729case that is always true or always false. Only integer and boolean types are
12730checked."##,
12731        default_severity: Severity::Allow,
12732        warn_since: None,
12733        deny_since: None,
12734    },
12735    Lint {
12736        label: "clippy::alloc_instead_of_core",
12737        description: r##"Finds items imported through `alloc` when available through `core`."##,
12738        default_severity: Severity::Allow,
12739        warn_since: None,
12740        deny_since: None,
12741    },
12742    Lint {
12743        label: "clippy::allow_attributes",
12744        description: r##"Checks for usage of the `#[allow]` attribute and suggests replacing it with
12745the `#[expect]` (See [RFC 2383](https://rust-lang.github.io/rfcs/2383-lint-reasons.html))
12746
12747This lint only warns outer attributes (`#[allow]`), as inner attributes
12748(`#![allow]`) are usually used to enable or disable lints on a global scale."##,
12749        default_severity: Severity::Allow,
12750        warn_since: None,
12751        deny_since: None,
12752    },
12753    Lint {
12754        label: "clippy::allow_attributes_without_reason",
12755        description: r##"Checks for attributes that allow lints without a reason."##,
12756        default_severity: Severity::Allow,
12757        warn_since: None,
12758        deny_since: None,
12759    },
12760    Lint {
12761        label: "clippy::almost_complete_range",
12762        description: r##"Checks for ranges which almost include the entire range of letters from 'a' to 'z'
12763or digits from '0' to '9', but don't because they're a half open range."##,
12764        default_severity: Severity::Allow,
12765        warn_since: None,
12766        deny_since: None,
12767    },
12768    Lint {
12769        label: "clippy::almost_swapped",
12770        description: r##"Checks for `foo = bar; bar = foo` sequences."##,
12771        default_severity: Severity::Allow,
12772        warn_since: None,
12773        deny_since: None,
12774    },
12775    Lint {
12776        label: "clippy::approx_constant",
12777        description: r##"Checks for floating point literals that approximate
12778constants which are defined in
12779[`std::f32::consts`](https://doc.rust-lang.org/stable/std/f32/consts/#constants)
12780or
12781[`std::f64::consts`](https://doc.rust-lang.org/stable/std/f64/consts/#constants),
12782respectively, suggesting to use the predefined constant."##,
12783        default_severity: Severity::Allow,
12784        warn_since: None,
12785        deny_since: None,
12786    },
12787    Lint {
12788        label: "clippy::arc_with_non_send_sync",
12789        description: r##".
12790This lint warns when you use `Arc` with a type that does not implement `Send` or `Sync`."##,
12791        default_severity: Severity::Allow,
12792        warn_since: None,
12793        deny_since: None,
12794    },
12795    Lint {
12796        label: "clippy::arithmetic_side_effects",
12797        description: r##"Checks any kind of arithmetic operation of any type.
12798
12799Operators like `+`, `-`, `*` or `<<` are usually capable of overflowing according to the [Rust
12800Reference](https://doc.rust-lang.org/reference/expressions/operator-expr.html#overflow),
12801or can panic (`/`, `%`).
12802
12803Known safe built-in types like `Wrapping` or `Saturating`, floats, operations in constant
12804environments, allowed types and non-constant operations that won't overflow are ignored."##,
12805        default_severity: Severity::Allow,
12806        warn_since: None,
12807        deny_since: None,
12808    },
12809    Lint {
12810        label: "clippy::as_conversions",
12811        description: r##"Checks for usage of `as` conversions.
12812
12813Note that this lint is specialized in linting *every single* use of `as`
12814regardless of whether good alternatives exist or not.
12815If you want more precise lints for `as`, please consider using these separate lints:
12816`unnecessary_cast`, `cast_lossless/cast_possible_truncation/cast_possible_wrap/cast_precision_loss/cast_sign_loss`,
12817`fn_to_numeric_cast(_with_truncation)`, `char_lit_as_u8`, `ref_to_mut` and `ptr_as_ptr`.
12818There is a good explanation the reason why this lint should work in this way and how it is useful
12819[in this issue](https://github.com/rust-lang/rust-clippy/issues/5122)."##,
12820        default_severity: Severity::Allow,
12821        warn_since: None,
12822        deny_since: None,
12823    },
12824    Lint {
12825        label: "clippy::as_ptr_cast_mut",
12826        description: r##"Checks for the result of a `&self`-taking `as_ptr` being cast to a mutable pointer."##,
12827        default_severity: Severity::Allow,
12828        warn_since: None,
12829        deny_since: None,
12830    },
12831    Lint {
12832        label: "clippy::as_underscore",
12833        description: r##"Checks for the usage of `as _` conversion using inferred type."##,
12834        default_severity: Severity::Allow,
12835        warn_since: None,
12836        deny_since: None,
12837    },
12838    Lint {
12839        label: "clippy::assertions_on_constants",
12840        description: r##"Checks for `assert!(true)` and `assert!(false)` calls."##,
12841        default_severity: Severity::Allow,
12842        warn_since: None,
12843        deny_since: None,
12844    },
12845    Lint {
12846        label: "clippy::assertions_on_result_states",
12847        description: r##"Checks for `assert!(r.is_ok())` or `assert!(r.is_err())` calls."##,
12848        default_severity: Severity::Allow,
12849        warn_since: None,
12850        deny_since: None,
12851    },
12852    Lint {
12853        label: "clippy::assign_op_pattern",
12854        description: r##"Checks for `a = a op b` or `a = b commutative_op a`
12855patterns."##,
12856        default_severity: Severity::Allow,
12857        warn_since: None,
12858        deny_since: None,
12859    },
12860    Lint {
12861        label: "clippy::assign_ops",
12862        description: r##"Nothing. This lint has been deprecated"##,
12863        default_severity: Severity::Allow,
12864        warn_since: None,
12865        deny_since: None,
12866    },
12867    Lint {
12868        label: "clippy::assigning_clones",
12869        description: r##"Checks for code like `foo = bar.clone();`"##,
12870        default_severity: Severity::Allow,
12871        warn_since: None,
12872        deny_since: None,
12873    },
12874    Lint {
12875        label: "clippy::async_yields_async",
12876        description: r##"Checks for async blocks that yield values of types
12877that can themselves be awaited."##,
12878        default_severity: Severity::Allow,
12879        warn_since: None,
12880        deny_since: None,
12881    },
12882    Lint {
12883        label: "clippy::await_holding_invalid_type",
12884        description: r##"Allows users to configure types which should not be held across await
12885suspension points."##,
12886        default_severity: Severity::Allow,
12887        warn_since: None,
12888        deny_since: None,
12889    },
12890    Lint {
12891        label: "clippy::await_holding_lock",
12892        description: r##"Checks for calls to `await` while holding a non-async-aware
12893`MutexGuard`."##,
12894        default_severity: Severity::Allow,
12895        warn_since: None,
12896        deny_since: None,
12897    },
12898    Lint {
12899        label: "clippy::await_holding_refcell_ref",
12900        description: r##"Checks for calls to `await` while holding a `RefCell`, `Ref`, or `RefMut`."##,
12901        default_severity: Severity::Allow,
12902        warn_since: None,
12903        deny_since: None,
12904    },
12905    Lint {
12906        label: "clippy::bad_bit_mask",
12907        description: r##"Checks for incompatible bit masks in comparisons.
12908
12909The formula for detecting if an expression of the type `_ <bit_op> m
12910<cmp_op> c` (where `<bit_op>` is one of {`&`, `|`} and `<cmp_op>` is one of
12911{`!=`, `>=`, `>`, `!=`, `>=`, `>`}) can be determined from the following
12912table:
12913
12914|Comparison  |Bit Op|Example      |is always|Formula               |
12915|------------|------|-------------|---------|----------------------|
12916|`==` or `!=`| `&`  |`x & 2 == 3` |`false`  |`c & m != c`          |
12917|`<`  or `>=`| `&`  |`x & 2 < 3`  |`true`   |`m < c`               |
12918|`>`  or `<=`| `&`  |`x & 1 > 1`  |`false`  |`m <= c`              |
12919|`==` or `!=`| `\\|` |`x \\| 1 == 0`|`false`  |`c \\| m != c`         |
12920|`<`  or `>=`| `\\|` |`x \\| 1 < 1` |`false`  |`m >= c`              |
12921|`<=` or `>` | `\\|` |`x \\| 1 > 0` |`true`   |`m > c`               |"##,
12922        default_severity: Severity::Allow,
12923        warn_since: None,
12924        deny_since: None,
12925    },
12926    Lint {
12927        label: "clippy::big_endian_bytes",
12928        description: r##"Checks for the usage of the `to_be_bytes` method and/or the function `from_be_bytes`."##,
12929        default_severity: Severity::Allow,
12930        warn_since: None,
12931        deny_since: None,
12932    },
12933    Lint {
12934        label: "clippy::bind_instead_of_map",
12935        description: r##"Checks for usage of `_.and_then(|x| Some(y))`, `_.and_then(|x| Ok(y))`
12936or `_.or_else(|x| Err(y))`."##,
12937        default_severity: Severity::Allow,
12938        warn_since: None,
12939        deny_since: None,
12940    },
12941    Lint {
12942        label: "clippy::blanket_clippy_restriction_lints",
12943        description: r##"Checks for `warn`/`deny`/`forbid` attributes targeting the whole clippy::restriction category."##,
12944        default_severity: Severity::Allow,
12945        warn_since: None,
12946        deny_since: None,
12947    },
12948    Lint {
12949        label: "clippy::blocks_in_conditions",
12950        description: r##"Checks for `if` and `match` conditions that use blocks containing an
12951expression, statements or conditions that use closures with blocks."##,
12952        default_severity: Severity::Allow,
12953        warn_since: None,
12954        deny_since: None,
12955    },
12956    Lint {
12957        label: "clippy::bool_assert_comparison",
12958        description: r##"This lint warns about boolean comparisons in assert-like macros."##,
12959        default_severity: Severity::Allow,
12960        warn_since: None,
12961        deny_since: None,
12962    },
12963    Lint {
12964        label: "clippy::bool_comparison",
12965        description: r##"Checks for expressions of the form `x == true`,
12966`x != true` and order comparisons such as `x < true` (or vice versa) and
12967suggest using the variable directly."##,
12968        default_severity: Severity::Allow,
12969        warn_since: None,
12970        deny_since: None,
12971    },
12972    Lint {
12973        label: "clippy::bool_to_int_with_if",
12974        description: r##"Instead of using an if statement to convert a bool to an int,
12975this lint suggests using a `from()` function or an `as` coercion."##,
12976        default_severity: Severity::Allow,
12977        warn_since: None,
12978        deny_since: None,
12979    },
12980    Lint {
12981        label: "clippy::borrow_as_ptr",
12982        description: r##"Checks for the usage of `&expr as *const T` or
12983`&mut expr as *mut T`, and suggest using `ptr::addr_of` or
12984`ptr::addr_of_mut` instead."##,
12985        default_severity: Severity::Allow,
12986        warn_since: None,
12987        deny_since: None,
12988    },
12989    Lint {
12990        label: "clippy::borrow_deref_ref",
12991        description: r##"Checks for `&*(&T)`."##,
12992        default_severity: Severity::Allow,
12993        warn_since: None,
12994        deny_since: None,
12995    },
12996    Lint {
12997        label: "clippy::borrow_interior_mutable_const",
12998        description: r##"Checks if `const` items which is interior mutable (e.g.,
12999contains a `Cell`, `Mutex`, `AtomicXxxx`, etc.) has been borrowed directly."##,
13000        default_severity: Severity::Allow,
13001        warn_since: None,
13002        deny_since: None,
13003    },
13004    Lint {
13005        label: "clippy::borrowed_box",
13006        description: r##"Checks for usage of `&Box<T>` anywhere in the code.
13007Check the [Box documentation](https://doc.rust-lang.org/std/boxed/index.html) for more information."##,
13008        default_severity: Severity::Allow,
13009        warn_since: None,
13010        deny_since: None,
13011    },
13012    Lint {
13013        label: "clippy::box_collection",
13014        description: r##"Checks for usage of `Box<T>` where T is a collection such as Vec anywhere in the code.
13015Check the [Box documentation](https://doc.rust-lang.org/std/boxed/index.html) for more information."##,
13016        default_severity: Severity::Allow,
13017        warn_since: None,
13018        deny_since: None,
13019    },
13020    Lint {
13021        label: "clippy::box_default",
13022        description: r##"checks for `Box::new(Default::default())`, which can be written as
13023`Box::default()`."##,
13024        default_severity: Severity::Allow,
13025        warn_since: None,
13026        deny_since: None,
13027    },
13028    Lint {
13029        label: "clippy::boxed_local",
13030        description: r##"Checks for usage of `Box<T>` where an unboxed `T` would
13031work fine."##,
13032        default_severity: Severity::Allow,
13033        warn_since: None,
13034        deny_since: None,
13035    },
13036    Lint {
13037        label: "clippy::branches_sharing_code",
13038        description: r##"Checks if the `if` and `else` block contain shared code that can be
13039moved out of the blocks."##,
13040        default_severity: Severity::Allow,
13041        warn_since: None,
13042        deny_since: None,
13043    },
13044    Lint {
13045        label: "clippy::builtin_type_shadow",
13046        description: r##"Warns if a generic shadows a built-in type."##,
13047        default_severity: Severity::Allow,
13048        warn_since: None,
13049        deny_since: None,
13050    },
13051    Lint {
13052        label: "clippy::byte_char_slices",
13053        description: r##"Checks for hard to read slices of byte characters, that could be more easily expressed as a
13054byte string."##,
13055        default_severity: Severity::Allow,
13056        warn_since: None,
13057        deny_since: None,
13058    },
13059    Lint {
13060        label: "clippy::bytes_count_to_len",
13061        description: r##"It checks for `str::bytes().count()` and suggests replacing it with
13062`str::len()`."##,
13063        default_severity: Severity::Allow,
13064        warn_since: None,
13065        deny_since: None,
13066    },
13067    Lint {
13068        label: "clippy::bytes_nth",
13069        description: r##"Checks for the use of `.bytes().nth()`."##,
13070        default_severity: Severity::Allow,
13071        warn_since: None,
13072        deny_since: None,
13073    },
13074    Lint {
13075        label: "clippy::cargo_common_metadata",
13076        description: r##"Checks to see if all common metadata is defined in
13077`Cargo.toml`. See: https://rust-lang-nursery.github.io/api-guidelines/documentation.html#cargotoml-includes-all-common-metadata-c-metadata"##,
13078        default_severity: Severity::Allow,
13079        warn_since: None,
13080        deny_since: None,
13081    },
13082    Lint {
13083        label: "clippy::case_sensitive_file_extension_comparisons",
13084        description: r##"Checks for calls to `ends_with` with possible file extensions
13085and suggests to use a case-insensitive approach instead."##,
13086        default_severity: Severity::Allow,
13087        warn_since: None,
13088        deny_since: None,
13089    },
13090    Lint {
13091        label: "clippy::cast_abs_to_unsigned",
13092        description: r##"Checks for usage of the `abs()` method that cast the result to unsigned."##,
13093        default_severity: Severity::Allow,
13094        warn_since: None,
13095        deny_since: None,
13096    },
13097    Lint {
13098        label: "clippy::cast_enum_constructor",
13099        description: r##"Checks for casts from an enum tuple constructor to an integer."##,
13100        default_severity: Severity::Allow,
13101        warn_since: None,
13102        deny_since: None,
13103    },
13104    Lint {
13105        label: "clippy::cast_enum_truncation",
13106        description: r##"Checks for casts from an enum type to an integral type that will definitely truncate the
13107value."##,
13108        default_severity: Severity::Allow,
13109        warn_since: None,
13110        deny_since: None,
13111    },
13112    Lint {
13113        label: "clippy::cast_lossless",
13114        description: r##"Checks for casts between numeric types that can be replaced by safe
13115conversion functions."##,
13116        default_severity: Severity::Allow,
13117        warn_since: None,
13118        deny_since: None,
13119    },
13120    Lint {
13121        label: "clippy::cast_nan_to_int",
13122        description: r##"Checks for a known NaN float being cast to an integer"##,
13123        default_severity: Severity::Allow,
13124        warn_since: None,
13125        deny_since: None,
13126    },
13127    Lint {
13128        label: "clippy::cast_possible_truncation",
13129        description: r##"Checks for casts between numeric types that may
13130truncate large values. This is expected behavior, so the cast is `Allow` by
13131default. It suggests user either explicitly ignore the lint,
13132or use `try_from()` and handle the truncation, default, or panic explicitly."##,
13133        default_severity: Severity::Allow,
13134        warn_since: None,
13135        deny_since: None,
13136    },
13137    Lint {
13138        label: "clippy::cast_possible_wrap",
13139        description: r##"Checks for casts from an unsigned type to a signed type of
13140the same size, or possibly smaller due to target-dependent integers.
13141Performing such a cast is a no-op for the compiler (that is, nothing is
13142changed at the bit level), and the binary representation of the value is
13143reinterpreted. This can cause wrapping if the value is too big
13144for the target signed type. However, the cast works as defined, so this lint
13145is `Allow` by default."##,
13146        default_severity: Severity::Allow,
13147        warn_since: None,
13148        deny_since: None,
13149    },
13150    Lint {
13151        label: "clippy::cast_precision_loss",
13152        description: r##"Checks for casts from any numeric type to a float type where
13153the receiving type cannot store all values from the original type without
13154rounding errors. This possible rounding is to be expected, so this lint is
13155`Allow` by default.
13156
13157Basically, this warns on casting any integer with 32 or more bits to `f32`
13158or any 64-bit integer to `f64`."##,
13159        default_severity: Severity::Allow,
13160        warn_since: None,
13161        deny_since: None,
13162    },
13163    Lint {
13164        label: "clippy::cast_ptr_alignment",
13165        description: r##"Checks for casts, using `as` or `pointer::cast`, from a
13166less strictly aligned pointer to a more strictly aligned pointer."##,
13167        default_severity: Severity::Allow,
13168        warn_since: None,
13169        deny_since: None,
13170    },
13171    Lint {
13172        label: "clippy::cast_sign_loss",
13173        description: r##"Checks for casts from a signed to an unsigned numeric
13174type. In this case, negative values wrap around to large positive values,
13175which can be quite surprising in practice. However, since the cast works as
13176defined, this lint is `Allow` by default."##,
13177        default_severity: Severity::Allow,
13178        warn_since: None,
13179        deny_since: None,
13180    },
13181    Lint {
13182        label: "clippy::cast_slice_different_sizes",
13183        description: r##"Checks for `as` casts between raw pointers to slices with differently sized elements."##,
13184        default_severity: Severity::Allow,
13185        warn_since: None,
13186        deny_since: None,
13187    },
13188    Lint {
13189        label: "clippy::cast_slice_from_raw_parts",
13190        description: r##"Checks for a raw slice being cast to a slice pointer"##,
13191        default_severity: Severity::Allow,
13192        warn_since: None,
13193        deny_since: None,
13194    },
13195    Lint {
13196        label: "clippy::cfg_not_test",
13197        description: r##"Checks for usage of `cfg` that excludes code from `test` builds. (i.e., `#[cfg(not(test))]`)"##,
13198        default_severity: Severity::Allow,
13199        warn_since: None,
13200        deny_since: None,
13201    },
13202    Lint {
13203        label: "clippy::char_lit_as_u8",
13204        description: r##"Checks for expressions where a character literal is cast
13205to `u8` and suggests using a byte literal instead."##,
13206        default_severity: Severity::Allow,
13207        warn_since: None,
13208        deny_since: None,
13209    },
13210    Lint {
13211        label: "clippy::chars_last_cmp",
13212        description: r##"Checks for usage of `_.chars().last()` or
13213`_.chars().next_back()` on a `str` to check if it ends with a given char."##,
13214        default_severity: Severity::Allow,
13215        warn_since: None,
13216        deny_since: None,
13217    },
13218    Lint {
13219        label: "clippy::chars_next_cmp",
13220        description: r##"Checks for usage of `.chars().next()` on a `str` to check
13221if it starts with a given char."##,
13222        default_severity: Severity::Allow,
13223        warn_since: None,
13224        deny_since: None,
13225    },
13226    Lint {
13227        label: "clippy::checked_conversions",
13228        description: r##"Checks for explicit bounds checking when casting."##,
13229        default_severity: Severity::Allow,
13230        warn_since: None,
13231        deny_since: None,
13232    },
13233    Lint {
13234        label: "clippy::clear_with_drain",
13235        description: r##"Checks for usage of `.drain(..)` for the sole purpose of clearing a container."##,
13236        default_severity: Severity::Allow,
13237        warn_since: None,
13238        deny_since: None,
13239    },
13240    Lint {
13241        label: "clippy::clone_on_copy",
13242        description: r##"Checks for usage of `.clone()` on a `Copy` type."##,
13243        default_severity: Severity::Allow,
13244        warn_since: None,
13245        deny_since: None,
13246    },
13247    Lint {
13248        label: "clippy::clone_on_ref_ptr",
13249        description: r##"Checks for usage of `.clone()` on a ref-counted pointer,
13250(`Rc`, `Arc`, `rc::Weak`, or `sync::Weak`), and suggests calling Clone via unified
13251function syntax instead (e.g., `Rc::clone(foo)`)."##,
13252        default_severity: Severity::Allow,
13253        warn_since: None,
13254        deny_since: None,
13255    },
13256    Lint {
13257        label: "clippy::cloned_instead_of_copied",
13258        description: r##"Checks for usage of `cloned()` on an `Iterator` or `Option` where
13259`copied()` could be used instead."##,
13260        default_severity: Severity::Allow,
13261        warn_since: None,
13262        deny_since: None,
13263    },
13264    Lint {
13265        label: "clippy::cmp_null",
13266        description: r##"This lint checks for equality comparisons with `ptr::null`"##,
13267        default_severity: Severity::Allow,
13268        warn_since: None,
13269        deny_since: None,
13270    },
13271    Lint {
13272        label: "clippy::cmp_owned",
13273        description: r##"Checks for conversions to owned values just for the sake
13274of a comparison."##,
13275        default_severity: Severity::Allow,
13276        warn_since: None,
13277        deny_since: None,
13278    },
13279    Lint {
13280        label: "clippy::cognitive_complexity",
13281        description: r##"Checks for methods with high cognitive complexity."##,
13282        default_severity: Severity::Allow,
13283        warn_since: None,
13284        deny_since: None,
13285    },
13286    Lint {
13287        label: "clippy::collapsible_else_if",
13288        description: r##"Checks for collapsible `else { if ... }` expressions
13289that can be collapsed to `else if ...`."##,
13290        default_severity: Severity::Allow,
13291        warn_since: None,
13292        deny_since: None,
13293    },
13294    Lint {
13295        label: "clippy::collapsible_if",
13296        description: r##"Checks for nested `if` statements which can be collapsed
13297by `&&`-combining their conditions."##,
13298        default_severity: Severity::Allow,
13299        warn_since: None,
13300        deny_since: None,
13301    },
13302    Lint {
13303        label: "clippy::collapsible_match",
13304        description: r##"Finds nested `match` or `if let` expressions where the patterns may be collapsed together
13305without adding any branches.
13306
13307Note that this lint is not intended to find _all_ cases where nested match patterns can be merged, but only
13308cases where merging would most likely make the code more readable."##,
13309        default_severity: Severity::Allow,
13310        warn_since: None,
13311        deny_since: None,
13312    },
13313    Lint {
13314        label: "clippy::collapsible_str_replace",
13315        description: r##"Checks for consecutive calls to `str::replace` (2 or more)
13316that can be collapsed into a single call."##,
13317        default_severity: Severity::Allow,
13318        warn_since: None,
13319        deny_since: None,
13320    },
13321    Lint {
13322        label: "clippy::collection_is_never_read",
13323        description: r##"Checks for collections that are never queried."##,
13324        default_severity: Severity::Allow,
13325        warn_since: None,
13326        deny_since: None,
13327    },
13328    Lint {
13329        label: "clippy::comparison_chain",
13330        description: r##"Checks comparison chains written with `if` that can be
13331rewritten with `match` and `cmp`."##,
13332        default_severity: Severity::Allow,
13333        warn_since: None,
13334        deny_since: None,
13335    },
13336    Lint {
13337        label: "clippy::comparison_to_empty",
13338        description: r##"Checks for comparing to an empty slice such as `` or `[]`,
13339and suggests using `.is_empty()` where applicable."##,
13340        default_severity: Severity::Allow,
13341        warn_since: None,
13342        deny_since: None,
13343    },
13344    Lint {
13345        label: "clippy::const_is_empty",
13346        description: r##"It identifies calls to `.is_empty()` on constant values."##,
13347        default_severity: Severity::Allow,
13348        warn_since: None,
13349        deny_since: None,
13350    },
13351    Lint {
13352        label: "clippy::copy_iterator",
13353        description: r##"Checks for types that implement `Copy` as well as
13354`Iterator`."##,
13355        default_severity: Severity::Allow,
13356        warn_since: None,
13357        deny_since: None,
13358    },
13359    Lint {
13360        label: "clippy::crate_in_macro_def",
13361        description: r##"Checks for usage of `crate` as opposed to `$crate` in a macro definition."##,
13362        default_severity: Severity::Allow,
13363        warn_since: None,
13364        deny_since: None,
13365    },
13366    Lint {
13367        label: "clippy::create_dir",
13368        description: r##"Checks usage of `std::fs::create_dir` and suggest using `std::fs::create_dir_all` instead."##,
13369        default_severity: Severity::Allow,
13370        warn_since: None,
13371        deny_since: None,
13372    },
13373    Lint {
13374        label: "clippy::crosspointer_transmute",
13375        description: r##"Checks for transmutes between a type `T` and `*T`."##,
13376        default_severity: Severity::Allow,
13377        warn_since: None,
13378        deny_since: None,
13379    },
13380    Lint {
13381        label: "clippy::dbg_macro",
13382        description: r##"Checks for usage of the [`dbg!`](https://doc.rust-lang.org/std/macro.dbg.html) macro."##,
13383        default_severity: Severity::Allow,
13384        warn_since: None,
13385        deny_since: None,
13386    },
13387    Lint {
13388        label: "clippy::debug_assert_with_mut_call",
13389        description: r##"Checks for function/method calls with a mutable
13390parameter in `debug_assert!`, `debug_assert_eq!` and `debug_assert_ne!` macros."##,
13391        default_severity: Severity::Allow,
13392        warn_since: None,
13393        deny_since: None,
13394    },
13395    Lint {
13396        label: "clippy::decimal_literal_representation",
13397        description: r##"Warns if there is a better representation for a numeric literal."##,
13398        default_severity: Severity::Allow,
13399        warn_since: None,
13400        deny_since: None,
13401    },
13402    Lint {
13403        label: "clippy::declare_interior_mutable_const",
13404        description: r##"Checks for declaration of `const` items which is interior
13405mutable (e.g., contains a `Cell`, `Mutex`, `AtomicXxxx`, etc.)."##,
13406        default_severity: Severity::Allow,
13407        warn_since: None,
13408        deny_since: None,
13409    },
13410    Lint {
13411        label: "clippy::default_constructed_unit_structs",
13412        description: r##"Checks for construction on unit struct using `default`."##,
13413        default_severity: Severity::Allow,
13414        warn_since: None,
13415        deny_since: None,
13416    },
13417    Lint {
13418        label: "clippy::default_instead_of_iter_empty",
13419        description: r##"It checks for `std::iter::Empty::default()` and suggests replacing it with
13420`std::iter::empty()`."##,
13421        default_severity: Severity::Allow,
13422        warn_since: None,
13423        deny_since: None,
13424    },
13425    Lint {
13426        label: "clippy::default_numeric_fallback",
13427        description: r##"Checks for usage of unconstrained numeric literals which may cause default numeric fallback in type
13428inference.
13429
13430Default numeric fallback means that if numeric types have not yet been bound to concrete
13431types at the end of type inference, then integer type is bound to `i32`, and similarly
13432floating type is bound to `f64`.
13433
13434See [RFC0212](https://github.com/rust-lang/rfcs/blob/master/text/0212-restore-int-fallback.md) for more information about the fallback."##,
13435        default_severity: Severity::Allow,
13436        warn_since: None,
13437        deny_since: None,
13438    },
13439    Lint {
13440        label: "clippy::default_trait_access",
13441        description: r##"Checks for literal calls to `Default::default()`."##,
13442        default_severity: Severity::Allow,
13443        warn_since: None,
13444        deny_since: None,
13445    },
13446    Lint {
13447        label: "clippy::default_union_representation",
13448        description: r##"Displays a warning when a union is declared with the default representation (without a `#[repr(C)]` attribute)."##,
13449        default_severity: Severity::Allow,
13450        warn_since: None,
13451        deny_since: None,
13452    },
13453    Lint {
13454        label: "clippy::deprecated_cfg_attr",
13455        description: r##"Checks for `#[cfg_attr(rustfmt, rustfmt_skip)]` and suggests to replace it
13456with `#[rustfmt::skip]`."##,
13457        default_severity: Severity::Allow,
13458        warn_since: None,
13459        deny_since: None,
13460    },
13461    Lint {
13462        label: "clippy::deprecated_clippy_cfg_attr",
13463        description: r##"Checks for `#[cfg_attr(feature = cargo-clippy, ...)]` and for
13464`#[cfg(feature = cargo-clippy)]` and suggests to replace it with
13465`#[cfg_attr(clippy, ...)]` or `#[cfg(clippy)]`."##,
13466        default_severity: Severity::Allow,
13467        warn_since: None,
13468        deny_since: None,
13469    },
13470    Lint {
13471        label: "clippy::deprecated_semver",
13472        description: r##"Checks for `#[deprecated]` annotations with a `since`
13473field that is not a valid semantic version. Also allows TBD to signal
13474future deprecation."##,
13475        default_severity: Severity::Allow,
13476        warn_since: None,
13477        deny_since: None,
13478    },
13479    Lint {
13480        label: "clippy::deref_addrof",
13481        description: r##"Checks for usage of `*&` and `*&mut` in expressions."##,
13482        default_severity: Severity::Allow,
13483        warn_since: None,
13484        deny_since: None,
13485    },
13486    Lint {
13487        label: "clippy::deref_by_slicing",
13488        description: r##"Checks for slicing expressions which are equivalent to dereferencing the
13489value."##,
13490        default_severity: Severity::Allow,
13491        warn_since: None,
13492        deny_since: None,
13493    },
13494    Lint {
13495        label: "clippy::derivable_impls",
13496        description: r##"Detects manual `std::default::Default` implementations that are identical to a derived implementation."##,
13497        default_severity: Severity::Allow,
13498        warn_since: None,
13499        deny_since: None,
13500    },
13501    Lint {
13502        label: "clippy::derive_ord_xor_partial_ord",
13503        description: r##"Lints against manual `PartialOrd` and `Ord` implementations for types with a derived `Ord`
13504or `PartialOrd` implementation."##,
13505        default_severity: Severity::Allow,
13506        warn_since: None,
13507        deny_since: None,
13508    },
13509    Lint {
13510        label: "clippy::derive_partial_eq_without_eq",
13511        description: r##"Checks for types that derive `PartialEq` and could implement `Eq`."##,
13512        default_severity: Severity::Allow,
13513        warn_since: None,
13514        deny_since: None,
13515    },
13516    Lint {
13517        label: "clippy::derived_hash_with_manual_eq",
13518        description: r##"Lints against manual `PartialEq` implementations for types with a derived `Hash`
13519implementation."##,
13520        default_severity: Severity::Allow,
13521        warn_since: None,
13522        deny_since: None,
13523    },
13524    Lint {
13525        label: "clippy::disallowed_macros",
13526        description: r##"Denies the configured macros in clippy.toml
13527
13528Note: Even though this lint is warn-by-default, it will only trigger if
13529macros are defined in the clippy.toml file."##,
13530        default_severity: Severity::Allow,
13531        warn_since: None,
13532        deny_since: None,
13533    },
13534    Lint {
13535        label: "clippy::disallowed_methods",
13536        description: r##"Denies the configured methods and functions in clippy.toml
13537
13538Note: Even though this lint is warn-by-default, it will only trigger if
13539methods are defined in the clippy.toml file."##,
13540        default_severity: Severity::Allow,
13541        warn_since: None,
13542        deny_since: None,
13543    },
13544    Lint {
13545        label: "clippy::disallowed_names",
13546        description: r##"Checks for usage of disallowed names for variables, such
13547as `foo`."##,
13548        default_severity: Severity::Allow,
13549        warn_since: None,
13550        deny_since: None,
13551    },
13552    Lint {
13553        label: "clippy::disallowed_script_idents",
13554        description: r##"Checks for usage of unicode scripts other than those explicitly allowed
13555by the lint config.
13556
13557This lint doesn't take into account non-text scripts such as `Unknown` and `Linear_A`.
13558It also ignores the `Common` script type.
13559While configuring, be sure to use official script name [aliases] from
13560[the list of supported scripts][supported_scripts].
13561
13562See also: [`non_ascii_idents`].
13563
13564[aliases]: http://www.unicode.org/reports/tr24/tr24-31.html#Script_Value_Aliases
13565[supported_scripts]: https://www.unicode.org/iso15924/iso15924-codes.html"##,
13566        default_severity: Severity::Allow,
13567        warn_since: None,
13568        deny_since: None,
13569    },
13570    Lint {
13571        label: "clippy::disallowed_types",
13572        description: r##"Denies the configured types in clippy.toml.
13573
13574Note: Even though this lint is warn-by-default, it will only trigger if
13575types are defined in the clippy.toml file."##,
13576        default_severity: Severity::Allow,
13577        warn_since: None,
13578        deny_since: None,
13579    },
13580    Lint {
13581        label: "clippy::diverging_sub_expression",
13582        description: r##"Checks for diverging calls that are not match arms or
13583statements."##,
13584        default_severity: Severity::Allow,
13585        warn_since: None,
13586        deny_since: None,
13587    },
13588    Lint {
13589        label: "clippy::doc_lazy_continuation",
13590        description: r##"In CommonMark Markdown, the language used to write doc comments, a
13591paragraph nested within a list or block quote does not need any line
13592after the first one to be indented or marked. The specification calls
13593this a lazy paragraph continuation."##,
13594        default_severity: Severity::Allow,
13595        warn_since: None,
13596        deny_since: None,
13597    },
13598    Lint {
13599        label: "clippy::doc_link_with_quotes",
13600        description: r##"Detects the syntax `['foo']` in documentation comments (notice quotes instead of backticks)
13601outside of code blocks"##,
13602        default_severity: Severity::Allow,
13603        warn_since: None,
13604        deny_since: None,
13605    },
13606    Lint {
13607        label: "clippy::doc_markdown",
13608        description: r##"Checks for the presence of `_`, `::` or camel-case words
13609outside ticks in documentation."##,
13610        default_severity: Severity::Allow,
13611        warn_since: None,
13612        deny_since: None,
13613    },
13614    Lint {
13615        label: "clippy::double_comparisons",
13616        description: r##"Checks for double comparisons that could be simplified to a single expression."##,
13617        default_severity: Severity::Allow,
13618        warn_since: None,
13619        deny_since: None,
13620    },
13621    Lint {
13622        label: "clippy::double_must_use",
13623        description: r##"Checks for a `#[must_use]` attribute without
13624further information on functions and methods that return a type already
13625marked as `#[must_use]`."##,
13626        default_severity: Severity::Allow,
13627        warn_since: None,
13628        deny_since: None,
13629    },
13630    Lint {
13631        label: "clippy::double_neg",
13632        description: r##"Detects expressions of the form `--x`."##,
13633        default_severity: Severity::Allow,
13634        warn_since: None,
13635        deny_since: None,
13636    },
13637    Lint {
13638        label: "clippy::double_parens",
13639        description: r##"Checks for unnecessary double parentheses."##,
13640        default_severity: Severity::Allow,
13641        warn_since: None,
13642        deny_since: None,
13643    },
13644    Lint {
13645        label: "clippy::drain_collect",
13646        description: r##"Checks for calls to `.drain()` that clear the collection, immediately followed by a call to `.collect()`.
13647
13648> Collection in this context refers to any type with a `drain` method:
13649> `Vec`, `VecDeque`, `BinaryHeap`, `HashSet`,`HashMap`, `String`"##,
13650        default_severity: Severity::Allow,
13651        warn_since: None,
13652        deny_since: None,
13653    },
13654    Lint {
13655        label: "clippy::drop_non_drop",
13656        description: r##"Checks for calls to `std::mem::drop` with a value that does not implement `Drop`."##,
13657        default_severity: Severity::Allow,
13658        warn_since: None,
13659        deny_since: None,
13660    },
13661    Lint {
13662        label: "clippy::duplicate_mod",
13663        description: r##"Checks for files that are included as modules multiple times."##,
13664        default_severity: Severity::Allow,
13665        warn_since: None,
13666        deny_since: None,
13667    },
13668    Lint {
13669        label: "clippy::duplicate_underscore_argument",
13670        description: r##"Checks for function arguments having the similar names
13671differing by an underscore."##,
13672        default_severity: Severity::Allow,
13673        warn_since: None,
13674        deny_since: None,
13675    },
13676    Lint {
13677        label: "clippy::duplicated_attributes",
13678        description: r##"Checks for attributes that appear two or more times."##,
13679        default_severity: Severity::Allow,
13680        warn_since: None,
13681        deny_since: None,
13682    },
13683    Lint {
13684        label: "clippy::duration_subsec",
13685        description: r##"Checks for calculation of subsecond microseconds or milliseconds
13686from other `Duration` methods."##,
13687        default_severity: Severity::Allow,
13688        warn_since: None,
13689        deny_since: None,
13690    },
13691    Lint {
13692        label: "clippy::eager_transmute",
13693        description: r##"Checks for integer validity checks, followed by a transmute that is (incorrectly) evaluated
13694eagerly (e.g. using `bool::then_some`)."##,
13695        default_severity: Severity::Allow,
13696        warn_since: None,
13697        deny_since: None,
13698    },
13699    Lint {
13700        label: "clippy::else_if_without_else",
13701        description: r##"Checks for usage of if expressions with an `else if` branch,
13702but without a final `else` branch."##,
13703        default_severity: Severity::Allow,
13704        warn_since: None,
13705        deny_since: None,
13706    },
13707    Lint {
13708        label: "clippy::empty_docs",
13709        description: r##"Detects documentation that is empty."##,
13710        default_severity: Severity::Allow,
13711        warn_since: None,
13712        deny_since: None,
13713    },
13714    Lint {
13715        label: "clippy::empty_drop",
13716        description: r##"Checks for empty `Drop` implementations."##,
13717        default_severity: Severity::Allow,
13718        warn_since: None,
13719        deny_since: None,
13720    },
13721    Lint {
13722        label: "clippy::empty_enum",
13723        description: r##"Checks for `enum`s with no variants, which therefore are uninhabited types
13724(cannot be instantiated).
13725
13726As of this writing, the `never_type` is still a nightly-only experimental API.
13727Therefore, this lint is only triggered if `#![feature(never_type)]` is enabled."##,
13728        default_severity: Severity::Allow,
13729        warn_since: None,
13730        deny_since: None,
13731    },
13732    Lint {
13733        label: "clippy::empty_enum_variants_with_brackets",
13734        description: r##"Finds enum variants without fields that are declared with empty brackets."##,
13735        default_severity: Severity::Allow,
13736        warn_since: None,
13737        deny_since: None,
13738    },
13739    Lint {
13740        label: "clippy::empty_line_after_doc_comments",
13741        description: r##"Checks for empty lines after doc comments."##,
13742        default_severity: Severity::Allow,
13743        warn_since: None,
13744        deny_since: None,
13745    },
13746    Lint {
13747        label: "clippy::empty_line_after_outer_attr",
13748        description: r##"Checks for empty lines after outer attributes"##,
13749        default_severity: Severity::Allow,
13750        warn_since: None,
13751        deny_since: None,
13752    },
13753    Lint {
13754        label: "clippy::empty_loop",
13755        description: r##"Checks for empty `loop` expressions."##,
13756        default_severity: Severity::Allow,
13757        warn_since: None,
13758        deny_since: None,
13759    },
13760    Lint {
13761        label: "clippy::empty_structs_with_brackets",
13762        description: r##"Finds structs without fields (a so-called empty struct) that are declared with brackets."##,
13763        default_severity: Severity::Allow,
13764        warn_since: None,
13765        deny_since: None,
13766    },
13767    Lint {
13768        label: "clippy::enum_clike_unportable_variant",
13769        description: r##"Checks for C-like enumerations that are
13770`repr(isize/usize)` and have values that don't fit into an `i32`."##,
13771        default_severity: Severity::Allow,
13772        warn_since: None,
13773        deny_since: None,
13774    },
13775    Lint {
13776        label: "clippy::enum_glob_use",
13777        description: r##"Checks for `use Enum::*`."##,
13778        default_severity: Severity::Allow,
13779        warn_since: None,
13780        deny_since: None,
13781    },
13782    Lint {
13783        label: "clippy::enum_variant_names",
13784        description: r##"Detects enumeration variants that are prefixed or suffixed
13785by the same characters."##,
13786        default_severity: Severity::Allow,
13787        warn_since: None,
13788        deny_since: None,
13789    },
13790    Lint {
13791        label: "clippy::eq_op",
13792        description: r##"Checks for equal operands to comparison, logical and
13793bitwise, difference and division binary operators (`==`, `>`, etc., `&&`,
13794`||`, `&`, `|`, `^`, `-` and `/`)."##,
13795        default_severity: Severity::Allow,
13796        warn_since: None,
13797        deny_since: None,
13798    },
13799    Lint {
13800        label: "clippy::equatable_if_let",
13801        description: r##"Checks for pattern matchings that can be expressed using equality."##,
13802        default_severity: Severity::Allow,
13803        warn_since: None,
13804        deny_since: None,
13805    },
13806    Lint {
13807        label: "clippy::erasing_op",
13808        description: r##"Checks for erasing operations, e.g., `x * 0`."##,
13809        default_severity: Severity::Allow,
13810        warn_since: None,
13811        deny_since: None,
13812    },
13813    Lint {
13814        label: "clippy::err_expect",
13815        description: r##"Checks for `.err().expect()` calls on the `Result` type."##,
13816        default_severity: Severity::Allow,
13817        warn_since: None,
13818        deny_since: None,
13819    },
13820    Lint {
13821        label: "clippy::error_impl_error",
13822        description: r##"Checks for types named `Error` that implement `Error`."##,
13823        default_severity: Severity::Allow,
13824        warn_since: None,
13825        deny_since: None,
13826    },
13827    Lint {
13828        label: "clippy::excessive_nesting",
13829        description: r##"Checks for blocks which are nested beyond a certain threshold.
13830
13831Note: Even though this lint is warn-by-default, it will only trigger if a maximum nesting level is defined in the clippy.toml file."##,
13832        default_severity: Severity::Allow,
13833        warn_since: None,
13834        deny_since: None,
13835    },
13836    Lint {
13837        label: "clippy::excessive_precision",
13838        description: r##"Checks for float literals with a precision greater
13839than that supported by the underlying type."##,
13840        default_severity: Severity::Allow,
13841        warn_since: None,
13842        deny_since: None,
13843    },
13844    Lint {
13845        label: "clippy::exhaustive_enums",
13846        description: r##"Warns on any exported `enum`s that are not tagged `#[non_exhaustive]`"##,
13847        default_severity: Severity::Allow,
13848        warn_since: None,
13849        deny_since: None,
13850    },
13851    Lint {
13852        label: "clippy::exhaustive_structs",
13853        description: r##"Warns on any exported `struct`s that are not tagged `#[non_exhaustive]`"##,
13854        default_severity: Severity::Allow,
13855        warn_since: None,
13856        deny_since: None,
13857    },
13858    Lint {
13859        label: "clippy::exit",
13860        description: r##"Detects calls to the `exit()` function which terminates the program."##,
13861        default_severity: Severity::Allow,
13862        warn_since: None,
13863        deny_since: None,
13864    },
13865    Lint {
13866        label: "clippy::expect_fun_call",
13867        description: r##"Checks for calls to `.expect(&format!(...))`, `.expect(foo(..))`,
13868etc., and suggests to use `unwrap_or_else` instead"##,
13869        default_severity: Severity::Allow,
13870        warn_since: None,
13871        deny_since: None,
13872    },
13873    Lint {
13874        label: "clippy::expect_used",
13875        description: r##"Checks for `.expect()` or `.expect_err()` calls on `Result`s and `.expect()` call on `Option`s."##,
13876        default_severity: Severity::Allow,
13877        warn_since: None,
13878        deny_since: None,
13879    },
13880    Lint {
13881        label: "clippy::expl_impl_clone_on_copy",
13882        description: r##"Checks for explicit `Clone` implementations for `Copy`
13883types."##,
13884        default_severity: Severity::Allow,
13885        warn_since: None,
13886        deny_since: None,
13887    },
13888    Lint {
13889        label: "clippy::explicit_auto_deref",
13890        description: r##"Checks for dereferencing expressions which would be covered by auto-deref."##,
13891        default_severity: Severity::Allow,
13892        warn_since: None,
13893        deny_since: None,
13894    },
13895    Lint {
13896        label: "clippy::explicit_counter_loop",
13897        description: r##"Checks `for` loops over slices with an explicit counter
13898and suggests the use of `.enumerate()`."##,
13899        default_severity: Severity::Allow,
13900        warn_since: None,
13901        deny_since: None,
13902    },
13903    Lint {
13904        label: "clippy::explicit_deref_methods",
13905        description: r##"Checks for explicit `deref()` or `deref_mut()` method calls."##,
13906        default_severity: Severity::Allow,
13907        warn_since: None,
13908        deny_since: None,
13909    },
13910    Lint {
13911        label: "clippy::explicit_into_iter_loop",
13912        description: r##"Checks for loops on `y.into_iter()` where `y` will do, and
13913suggests the latter."##,
13914        default_severity: Severity::Allow,
13915        warn_since: None,
13916        deny_since: None,
13917    },
13918    Lint {
13919        label: "clippy::explicit_iter_loop",
13920        description: r##"Checks for loops on `x.iter()` where `&x` will do, and
13921suggests the latter."##,
13922        default_severity: Severity::Allow,
13923        warn_since: None,
13924        deny_since: None,
13925    },
13926    Lint {
13927        label: "clippy::explicit_write",
13928        description: r##"Checks for usage of `write!()` / `writeln()!` which can be
13929replaced with `(e)print!()` / `(e)println!()`"##,
13930        default_severity: Severity::Allow,
13931        warn_since: None,
13932        deny_since: None,
13933    },
13934    Lint {
13935        label: "clippy::extend_from_slice",
13936        description: r##"Nothing. This lint has been deprecated"##,
13937        default_severity: Severity::Allow,
13938        warn_since: None,
13939        deny_since: None,
13940    },
13941    Lint {
13942        label: "clippy::extend_with_drain",
13943        description: r##"Checks for occurrences where one vector gets extended instead of append"##,
13944        default_severity: Severity::Allow,
13945        warn_since: None,
13946        deny_since: None,
13947    },
13948    Lint {
13949        label: "clippy::extra_unused_lifetimes",
13950        description: r##"Checks for lifetimes in generics that are never used
13951anywhere else."##,
13952        default_severity: Severity::Allow,
13953        warn_since: None,
13954        deny_since: None,
13955    },
13956    Lint {
13957        label: "clippy::extra_unused_type_parameters",
13958        description: r##"Checks for type parameters in generics that are never used anywhere else."##,
13959        default_severity: Severity::Allow,
13960        warn_since: None,
13961        deny_since: None,
13962    },
13963    Lint {
13964        label: "clippy::fallible_impl_from",
13965        description: r##"Checks for impls of `From<..>` that contain `panic!()` or `unwrap()`"##,
13966        default_severity: Severity::Allow,
13967        warn_since: None,
13968        deny_since: None,
13969    },
13970    Lint {
13971        label: "clippy::field_reassign_with_default",
13972        description: r##"Checks for immediate reassignment of fields initialized
13973with Default::default()."##,
13974        default_severity: Severity::Allow,
13975        warn_since: None,
13976        deny_since: None,
13977    },
13978    Lint {
13979        label: "clippy::field_scoped_visibility_modifiers",
13980        description: r##"Checks for usage of scoped visibility modifiers, like `pub(crate)`, on fields. These
13981make a field visible within a scope between public and private."##,
13982        default_severity: Severity::Allow,
13983        warn_since: None,
13984        deny_since: None,
13985    },
13986    Lint {
13987        label: "clippy::filetype_is_file",
13988        description: r##"Checks for `FileType::is_file()`."##,
13989        default_severity: Severity::Allow,
13990        warn_since: None,
13991        deny_since: None,
13992    },
13993    Lint {
13994        label: "clippy::filter_map_bool_then",
13995        description: r##"Checks for usage of `bool::then` in `Iterator::filter_map`."##,
13996        default_severity: Severity::Allow,
13997        warn_since: None,
13998        deny_since: None,
13999    },
14000    Lint {
14001        label: "clippy::filter_map_identity",
14002        description: r##"Checks for usage of `filter_map(|x| x)`."##,
14003        default_severity: Severity::Allow,
14004        warn_since: None,
14005        deny_since: None,
14006    },
14007    Lint {
14008        label: "clippy::filter_map_next",
14009        description: r##"Checks for usage of `_.filter_map(_).next()`."##,
14010        default_severity: Severity::Allow,
14011        warn_since: None,
14012        deny_since: None,
14013    },
14014    Lint {
14015        label: "clippy::filter_next",
14016        description: r##"Checks for usage of `_.filter(_).next()`."##,
14017        default_severity: Severity::Allow,
14018        warn_since: None,
14019        deny_since: None,
14020    },
14021    Lint {
14022        label: "clippy::flat_map_identity",
14023        description: r##"Checks for usage of `flat_map(|x| x)`."##,
14024        default_severity: Severity::Allow,
14025        warn_since: None,
14026        deny_since: None,
14027    },
14028    Lint {
14029        label: "clippy::flat_map_option",
14030        description: r##"Checks for usage of `Iterator::flat_map()` where `filter_map()` could be
14031used instead."##,
14032        default_severity: Severity::Allow,
14033        warn_since: None,
14034        deny_since: None,
14035    },
14036    Lint {
14037        label: "clippy::float_arithmetic",
14038        description: r##"Checks for float arithmetic."##,
14039        default_severity: Severity::Allow,
14040        warn_since: None,
14041        deny_since: None,
14042    },
14043    Lint {
14044        label: "clippy::float_cmp",
14045        description: r##"Checks for (in-)equality comparisons on floating-point
14046values (apart from zero), except in functions called `*eq*` (which probably
14047implement equality for a type involving floats)."##,
14048        default_severity: Severity::Allow,
14049        warn_since: None,
14050        deny_since: None,
14051    },
14052    Lint {
14053        label: "clippy::float_cmp_const",
14054        description: r##"Checks for (in-)equality comparisons on constant floating-point
14055values (apart from zero), except in functions called `*eq*` (which probably
14056implement equality for a type involving floats)."##,
14057        default_severity: Severity::Allow,
14058        warn_since: None,
14059        deny_since: None,
14060    },
14061    Lint {
14062        label: "clippy::float_equality_without_abs",
14063        description: r##"Checks for statements of the form `(a - b) < f32::EPSILON` or
14064`(a - b) < f64::EPSILON`. Notes the missing `.abs()`."##,
14065        default_severity: Severity::Allow,
14066        warn_since: None,
14067        deny_since: None,
14068    },
14069    Lint {
14070        label: "clippy::fn_address_comparisons",
14071        description: r##"Checks for comparisons with an address of a function item."##,
14072        default_severity: Severity::Allow,
14073        warn_since: None,
14074        deny_since: None,
14075    },
14076    Lint {
14077        label: "clippy::fn_params_excessive_bools",
14078        description: r##"Checks for excessive use of
14079bools in function definitions."##,
14080        default_severity: Severity::Allow,
14081        warn_since: None,
14082        deny_since: None,
14083    },
14084    Lint {
14085        label: "clippy::fn_to_numeric_cast",
14086        description: r##"Checks for casts of function pointers to something other than `usize`."##,
14087        default_severity: Severity::Allow,
14088        warn_since: None,
14089        deny_since: None,
14090    },
14091    Lint {
14092        label: "clippy::fn_to_numeric_cast_any",
14093        description: r##"Checks for casts of a function pointer to any integer type."##,
14094        default_severity: Severity::Allow,
14095        warn_since: None,
14096        deny_since: None,
14097    },
14098    Lint {
14099        label: "clippy::fn_to_numeric_cast_with_truncation",
14100        description: r##"Checks for casts of a function pointer to a numeric type not wide enough to
14101store an address."##,
14102        default_severity: Severity::Allow,
14103        warn_since: None,
14104        deny_since: None,
14105    },
14106    Lint {
14107        label: "clippy::for_kv_map",
14108        description: r##"Checks for iterating a map (`HashMap` or `BTreeMap`) and
14109ignoring either the keys or values."##,
14110        default_severity: Severity::Allow,
14111        warn_since: None,
14112        deny_since: None,
14113    },
14114    Lint {
14115        label: "clippy::forget_non_drop",
14116        description: r##"Checks for calls to `std::mem::forget` with a value that does not implement `Drop`."##,
14117        default_severity: Severity::Allow,
14118        warn_since: None,
14119        deny_since: None,
14120    },
14121    Lint {
14122        label: "clippy::format_collect",
14123        description: r##"Checks for usage of `.map(|_| format!(..)).collect::<String>()`."##,
14124        default_severity: Severity::Allow,
14125        warn_since: None,
14126        deny_since: None,
14127    },
14128    Lint {
14129        label: "clippy::format_in_format_args",
14130        description: r##"Detects `format!` within the arguments of another macro that does
14131formatting such as `format!` itself, `write!` or `println!`. Suggests
14132inlining the `format!` call."##,
14133        default_severity: Severity::Allow,
14134        warn_since: None,
14135        deny_since: None,
14136    },
14137    Lint {
14138        label: "clippy::format_push_string",
14139        description: r##"Detects cases where the result of a `format!` call is
14140appended to an existing `String`."##,
14141        default_severity: Severity::Allow,
14142        warn_since: None,
14143        deny_since: None,
14144    },
14145    Lint {
14146        label: "clippy::four_forward_slashes",
14147        description: r##"Checks for outer doc comments written with 4 forward slashes (`////`)."##,
14148        default_severity: Severity::Allow,
14149        warn_since: None,
14150        deny_since: None,
14151    },
14152    Lint {
14153        label: "clippy::from_iter_instead_of_collect",
14154        description: r##"Checks for `from_iter()` function calls on types that implement the `FromIterator`
14155trait."##,
14156        default_severity: Severity::Allow,
14157        warn_since: None,
14158        deny_since: None,
14159    },
14160    Lint {
14161        label: "clippy::from_over_into",
14162        description: r##"Searches for implementations of the `Into<..>` trait and suggests to implement `From<..>` instead."##,
14163        default_severity: Severity::Allow,
14164        warn_since: None,
14165        deny_since: None,
14166    },
14167    Lint {
14168        label: "clippy::from_raw_with_void_ptr",
14169        description: r##"Checks if we're passing a `c_void` raw pointer to `{Box,Rc,Arc,Weak}::from_raw(_)`"##,
14170        default_severity: Severity::Allow,
14171        warn_since: None,
14172        deny_since: None,
14173    },
14174    Lint {
14175        label: "clippy::from_str_radix_10",
14176        description: r##"Checks for function invocations of the form `primitive::from_str_radix(s, 10)`"##,
14177        default_severity: Severity::Allow,
14178        warn_since: None,
14179        deny_since: None,
14180    },
14181    Lint {
14182        label: "clippy::future_not_send",
14183        description: r##"This lint requires Future implementations returned from
14184functions and methods to implement the `Send` marker trait. It is mostly
14185used by library authors (public and internal) that target an audience where
14186multithreaded executors are likely to be used for running these Futures."##,
14187        default_severity: Severity::Allow,
14188        warn_since: None,
14189        deny_since: None,
14190    },
14191    Lint {
14192        label: "clippy::get_first",
14193        description: r##"Checks for usage of `x.get(0)` instead of
14194`x.first()` or `x.front()`."##,
14195        default_severity: Severity::Allow,
14196        warn_since: None,
14197        deny_since: None,
14198    },
14199    Lint {
14200        label: "clippy::get_last_with_len",
14201        description: r##"Checks for usage of `x.get(x.len() - 1)` instead of
14202`x.last()`."##,
14203        default_severity: Severity::Allow,
14204        warn_since: None,
14205        deny_since: None,
14206    },
14207    Lint {
14208        label: "clippy::get_unwrap",
14209        description: r##"Checks for usage of `.get().unwrap()` (or
14210`.get_mut().unwrap`) on a standard library type which implements `Index`"##,
14211        default_severity: Severity::Allow,
14212        warn_since: None,
14213        deny_since: None,
14214    },
14215    Lint {
14216        label: "clippy::host_endian_bytes",
14217        description: r##"Checks for the usage of the `to_ne_bytes` method and/or the function `from_ne_bytes`."##,
14218        default_severity: Severity::Allow,
14219        warn_since: None,
14220        deny_since: None,
14221    },
14222    Lint {
14223        label: "clippy::identity_op",
14224        description: r##"Checks for identity operations, e.g., `x + 0`."##,
14225        default_severity: Severity::Allow,
14226        warn_since: None,
14227        deny_since: None,
14228    },
14229    Lint {
14230        label: "clippy::if_let_mutex",
14231        description: r##"Checks for `Mutex::lock` calls in `if let` expression
14232with lock calls in any of the else blocks."##,
14233        default_severity: Severity::Allow,
14234        warn_since: None,
14235        deny_since: None,
14236    },
14237    Lint {
14238        label: "clippy::if_not_else",
14239        description: r##"Checks for usage of `!` or `!=` in an if condition with an
14240else branch."##,
14241        default_severity: Severity::Allow,
14242        warn_since: None,
14243        deny_since: None,
14244    },
14245    Lint {
14246        label: "clippy::if_same_then_else",
14247        description: r##"Checks for `if/else` with the same body as the *then* part
14248and the *else* part."##,
14249        default_severity: Severity::Allow,
14250        warn_since: None,
14251        deny_since: None,
14252    },
14253    Lint {
14254        label: "clippy::if_then_some_else_none",
14255        description: r##"Checks for if-else that could be written using either `bool::then` or `bool::then_some`."##,
14256        default_severity: Severity::Allow,
14257        warn_since: None,
14258        deny_since: None,
14259    },
14260    Lint {
14261        label: "clippy::ifs_same_cond",
14262        description: r##"Checks for consecutive `if`s with the same condition."##,
14263        default_severity: Severity::Allow,
14264        warn_since: None,
14265        deny_since: None,
14266    },
14267    Lint {
14268        label: "clippy::ignored_unit_patterns",
14269        description: r##"Checks for usage of `_` in patterns of type `()`."##,
14270        default_severity: Severity::Allow,
14271        warn_since: None,
14272        deny_since: None,
14273    },
14274    Lint {
14275        label: "clippy::impl_hash_borrow_with_str_and_bytes",
14276        description: r##"This lint is concerned with the semantics of `Borrow` and `Hash` for a
14277type that implements all three of `Hash`, `Borrow<str>` and `Borrow<[u8]>`
14278as it is impossible to satisfy the semantics of Borrow and `Hash` for
14279both `Borrow<str>` and `Borrow<[u8]>`."##,
14280        default_severity: Severity::Allow,
14281        warn_since: None,
14282        deny_since: None,
14283    },
14284    Lint {
14285        label: "clippy::impl_trait_in_params",
14286        description: r##"Lints when `impl Trait` is being used in a function's parameters."##,
14287        default_severity: Severity::Allow,
14288        warn_since: None,
14289        deny_since: None,
14290    },
14291    Lint {
14292        label: "clippy::implicit_clone",
14293        description: r##"Checks for the usage of `_.to_owned()`, `vec.to_vec()`, or similar when calling `_.clone()` would be clearer."##,
14294        default_severity: Severity::Allow,
14295        warn_since: None,
14296        deny_since: None,
14297    },
14298    Lint {
14299        label: "clippy::implicit_hasher",
14300        description: r##"Checks for public `impl` or `fn` missing generalization
14301over different hashers and implicitly defaulting to the default hashing
14302algorithm (`SipHash`)."##,
14303        default_severity: Severity::Allow,
14304        warn_since: None,
14305        deny_since: None,
14306    },
14307    Lint {
14308        label: "clippy::implicit_return",
14309        description: r##"Checks for missing return statements at the end of a block."##,
14310        default_severity: Severity::Allow,
14311        warn_since: None,
14312        deny_since: None,
14313    },
14314    Lint {
14315        label: "clippy::implicit_saturating_add",
14316        description: r##"Checks for implicit saturating addition."##,
14317        default_severity: Severity::Allow,
14318        warn_since: None,
14319        deny_since: None,
14320    },
14321    Lint {
14322        label: "clippy::implicit_saturating_sub",
14323        description: r##"Checks for implicit saturating subtraction."##,
14324        default_severity: Severity::Allow,
14325        warn_since: None,
14326        deny_since: None,
14327    },
14328    Lint {
14329        label: "clippy::implied_bounds_in_impls",
14330        description: r##"Looks for bounds in `impl Trait` in return position that are implied by other bounds.
14331This can happen when a trait is specified that another trait already has as a supertrait
14332(e.g. `fn() -> impl Deref + DerefMut<Target = i32>` has an unnecessary `Deref` bound,
14333because `Deref` is a supertrait of `DerefMut`)"##,
14334        default_severity: Severity::Allow,
14335        warn_since: None,
14336        deny_since: None,
14337    },
14338    Lint {
14339        label: "clippy::impossible_comparisons",
14340        description: r##"Checks for double comparisons that can never succeed"##,
14341        default_severity: Severity::Allow,
14342        warn_since: None,
14343        deny_since: None,
14344    },
14345    Lint {
14346        label: "clippy::imprecise_flops",
14347        description: r##"Looks for floating-point expressions that
14348can be expressed using built-in methods to improve accuracy
14349at the cost of performance."##,
14350        default_severity: Severity::Allow,
14351        warn_since: None,
14352        deny_since: None,
14353    },
14354    Lint {
14355        label: "clippy::incompatible_msrv",
14356        description: r##"This lint checks that no function newer than the defined MSRV (minimum
14357supported rust version) is used in the crate."##,
14358        default_severity: Severity::Allow,
14359        warn_since: None,
14360        deny_since: None,
14361    },
14362    Lint {
14363        label: "clippy::inconsistent_digit_grouping",
14364        description: r##"Warns if an integral or floating-point constant is
14365grouped inconsistently with underscores."##,
14366        default_severity: Severity::Allow,
14367        warn_since: None,
14368        deny_since: None,
14369    },
14370    Lint {
14371        label: "clippy::inconsistent_struct_constructor",
14372        description: r##"Checks for struct constructors where all fields are shorthand and
14373the order of the field init shorthand in the constructor is inconsistent
14374with the order in the struct definition."##,
14375        default_severity: Severity::Allow,
14376        warn_since: None,
14377        deny_since: None,
14378    },
14379    Lint {
14380        label: "clippy::index_refutable_slice",
14381        description: r##"The lint checks for slice bindings in patterns that are only used to
14382access individual slice values."##,
14383        default_severity: Severity::Allow,
14384        warn_since: None,
14385        deny_since: None,
14386    },
14387    Lint {
14388        label: "clippy::indexing_slicing",
14389        description: r##"Checks for usage of indexing or slicing. Arrays are special cases, this lint
14390does report on arrays if we can tell that slicing operations are in bounds and does not
14391lint on constant `usize` indexing on arrays because that is handled by rustc's `const_err` lint."##,
14392        default_severity: Severity::Allow,
14393        warn_since: None,
14394        deny_since: None,
14395    },
14396    Lint {
14397        label: "clippy::ineffective_bit_mask",
14398        description: r##"Checks for bit masks in comparisons which can be removed
14399without changing the outcome. The basic structure can be seen in the
14400following table:
14401
14402|Comparison| Bit Op   |Example     |equals |
14403|----------|----------|------------|-------|
14404|`>` / `<=`|`\\|` / `^`|`x \\| 2 > 3`|`x > 3`|
14405|`<` / `>=`|`\\|` / `^`|`x ^ 1 < 4` |`x < 4`|"##,
14406        default_severity: Severity::Allow,
14407        warn_since: None,
14408        deny_since: None,
14409    },
14410    Lint {
14411        label: "clippy::ineffective_open_options",
14412        description: r##"Checks if both `.write(true)` and `.append(true)` methods are called
14413on a same `OpenOptions`."##,
14414        default_severity: Severity::Allow,
14415        warn_since: None,
14416        deny_since: None,
14417    },
14418    Lint {
14419        label: "clippy::inefficient_to_string",
14420        description: r##"Checks for usage of `.to_string()` on an `&&T` where
14421`T` implements `ToString` directly (like `&&str` or `&&String`)."##,
14422        default_severity: Severity::Allow,
14423        warn_since: None,
14424        deny_since: None,
14425    },
14426    Lint {
14427        label: "clippy::infallible_destructuring_match",
14428        description: r##"Checks for matches being used to destructure a single-variant enum
14429or tuple struct where a `let` will suffice."##,
14430        default_severity: Severity::Allow,
14431        warn_since: None,
14432        deny_since: None,
14433    },
14434    Lint {
14435        label: "clippy::infinite_iter",
14436        description: r##"Checks for iteration that is guaranteed to be infinite."##,
14437        default_severity: Severity::Allow,
14438        warn_since: None,
14439        deny_since: None,
14440    },
14441    Lint {
14442        label: "clippy::infinite_loop",
14443        description: r##"Checks for infinite loops in a function where the return type is not `!`
14444and lint accordingly."##,
14445        default_severity: Severity::Allow,
14446        warn_since: None,
14447        deny_since: None,
14448    },
14449    Lint {
14450        label: "clippy::inherent_to_string",
14451        description: r##"Checks for the definition of inherent methods with a signature of `to_string(&self) -> String`."##,
14452        default_severity: Severity::Allow,
14453        warn_since: None,
14454        deny_since: None,
14455    },
14456    Lint {
14457        label: "clippy::inherent_to_string_shadow_display",
14458        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."##,
14459        default_severity: Severity::Allow,
14460        warn_since: None,
14461        deny_since: None,
14462    },
14463    Lint {
14464        label: "clippy::init_numbered_fields",
14465        description: r##"Checks for tuple structs initialized with field syntax.
14466It will however not lint if a base initializer is present.
14467The lint will also ignore code in macros."##,
14468        default_severity: Severity::Allow,
14469        warn_since: None,
14470        deny_since: None,
14471    },
14472    Lint {
14473        label: "clippy::inline_always",
14474        description: r##"Checks for items annotated with `#[inline(always)]`,
14475unless the annotated function is empty or simply panics."##,
14476        default_severity: Severity::Allow,
14477        warn_since: None,
14478        deny_since: None,
14479    },
14480    Lint {
14481        label: "clippy::inline_asm_x86_att_syntax",
14482        description: r##"Checks for usage of AT&T x86 assembly syntax."##,
14483        default_severity: Severity::Allow,
14484        warn_since: None,
14485        deny_since: None,
14486    },
14487    Lint {
14488        label: "clippy::inline_asm_x86_intel_syntax",
14489        description: r##"Checks for usage of Intel x86 assembly syntax."##,
14490        default_severity: Severity::Allow,
14491        warn_since: None,
14492        deny_since: None,
14493    },
14494    Lint {
14495        label: "clippy::inline_fn_without_body",
14496        description: r##"Checks for `#[inline]` on trait methods without bodies"##,
14497        default_severity: Severity::Allow,
14498        warn_since: None,
14499        deny_since: None,
14500    },
14501    Lint {
14502        label: "clippy::inspect_for_each",
14503        description: r##"Checks for usage of `inspect().for_each()`."##,
14504        default_severity: Severity::Allow,
14505        warn_since: None,
14506        deny_since: None,
14507    },
14508    Lint {
14509        label: "clippy::int_plus_one",
14510        description: r##"Checks for usage of `x >= y + 1` or `x - 1 >= y` (and `<=`) in a block"##,
14511        default_severity: Severity::Allow,
14512        warn_since: None,
14513        deny_since: None,
14514    },
14515    Lint {
14516        label: "clippy::integer_division",
14517        description: r##"Checks for division of integers"##,
14518        default_severity: Severity::Allow,
14519        warn_since: None,
14520        deny_since: None,
14521    },
14522    Lint {
14523        label: "clippy::integer_division_remainder_used",
14524        description: r##"Checks for the usage of division (`/`) and remainder (`%`) operations
14525when performed on any integer types using the default `Div` and `Rem` trait implementations."##,
14526        default_severity: Severity::Allow,
14527        warn_since: None,
14528        deny_since: None,
14529    },
14530    Lint {
14531        label: "clippy::into_iter_on_ref",
14532        description: r##"Checks for `into_iter` calls on references which should be replaced by `iter`
14533or `iter_mut`."##,
14534        default_severity: Severity::Allow,
14535        warn_since: None,
14536        deny_since: None,
14537    },
14538    Lint {
14539        label: "clippy::into_iter_without_iter",
14540        description: r##"This is the opposite of the `iter_without_into_iter` lint.
14541It looks for `IntoIterator for (&|&mut) Type` implementations without an inherent `iter` or `iter_mut` method
14542on the type or on any of the types in its `Deref` chain."##,
14543        default_severity: Severity::Allow,
14544        warn_since: None,
14545        deny_since: None,
14546    },
14547    Lint {
14548        label: "clippy::invalid_null_ptr_usage",
14549        description: r##"This lint checks for invalid usages of `ptr::null`."##,
14550        default_severity: Severity::Allow,
14551        warn_since: None,
14552        deny_since: None,
14553    },
14554    Lint {
14555        label: "clippy::invalid_regex",
14556        description: r##"Checks [regex](https://crates.io/crates/regex) creation
14557(with `Regex::new`, `RegexBuilder::new`, or `RegexSet::new`) for correct
14558regex syntax."##,
14559        default_severity: Severity::Allow,
14560        warn_since: None,
14561        deny_since: None,
14562    },
14563    Lint {
14564        label: "clippy::invalid_upcast_comparisons",
14565        description: r##"Checks for comparisons where the relation is always either
14566true or false, but where one side has been upcast so that the comparison is
14567necessary. Only integer types are checked."##,
14568        default_severity: Severity::Allow,
14569        warn_since: None,
14570        deny_since: None,
14571    },
14572    Lint {
14573        label: "clippy::inverted_saturating_sub",
14574        description: r##"Checks for comparisons between integers, followed by subtracting the greater value from the
14575lower one."##,
14576        default_severity: Severity::Allow,
14577        warn_since: None,
14578        deny_since: None,
14579    },
14580    Lint {
14581        label: "clippy::invisible_characters",
14582        description: r##"Checks for invisible Unicode characters in the code."##,
14583        default_severity: Severity::Allow,
14584        warn_since: None,
14585        deny_since: None,
14586    },
14587    Lint {
14588        label: "clippy::is_digit_ascii_radix",
14589        description: r##"Finds usages of [`char::is_digit`](https://doc.rust-lang.org/stable/std/primitive.char.html#method.is_digit) that
14590can be replaced with [`is_ascii_digit`](https://doc.rust-lang.org/stable/std/primitive.char.html#method.is_ascii_digit) or
14591[`is_ascii_hexdigit`](https://doc.rust-lang.org/stable/std/primitive.char.html#method.is_ascii_hexdigit)."##,
14592        default_severity: Severity::Allow,
14593        warn_since: None,
14594        deny_since: None,
14595    },
14596    Lint {
14597        label: "clippy::items_after_statements",
14598        description: r##"Checks for items declared after some statement in a block."##,
14599        default_severity: Severity::Allow,
14600        warn_since: None,
14601        deny_since: None,
14602    },
14603    Lint {
14604        label: "clippy::items_after_test_module",
14605        description: r##"Triggers if an item is declared after the testing module marked with `#[cfg(test)]`."##,
14606        default_severity: Severity::Allow,
14607        warn_since: None,
14608        deny_since: None,
14609    },
14610    Lint {
14611        label: "clippy::iter_cloned_collect",
14612        description: r##"Checks for the use of `.cloned().collect()` on slice to
14613create a `Vec`."##,
14614        default_severity: Severity::Allow,
14615        warn_since: None,
14616        deny_since: None,
14617    },
14618    Lint {
14619        label: "clippy::iter_count",
14620        description: r##"Checks for the use of `.iter().count()`."##,
14621        default_severity: Severity::Allow,
14622        warn_since: None,
14623        deny_since: None,
14624    },
14625    Lint {
14626        label: "clippy::iter_filter_is_ok",
14627        description: r##"Checks for usage of `.filter(Result::is_ok)` that may be replaced with a `.flatten()` call.
14628This lint will require additional changes to the follow-up calls as it affects the type."##,
14629        default_severity: Severity::Allow,
14630        warn_since: None,
14631        deny_since: None,
14632    },
14633    Lint {
14634        label: "clippy::iter_filter_is_some",
14635        description: r##"Checks for usage of `.filter(Option::is_some)` that may be replaced with a `.flatten()` call.
14636This lint will require additional changes to the follow-up calls as it affects the type."##,
14637        default_severity: Severity::Allow,
14638        warn_since: None,
14639        deny_since: None,
14640    },
14641    Lint {
14642        label: "clippy::iter_kv_map",
14643        description: r##"Checks for iterating a map (`HashMap` or `BTreeMap`) and
14644ignoring either the keys or values."##,
14645        default_severity: Severity::Allow,
14646        warn_since: None,
14647        deny_since: None,
14648    },
14649    Lint {
14650        label: "clippy::iter_next_loop",
14651        description: r##"Checks for loops on `x.next()`."##,
14652        default_severity: Severity::Allow,
14653        warn_since: None,
14654        deny_since: None,
14655    },
14656    Lint {
14657        label: "clippy::iter_next_slice",
14658        description: r##"Checks for usage of `iter().next()` on a Slice or an Array"##,
14659        default_severity: Severity::Allow,
14660        warn_since: None,
14661        deny_since: None,
14662    },
14663    Lint {
14664        label: "clippy::iter_not_returning_iterator",
14665        description: r##"Detects methods named `iter` or `iter_mut` that do not have a return type that implements `Iterator`."##,
14666        default_severity: Severity::Allow,
14667        warn_since: None,
14668        deny_since: None,
14669    },
14670    Lint {
14671        label: "clippy::iter_nth",
14672        description: r##"Checks for usage of `.iter().nth()`/`.iter_mut().nth()` on standard library types that have
14673equivalent `.get()`/`.get_mut()` methods."##,
14674        default_severity: Severity::Allow,
14675        warn_since: None,
14676        deny_since: None,
14677    },
14678    Lint {
14679        label: "clippy::iter_nth_zero",
14680        description: r##"Checks for the use of `iter.nth(0)`."##,
14681        default_severity: Severity::Allow,
14682        warn_since: None,
14683        deny_since: None,
14684    },
14685    Lint {
14686        label: "clippy::iter_on_empty_collections",
14687        description: r##"Checks for calls to `iter`, `iter_mut` or `into_iter` on empty collections"##,
14688        default_severity: Severity::Allow,
14689        warn_since: None,
14690        deny_since: None,
14691    },
14692    Lint {
14693        label: "clippy::iter_on_single_items",
14694        description: r##"Checks for calls to `iter`, `iter_mut` or `into_iter` on collections containing a single item"##,
14695        default_severity: Severity::Allow,
14696        warn_since: None,
14697        deny_since: None,
14698    },
14699    Lint {
14700        label: "clippy::iter_out_of_bounds",
14701        description: r##"Looks for iterator combinator calls such as `.take(x)` or `.skip(x)`
14702where `x` is greater than the amount of items that an iterator will produce."##,
14703        default_severity: Severity::Allow,
14704        warn_since: None,
14705        deny_since: None,
14706    },
14707    Lint {
14708        label: "clippy::iter_over_hash_type",
14709        description: r##"This is a restriction lint which prevents the use of hash types (i.e., `HashSet` and `HashMap`) in for loops."##,
14710        default_severity: Severity::Allow,
14711        warn_since: None,
14712        deny_since: None,
14713    },
14714    Lint {
14715        label: "clippy::iter_overeager_cloned",
14716        description: r##"Checks for usage of `_.cloned().<func>()` where call to `.cloned()` can be postponed."##,
14717        default_severity: Severity::Allow,
14718        warn_since: None,
14719        deny_since: None,
14720    },
14721    Lint {
14722        label: "clippy::iter_skip_next",
14723        description: r##"Checks for usage of `.skip(x).next()` on iterators."##,
14724        default_severity: Severity::Allow,
14725        warn_since: None,
14726        deny_since: None,
14727    },
14728    Lint {
14729        label: "clippy::iter_skip_zero",
14730        description: r##"Checks for usage of `.skip(0)` on iterators."##,
14731        default_severity: Severity::Allow,
14732        warn_since: None,
14733        deny_since: None,
14734    },
14735    Lint {
14736        label: "clippy::iter_with_drain",
14737        description: r##"Checks for usage of `.drain(..)` on `Vec` and `VecDeque` for iteration."##,
14738        default_severity: Severity::Allow,
14739        warn_since: None,
14740        deny_since: None,
14741    },
14742    Lint {
14743        label: "clippy::iter_without_into_iter",
14744        description: r##"Looks for `iter` and `iter_mut` methods without an associated `IntoIterator for (&|&mut) Type` implementation."##,
14745        default_severity: Severity::Allow,
14746        warn_since: None,
14747        deny_since: None,
14748    },
14749    Lint {
14750        label: "clippy::iterator_step_by_zero",
14751        description: r##"Checks for calling `.step_by(0)` on iterators which panics."##,
14752        default_severity: Severity::Allow,
14753        warn_since: None,
14754        deny_since: None,
14755    },
14756    Lint {
14757        label: "clippy::join_absolute_paths",
14758        description: r##"Checks for calls to `Path::join` that start with a path separator (`\\\\` or `/`)."##,
14759        default_severity: Severity::Allow,
14760        warn_since: None,
14761        deny_since: None,
14762    },
14763    Lint {
14764        label: "clippy::just_underscores_and_digits",
14765        description: r##"Checks if you have variables whose name consists of just
14766underscores and digits."##,
14767        default_severity: Severity::Allow,
14768        warn_since: None,
14769        deny_since: None,
14770    },
14771    Lint {
14772        label: "clippy::large_const_arrays",
14773        description: r##"Checks for large `const` arrays that should
14774be defined as `static` instead."##,
14775        default_severity: Severity::Allow,
14776        warn_since: None,
14777        deny_since: None,
14778    },
14779    Lint {
14780        label: "clippy::large_digit_groups",
14781        description: r##"Warns if the digits of an integral or floating-point
14782constant are grouped into groups that
14783are too large."##,
14784        default_severity: Severity::Allow,
14785        warn_since: None,
14786        deny_since: None,
14787    },
14788    Lint {
14789        label: "clippy::large_enum_variant",
14790        description: r##"Checks for large size differences between variants on
14791`enum`s."##,
14792        default_severity: Severity::Allow,
14793        warn_since: None,
14794        deny_since: None,
14795    },
14796    Lint {
14797        label: "clippy::large_futures",
14798        description: r##"It checks for the size of a `Future` created by `async fn` or `async {}`."##,
14799        default_severity: Severity::Allow,
14800        warn_since: None,
14801        deny_since: None,
14802    },
14803    Lint {
14804        label: "clippy::large_include_file",
14805        description: r##"Checks for the inclusion of large files via `include_bytes!()`
14806or `include_str!()`."##,
14807        default_severity: Severity::Allow,
14808        warn_since: None,
14809        deny_since: None,
14810    },
14811    Lint {
14812        label: "clippy::large_stack_arrays",
14813        description: r##"Checks for local arrays that may be too large."##,
14814        default_severity: Severity::Allow,
14815        warn_since: None,
14816        deny_since: None,
14817    },
14818    Lint {
14819        label: "clippy::large_stack_frames",
14820        description: r##"Checks for functions that use a lot of stack space.
14821
14822This often happens when constructing a large type, such as an array with a lot of elements,
14823or constructing *many* smaller-but-still-large structs, or copying around a lot of large types.
14824
14825This lint is a more general version of [`large_stack_arrays`](https://rust-lang.github.io/rust-clippy/master/#large_stack_arrays)
14826that is intended to look at functions as a whole instead of only individual array expressions inside of a function."##,
14827        default_severity: Severity::Allow,
14828        warn_since: None,
14829        deny_since: None,
14830    },
14831    Lint {
14832        label: "clippy::large_types_passed_by_value",
14833        description: r##"Checks for functions taking arguments by value, where
14834the argument type is `Copy` and large enough to be worth considering
14835passing by reference. Does not trigger if the function is being exported,
14836because that might induce API breakage, if the parameter is declared as mutable,
14837or if the argument is a `self`."##,
14838        default_severity: Severity::Allow,
14839        warn_since: None,
14840        deny_since: None,
14841    },
14842    Lint {
14843        label: "clippy::legacy_numeric_constants",
14844        description: r##"Checks for usage of `<integer>::max_value()`, `std::<integer>::MAX`,
14845`std::<float>::EPSILON`, etc."##,
14846        default_severity: Severity::Allow,
14847        warn_since: None,
14848        deny_since: None,
14849    },
14850    Lint {
14851        label: "clippy::len_without_is_empty",
14852        description: r##"Checks for items that implement `.len()` but not
14853`.is_empty()`."##,
14854        default_severity: Severity::Allow,
14855        warn_since: None,
14856        deny_since: None,
14857    },
14858    Lint {
14859        label: "clippy::len_zero",
14860        description: r##"Checks for getting the length of something via `.len()`
14861just to compare to zero, and suggests using `.is_empty()` where applicable."##,
14862        default_severity: Severity::Allow,
14863        warn_since: None,
14864        deny_since: None,
14865    },
14866    Lint {
14867        label: "clippy::let_and_return",
14868        description: r##"Checks for `let`-bindings, which are subsequently
14869returned."##,
14870        default_severity: Severity::Allow,
14871        warn_since: None,
14872        deny_since: None,
14873    },
14874    Lint {
14875        label: "clippy::let_underscore_future",
14876        description: r##"Checks for `let _ = <expr>` where the resulting type of expr implements `Future`"##,
14877        default_severity: Severity::Allow,
14878        warn_since: None,
14879        deny_since: None,
14880    },
14881    Lint {
14882        label: "clippy::let_underscore_lock",
14883        description: r##"Checks for `let _ = sync_lock`. This supports `mutex` and `rwlock` in
14884`parking_lot`. For `std` locks see the `rustc` lint
14885[`let_underscore_lock`](https://doc.rust-lang.org/nightly/rustc/lints/listing/deny-by-default.html#let-underscore-lock)"##,
14886        default_severity: Severity::Allow,
14887        warn_since: None,
14888        deny_since: None,
14889    },
14890    Lint {
14891        label: "clippy::let_underscore_must_use",
14892        description: r##"Checks for `let _ = <expr>` where expr is `#[must_use]`"##,
14893        default_severity: Severity::Allow,
14894        warn_since: None,
14895        deny_since: None,
14896    },
14897    Lint {
14898        label: "clippy::let_underscore_untyped",
14899        description: r##"Checks for `let _ = <expr>` without a type annotation, and suggests to either provide one,
14900or remove the `let` keyword altogether."##,
14901        default_severity: Severity::Allow,
14902        warn_since: None,
14903        deny_since: None,
14904    },
14905    Lint {
14906        label: "clippy::let_unit_value",
14907        description: r##"Checks for binding a unit value."##,
14908        default_severity: Severity::Allow,
14909        warn_since: None,
14910        deny_since: None,
14911    },
14912    Lint {
14913        label: "clippy::let_with_type_underscore",
14914        description: r##"Detects when a variable is declared with an explicit type of `_`."##,
14915        default_severity: Severity::Allow,
14916        warn_since: None,
14917        deny_since: None,
14918    },
14919    Lint {
14920        label: "clippy::lines_filter_map_ok",
14921        description: r##"Checks for usage of `lines.filter_map(Result::ok)` or `lines.flat_map(Result::ok)`
14922when `lines` has type `std::io::Lines`."##,
14923        default_severity: Severity::Allow,
14924        warn_since: None,
14925        deny_since: None,
14926    },
14927    Lint {
14928        label: "clippy::linkedlist",
14929        description: r##"Checks for usage of any `LinkedList`, suggesting to use a
14930`Vec` or a `VecDeque` (formerly called `RingBuf`)."##,
14931        default_severity: Severity::Allow,
14932        warn_since: None,
14933        deny_since: None,
14934    },
14935    Lint {
14936        label: "clippy::lint_groups_priority",
14937        description: r##"Checks for lint groups with the same priority as lints in the `Cargo.toml`
14938[`[lints]` table](https://doc.rust-lang.org/cargo/reference/manifest.html#the-lints-section).
14939
14940This lint will be removed once [cargo#12918](https://github.com/rust-lang/cargo/issues/12918)
14941is resolved."##,
14942        default_severity: Severity::Allow,
14943        warn_since: None,
14944        deny_since: None,
14945    },
14946    Lint {
14947        label: "clippy::little_endian_bytes",
14948        description: r##"Checks for the usage of the `to_le_bytes` method and/or the function `from_le_bytes`."##,
14949        default_severity: Severity::Allow,
14950        warn_since: None,
14951        deny_since: None,
14952    },
14953    Lint {
14954        label: "clippy::lossy_float_literal",
14955        description: r##"Checks for whole number float literals that
14956cannot be represented as the underlying type without loss."##,
14957        default_severity: Severity::Allow,
14958        warn_since: None,
14959        deny_since: None,
14960    },
14961    Lint {
14962        label: "clippy::macro_metavars_in_unsafe",
14963        description: r##"Looks for macros that expand metavariables in an unsafe block."##,
14964        default_severity: Severity::Allow,
14965        warn_since: None,
14966        deny_since: None,
14967    },
14968    Lint {
14969        label: "clippy::macro_use_imports",
14970        description: r##"Checks for `#[macro_use] use...`."##,
14971        default_severity: Severity::Allow,
14972        warn_since: None,
14973        deny_since: None,
14974    },
14975    Lint {
14976        label: "clippy::main_recursion",
14977        description: r##"Checks for recursion using the entrypoint."##,
14978        default_severity: Severity::Allow,
14979        warn_since: None,
14980        deny_since: None,
14981    },
14982    Lint {
14983        label: "clippy::manual_assert",
14984        description: r##"Detects `if`-then-`panic!` that can be replaced with `assert!`."##,
14985        default_severity: Severity::Allow,
14986        warn_since: None,
14987        deny_since: None,
14988    },
14989    Lint {
14990        label: "clippy::manual_async_fn",
14991        description: r##"It checks for manual implementations of `async` functions."##,
14992        default_severity: Severity::Allow,
14993        warn_since: None,
14994        deny_since: None,
14995    },
14996    Lint {
14997        label: "clippy::manual_bits",
14998        description: r##"Checks for usage of `size_of::<T>() * 8` when
14999`T::BITS` is available."##,
15000        default_severity: Severity::Allow,
15001        warn_since: None,
15002        deny_since: None,
15003    },
15004    Lint {
15005        label: "clippy::manual_c_str_literals",
15006        description: r##"Checks for the manual creation of C strings (a string with a `NUL` byte at the end), either
15007through one of the `CStr` constructor functions, or more plainly by calling `.as_ptr()`
15008on a (byte) string literal with a hardcoded `\\0` byte at the end."##,
15009        default_severity: Severity::Allow,
15010        warn_since: None,
15011        deny_since: None,
15012    },
15013    Lint {
15014        label: "clippy::manual_clamp",
15015        description: r##"Identifies good opportunities for a clamp function from std or core, and suggests using it."##,
15016        default_severity: Severity::Allow,
15017        warn_since: None,
15018        deny_since: None,
15019    },
15020    Lint {
15021        label: "clippy::manual_div_ceil",
15022        description: r##"Checks for an expression like `(x + (y - 1)) / y` which is a common manual reimplementation
15023of `x.div_ceil(y)`."##,
15024        default_severity: Severity::Allow,
15025        warn_since: None,
15026        deny_since: None,
15027    },
15028    Lint {
15029        label: "clippy::manual_filter",
15030        description: r##"Checks for usage of `match` which could be implemented using `filter`"##,
15031        default_severity: Severity::Allow,
15032        warn_since: None,
15033        deny_since: None,
15034    },
15035    Lint {
15036        label: "clippy::manual_filter_map",
15037        description: r##"Checks for usage of `_.filter(_).map(_)` that can be written more simply
15038as `filter_map(_)`."##,
15039        default_severity: Severity::Allow,
15040        warn_since: None,
15041        deny_since: None,
15042    },
15043    Lint {
15044        label: "clippy::manual_find",
15045        description: r##"Checks for manual implementations of Iterator::find"##,
15046        default_severity: Severity::Allow,
15047        warn_since: None,
15048        deny_since: None,
15049    },
15050    Lint {
15051        label: "clippy::manual_find_map",
15052        description: r##"Checks for usage of `_.find(_).map(_)` that can be written more simply
15053as `find_map(_)`."##,
15054        default_severity: Severity::Allow,
15055        warn_since: None,
15056        deny_since: None,
15057    },
15058    Lint {
15059        label: "clippy::manual_flatten",
15060        description: r##"Checks for unnecessary `if let` usage in a for loop
15061where only the `Some` or `Ok` variant of the iterator element is used."##,
15062        default_severity: Severity::Allow,
15063        warn_since: None,
15064        deny_since: None,
15065    },
15066    Lint {
15067        label: "clippy::manual_hash_one",
15068        description: r##"Checks for cases where [`BuildHasher::hash_one`] can be used.
15069
15070[`BuildHasher::hash_one`]: https://doc.rust-lang.org/std/hash/trait.BuildHasher.html#method.hash_one"##,
15071        default_severity: Severity::Allow,
15072        warn_since: None,
15073        deny_since: None,
15074    },
15075    Lint {
15076        label: "clippy::manual_inspect",
15077        description: r##"Checks for uses of `map` which return the original item."##,
15078        default_severity: Severity::Allow,
15079        warn_since: None,
15080        deny_since: None,
15081    },
15082    Lint {
15083        label: "clippy::manual_instant_elapsed",
15084        description: r##"Lints subtraction between `Instant::now()` and another `Instant`."##,
15085        default_severity: Severity::Allow,
15086        warn_since: None,
15087        deny_since: None,
15088    },
15089    Lint {
15090        label: "clippy::manual_is_ascii_check",
15091        description: r##"Suggests to use dedicated built-in methods,
15092`is_ascii_(lowercase|uppercase|digit|hexdigit)` for checking on corresponding
15093ascii range"##,
15094        default_severity: Severity::Allow,
15095        warn_since: None,
15096        deny_since: None,
15097    },
15098    Lint {
15099        label: "clippy::manual_is_finite",
15100        description: r##"Checks for manual `is_finite` reimplementations
15101(i.e., `x != <float>::INFINITY && x != <float>::NEG_INFINITY`)."##,
15102        default_severity: Severity::Allow,
15103        warn_since: None,
15104        deny_since: None,
15105    },
15106    Lint {
15107        label: "clippy::manual_is_infinite",
15108        description: r##"Checks for manual `is_infinite` reimplementations
15109(i.e., `x == <float>::INFINITY || x == <float>::NEG_INFINITY`)."##,
15110        default_severity: Severity::Allow,
15111        warn_since: None,
15112        deny_since: None,
15113    },
15114    Lint {
15115        label: "clippy::manual_is_power_of_two",
15116        description: r##"Checks for expressions like `x.count_ones() == 1` or `x & (x - 1) == 0`, with x and unsigned integer, which are manual
15117reimplementations of `x.is_power_of_two()`."##,
15118        default_severity: Severity::Allow,
15119        warn_since: None,
15120        deny_since: None,
15121    },
15122    Lint {
15123        label: "clippy::manual_is_variant_and",
15124        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."##,
15125        default_severity: Severity::Allow,
15126        warn_since: None,
15127        deny_since: None,
15128    },
15129    Lint {
15130        label: "clippy::manual_let_else",
15131        description: r##"Warn of cases where `let...else` could be used"##,
15132        default_severity: Severity::Allow,
15133        warn_since: None,
15134        deny_since: None,
15135    },
15136    Lint {
15137        label: "clippy::manual_main_separator_str",
15138        description: r##"Checks for references on `std::path::MAIN_SEPARATOR.to_string()` used
15139to build a `&str`."##,
15140        default_severity: Severity::Allow,
15141        warn_since: None,
15142        deny_since: None,
15143    },
15144    Lint {
15145        label: "clippy::manual_map",
15146        description: r##"Checks for usage of `match` which could be implemented using `map`"##,
15147        default_severity: Severity::Allow,
15148        warn_since: None,
15149        deny_since: None,
15150    },
15151    Lint {
15152        label: "clippy::manual_memcpy",
15153        description: r##"Checks for for-loops that manually copy items between
15154slices that could be optimized by having a memcpy."##,
15155        default_severity: Severity::Allow,
15156        warn_since: None,
15157        deny_since: None,
15158    },
15159    Lint {
15160        label: "clippy::manual_next_back",
15161        description: r##"Checks for `.rev().next()` on a `DoubleEndedIterator`"##,
15162        default_severity: Severity::Allow,
15163        warn_since: None,
15164        deny_since: None,
15165    },
15166    Lint {
15167        label: "clippy::manual_non_exhaustive",
15168        description: r##"Checks for manual implementations of the non-exhaustive pattern."##,
15169        default_severity: Severity::Allow,
15170        warn_since: None,
15171        deny_since: None,
15172    },
15173    Lint {
15174        label: "clippy::manual_ok_or",
15175        description: r##"Finds patterns that reimplement `Option::ok_or`."##,
15176        default_severity: Severity::Allow,
15177        warn_since: None,
15178        deny_since: None,
15179    },
15180    Lint {
15181        label: "clippy::manual_pattern_char_comparison",
15182        description: r##"Checks for manual `char` comparison in string patterns"##,
15183        default_severity: Severity::Allow,
15184        warn_since: None,
15185        deny_since: None,
15186    },
15187    Lint {
15188        label: "clippy::manual_range_contains",
15189        description: r##"Checks for expressions like `x >= 3 && x < 8` that could
15190be more readably expressed as `(3..8).contains(x)`."##,
15191        default_severity: Severity::Allow,
15192        warn_since: None,
15193        deny_since: None,
15194    },
15195    Lint {
15196        label: "clippy::manual_range_patterns",
15197        description: r##"Looks for combined OR patterns that are all contained in a specific range,
15198e.g. `6 | 4 | 5 | 9 | 7 | 8` can be rewritten as `4..=9`."##,
15199        default_severity: Severity::Allow,
15200        warn_since: None,
15201        deny_since: None,
15202    },
15203    Lint {
15204        label: "clippy::manual_rem_euclid",
15205        description: r##"Checks for an expression like `((x % 4) + 4) % 4` which is a common manual reimplementation
15206of `x.rem_euclid(4)`."##,
15207        default_severity: Severity::Allow,
15208        warn_since: None,
15209        deny_since: None,
15210    },
15211    Lint {
15212        label: "clippy::manual_retain",
15213        description: r##"Checks for code to be replaced by `.retain()`."##,
15214        default_severity: Severity::Allow,
15215        warn_since: None,
15216        deny_since: None,
15217    },
15218    Lint {
15219        label: "clippy::manual_rotate",
15220        description: r##"It detects manual bit rotations that could be rewritten using standard
15221functions `rotate_left` or `rotate_right`."##,
15222        default_severity: Severity::Allow,
15223        warn_since: None,
15224        deny_since: None,
15225    },
15226    Lint {
15227        label: "clippy::manual_saturating_arithmetic",
15228        description: r##"Checks for `.checked_add/sub(x).unwrap_or(MAX/MIN)`."##,
15229        default_severity: Severity::Allow,
15230        warn_since: None,
15231        deny_since: None,
15232    },
15233    Lint {
15234        label: "clippy::manual_slice_size_calculation",
15235        description: r##"When `a` is `&[T]`, detect `a.len() * size_of::<T>()` and suggest `size_of_val(a)`
15236instead."##,
15237        default_severity: Severity::Allow,
15238        warn_since: None,
15239        deny_since: None,
15240    },
15241    Lint {
15242        label: "clippy::manual_split_once",
15243        description: r##"Checks for usage of `str::splitn(2, _)`"##,
15244        default_severity: Severity::Allow,
15245        warn_since: None,
15246        deny_since: None,
15247    },
15248    Lint {
15249        label: "clippy::manual_str_repeat",
15250        description: r##"Checks for manual implementations of `str::repeat`"##,
15251        default_severity: Severity::Allow,
15252        warn_since: None,
15253        deny_since: None,
15254    },
15255    Lint {
15256        label: "clippy::manual_string_new",
15257        description: r##"Checks for usage of `` to create a `String`, such as `.to_string()`, `.to_owned()`,
15258`String::from()` and others."##,
15259        default_severity: Severity::Allow,
15260        warn_since: None,
15261        deny_since: None,
15262    },
15263    Lint {
15264        label: "clippy::manual_strip",
15265        description: r##"Suggests using `strip_{prefix,suffix}` over `str::{starts,ends}_with` and slicing using
15266the pattern's length."##,
15267        default_severity: Severity::Allow,
15268        warn_since: None,
15269        deny_since: None,
15270    },
15271    Lint {
15272        label: "clippy::manual_swap",
15273        description: r##"Checks for manual swapping.
15274
15275Note that the lint will not be emitted in const blocks, as the suggestion would not be applicable."##,
15276        default_severity: Severity::Allow,
15277        warn_since: None,
15278        deny_since: None,
15279    },
15280    Lint {
15281        label: "clippy::manual_try_fold",
15282        description: r##"Checks for usage of `Iterator::fold` with a type that implements `Try`."##,
15283        default_severity: Severity::Allow,
15284        warn_since: None,
15285        deny_since: None,
15286    },
15287    Lint {
15288        label: "clippy::manual_unwrap_or",
15289        description: r##"Finds patterns that reimplement `Option::unwrap_or` or `Result::unwrap_or`."##,
15290        default_severity: Severity::Allow,
15291        warn_since: None,
15292        deny_since: None,
15293    },
15294    Lint {
15295        label: "clippy::manual_unwrap_or_default",
15296        description: r##"Checks if a `match` or `if let` expression can be simplified using
15297`.unwrap_or_default()`."##,
15298        default_severity: Severity::Allow,
15299        warn_since: None,
15300        deny_since: None,
15301    },
15302    Lint {
15303        label: "clippy::manual_while_let_some",
15304        description: r##"Looks for loops that check for emptiness of a `Vec` in the condition and pop an element
15305in the body as a separate operation."##,
15306        default_severity: Severity::Allow,
15307        warn_since: None,
15308        deny_since: None,
15309    },
15310    Lint {
15311        label: "clippy::many_single_char_names",
15312        description: r##"Checks for too many variables whose name consists of a
15313single character."##,
15314        default_severity: Severity::Allow,
15315        warn_since: None,
15316        deny_since: None,
15317    },
15318    Lint {
15319        label: "clippy::map_clone",
15320        description: r##"Checks for usage of `map(|x| x.clone())` or
15321dereferencing closures for `Copy` types, on `Iterator` or `Option`,
15322and suggests `cloned()` or `copied()` instead"##,
15323        default_severity: Severity::Allow,
15324        warn_since: None,
15325        deny_since: None,
15326    },
15327    Lint {
15328        label: "clippy::map_collect_result_unit",
15329        description: r##"Checks for usage of `_.map(_).collect::<Result<(), _>()`."##,
15330        default_severity: Severity::Allow,
15331        warn_since: None,
15332        deny_since: None,
15333    },
15334    Lint {
15335        label: "clippy::map_entry",
15336        description: r##"Checks for usage of `contains_key` + `insert` on `HashMap`
15337or `BTreeMap`."##,
15338        default_severity: Severity::Allow,
15339        warn_since: None,
15340        deny_since: None,
15341    },
15342    Lint {
15343        label: "clippy::map_err_ignore",
15344        description: r##"Checks for instances of `map_err(|_| Some::Enum)`"##,
15345        default_severity: Severity::Allow,
15346        warn_since: None,
15347        deny_since: None,
15348    },
15349    Lint {
15350        label: "clippy::map_flatten",
15351        description: r##"Checks for usage of `_.map(_).flatten(_)` on `Iterator` and `Option`"##,
15352        default_severity: Severity::Allow,
15353        warn_since: None,
15354        deny_since: None,
15355    },
15356    Lint {
15357        label: "clippy::map_identity",
15358        description: r##"Checks for instances of `map(f)` where `f` is the identity function."##,
15359        default_severity: Severity::Allow,
15360        warn_since: None,
15361        deny_since: None,
15362    },
15363    Lint {
15364        label: "clippy::map_unwrap_or",
15365        description: r##"Checks for usage of `option.map(_).unwrap_or(_)` or `option.map(_).unwrap_or_else(_)` or
15366`result.map(_).unwrap_or_else(_)`."##,
15367        default_severity: Severity::Allow,
15368        warn_since: None,
15369        deny_since: None,
15370    },
15371    Lint {
15372        label: "clippy::match_as_ref",
15373        description: r##"Checks for match which is used to add a reference to an
15374`Option` value."##,
15375        default_severity: Severity::Allow,
15376        warn_since: None,
15377        deny_since: None,
15378    },
15379    Lint {
15380        label: "clippy::match_bool",
15381        description: r##"Checks for matches where match expression is a `bool`. It
15382suggests to replace the expression with an `if...else` block."##,
15383        default_severity: Severity::Allow,
15384        warn_since: None,
15385        deny_since: None,
15386    },
15387    Lint {
15388        label: "clippy::match_like_matches_macro",
15389        description: r##"Checks for `match`  or `if let` expressions producing a
15390`bool` that could be written using `matches!`"##,
15391        default_severity: Severity::Allow,
15392        warn_since: None,
15393        deny_since: None,
15394    },
15395    Lint {
15396        label: "clippy::match_on_vec_items",
15397        description: r##"Checks for `match vec[idx]` or `match vec[n..m]`."##,
15398        default_severity: Severity::Allow,
15399        warn_since: None,
15400        deny_since: None,
15401    },
15402    Lint {
15403        label: "clippy::match_overlapping_arm",
15404        description: r##"Checks for overlapping match arms."##,
15405        default_severity: Severity::Allow,
15406        warn_since: None,
15407        deny_since: None,
15408    },
15409    Lint {
15410        label: "clippy::match_ref_pats",
15411        description: r##"Checks for matches where all arms match a reference,
15412suggesting to remove the reference and deref the matched expression
15413instead. It also checks for `if let &foo = bar` blocks."##,
15414        default_severity: Severity::Allow,
15415        warn_since: None,
15416        deny_since: None,
15417    },
15418    Lint {
15419        label: "clippy::match_result_ok",
15420        description: r##"Checks for unnecessary `ok()` in `while let`."##,
15421        default_severity: Severity::Allow,
15422        warn_since: None,
15423        deny_since: None,
15424    },
15425    Lint {
15426        label: "clippy::match_same_arms",
15427        description: r##"Checks for `match` with identical arm bodies.
15428
15429Note: Does not lint on wildcards if the `non_exhaustive_omitted_patterns_lint` feature is
15430enabled and disallowed."##,
15431        default_severity: Severity::Allow,
15432        warn_since: None,
15433        deny_since: None,
15434    },
15435    Lint {
15436        label: "clippy::match_single_binding",
15437        description: r##"Checks for useless match that binds to only one value."##,
15438        default_severity: Severity::Allow,
15439        warn_since: None,
15440        deny_since: None,
15441    },
15442    Lint {
15443        label: "clippy::match_str_case_mismatch",
15444        description: r##"Checks for `match` expressions modifying the case of a string with non-compliant arms"##,
15445        default_severity: Severity::Allow,
15446        warn_since: None,
15447        deny_since: None,
15448    },
15449    Lint {
15450        label: "clippy::match_wild_err_arm",
15451        description: r##"Checks for arm which matches all errors with `Err(_)`
15452and take drastic actions like `panic!`."##,
15453        default_severity: Severity::Allow,
15454        warn_since: None,
15455        deny_since: None,
15456    },
15457    Lint {
15458        label: "clippy::match_wildcard_for_single_variants",
15459        description: r##"Checks for wildcard enum matches for a single variant."##,
15460        default_severity: Severity::Allow,
15461        warn_since: None,
15462        deny_since: None,
15463    },
15464    Lint {
15465        label: "clippy::maybe_infinite_iter",
15466        description: r##"Checks for iteration that may be infinite."##,
15467        default_severity: Severity::Allow,
15468        warn_since: None,
15469        deny_since: None,
15470    },
15471    Lint {
15472        label: "clippy::mem_forget",
15473        description: r##"Checks for usage of `std::mem::forget(t)` where `t` is
15474`Drop` or has a field that implements `Drop`."##,
15475        default_severity: Severity::Allow,
15476        warn_since: None,
15477        deny_since: None,
15478    },
15479    Lint {
15480        label: "clippy::mem_replace_option_with_none",
15481        description: r##"Checks for `mem::replace()` on an `Option` with
15482`None`."##,
15483        default_severity: Severity::Allow,
15484        warn_since: None,
15485        deny_since: None,
15486    },
15487    Lint {
15488        label: "clippy::mem_replace_with_default",
15489        description: r##"Checks for `std::mem::replace` on a value of type
15490`T` with `T::default()`."##,
15491        default_severity: Severity::Allow,
15492        warn_since: None,
15493        deny_since: None,
15494    },
15495    Lint {
15496        label: "clippy::mem_replace_with_uninit",
15497        description: r##"Checks for `mem::replace(&mut _, mem::uninitialized())`
15498and `mem::replace(&mut _, mem::zeroed())`."##,
15499        default_severity: Severity::Allow,
15500        warn_since: None,
15501        deny_since: None,
15502    },
15503    Lint {
15504        label: "clippy::min_ident_chars",
15505        description: r##"Checks for identifiers which consist of a single character (or fewer than the configured threshold).
15506
15507Note: This lint can be very noisy when enabled; it may be desirable to only enable it
15508temporarily."##,
15509        default_severity: Severity::Allow,
15510        warn_since: None,
15511        deny_since: None,
15512    },
15513    Lint {
15514        label: "clippy::min_max",
15515        description: r##"Checks for expressions where `std::cmp::min` and `max` are
15516used to clamp values, but switched so that the result is constant."##,
15517        default_severity: Severity::Allow,
15518        warn_since: None,
15519        deny_since: None,
15520    },
15521    Lint {
15522        label: "clippy::misaligned_transmute",
15523        description: r##"Nothing. This lint has been deprecated"##,
15524        default_severity: Severity::Allow,
15525        warn_since: None,
15526        deny_since: None,
15527    },
15528    Lint {
15529        label: "clippy::mismatching_type_param_order",
15530        description: r##"Checks for type parameters which are positioned inconsistently between
15531a type definition and impl block. Specifically, a parameter in an impl
15532block which has the same name as a parameter in the type def, but is in
15533a different place."##,
15534        default_severity: Severity::Allow,
15535        warn_since: None,
15536        deny_since: None,
15537    },
15538    Lint {
15539        label: "clippy::misnamed_getters",
15540        description: r##"Checks for getter methods that return a field that doesn't correspond
15541to the name of the method, when there is a field's whose name matches that of the method."##,
15542        default_severity: Severity::Allow,
15543        warn_since: None,
15544        deny_since: None,
15545    },
15546    Lint {
15547        label: "clippy::misrefactored_assign_op",
15548        description: r##"Checks for `a op= a op b` or `a op= b op a` patterns."##,
15549        default_severity: Severity::Allow,
15550        warn_since: None,
15551        deny_since: None,
15552    },
15553    Lint {
15554        label: "clippy::missing_assert_message",
15555        description: r##"Checks assertions without a custom panic message."##,
15556        default_severity: Severity::Allow,
15557        warn_since: None,
15558        deny_since: None,
15559    },
15560    Lint {
15561        label: "clippy::missing_asserts_for_indexing",
15562        description: r##"Checks for repeated slice indexing without asserting beforehand that the length
15563is greater than the largest index used to index into the slice."##,
15564        default_severity: Severity::Allow,
15565        warn_since: None,
15566        deny_since: None,
15567    },
15568    Lint {
15569        label: "clippy::missing_const_for_fn",
15570        description: r##"Suggests the use of `const` in functions and methods where possible."##,
15571        default_severity: Severity::Allow,
15572        warn_since: None,
15573        deny_since: None,
15574    },
15575    Lint {
15576        label: "clippy::missing_const_for_thread_local",
15577        description: r##"Suggests to use `const` in `thread_local!` macro if possible."##,
15578        default_severity: Severity::Allow,
15579        warn_since: None,
15580        deny_since: None,
15581    },
15582    Lint {
15583        label: "clippy::missing_docs_in_private_items",
15584        description: r##"Warns if there is missing documentation for any private documentable item."##,
15585        default_severity: Severity::Allow,
15586        warn_since: None,
15587        deny_since: None,
15588    },
15589    Lint {
15590        label: "clippy::missing_enforced_import_renames",
15591        description: r##"Checks for imports that do not rename the item as specified
15592in the `enforced-import-renames` config option.
15593
15594Note: Even though this lint is warn-by-default, it will only trigger if
15595import renames are defined in the `clippy.toml` file."##,
15596        default_severity: Severity::Allow,
15597        warn_since: None,
15598        deny_since: None,
15599    },
15600    Lint {
15601        label: "clippy::missing_errors_doc",
15602        description: r##"Checks the doc comments of publicly visible functions that
15603return a `Result` type and warns if there is no `# Errors` section."##,
15604        default_severity: Severity::Allow,
15605        warn_since: None,
15606        deny_since: None,
15607    },
15608    Lint {
15609        label: "clippy::missing_fields_in_debug",
15610        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."##,
15611        default_severity: Severity::Allow,
15612        warn_since: None,
15613        deny_since: None,
15614    },
15615    Lint {
15616        label: "clippy::missing_inline_in_public_items",
15617        description: r##"It lints if an exported function, method, trait method with default impl,
15618or trait method impl is not `#[inline]`."##,
15619        default_severity: Severity::Allow,
15620        warn_since: None,
15621        deny_since: None,
15622    },
15623    Lint {
15624        label: "clippy::missing_panics_doc",
15625        description: r##"Checks the doc comments of publicly visible functions that
15626may panic and warns if there is no `# Panics` section."##,
15627        default_severity: Severity::Allow,
15628        warn_since: None,
15629        deny_since: None,
15630    },
15631    Lint {
15632        label: "clippy::missing_safety_doc",
15633        description: r##"Checks for the doc comments of publicly visible
15634unsafe functions and warns if there is no `# Safety` section."##,
15635        default_severity: Severity::Allow,
15636        warn_since: None,
15637        deny_since: None,
15638    },
15639    Lint {
15640        label: "clippy::missing_spin_loop",
15641        description: r##"Checks for empty spin loops"##,
15642        default_severity: Severity::Allow,
15643        warn_since: None,
15644        deny_since: None,
15645    },
15646    Lint {
15647        label: "clippy::missing_trait_methods",
15648        description: r##"Checks if a provided method is used implicitly by a trait
15649implementation."##,
15650        default_severity: Severity::Allow,
15651        warn_since: None,
15652        deny_since: None,
15653    },
15654    Lint {
15655        label: "clippy::missing_transmute_annotations",
15656        description: r##"Checks if transmute calls have all generics specified."##,
15657        default_severity: Severity::Allow,
15658        warn_since: None,
15659        deny_since: None,
15660    },
15661    Lint {
15662        label: "clippy::mistyped_literal_suffixes",
15663        description: r##"Warns for mistyped suffix in literals"##,
15664        default_severity: Severity::Allow,
15665        warn_since: None,
15666        deny_since: None,
15667    },
15668    Lint {
15669        label: "clippy::mixed_attributes_style",
15670        description: r##"Checks for items that have the same kind of attributes with mixed styles (inner/outer)."##,
15671        default_severity: Severity::Allow,
15672        warn_since: None,
15673        deny_since: None,
15674    },
15675    Lint {
15676        label: "clippy::mixed_case_hex_literals",
15677        description: r##"Warns on hexadecimal literals with mixed-case letter
15678digits."##,
15679        default_severity: Severity::Allow,
15680        warn_since: None,
15681        deny_since: None,
15682    },
15683    Lint {
15684        label: "clippy::mixed_read_write_in_expression",
15685        description: r##"Checks for a read and a write to the same variable where
15686whether the read occurs before or after the write depends on the evaluation
15687order of sub-expressions."##,
15688        default_severity: Severity::Allow,
15689        warn_since: None,
15690        deny_since: None,
15691    },
15692    Lint {
15693        label: "clippy::mod_module_files",
15694        description: r##"Checks that module layout uses only self named module files; bans `mod.rs` files."##,
15695        default_severity: Severity::Allow,
15696        warn_since: None,
15697        deny_since: None,
15698    },
15699    Lint {
15700        label: "clippy::module_inception",
15701        description: r##"Checks for modules that have the same name as their
15702parent module"##,
15703        default_severity: Severity::Allow,
15704        warn_since: None,
15705        deny_since: None,
15706    },
15707    Lint {
15708        label: "clippy::module_name_repetitions",
15709        description: r##"Detects type names that are prefixed or suffixed by the
15710containing module's name."##,
15711        default_severity: Severity::Allow,
15712        warn_since: None,
15713        deny_since: None,
15714    },
15715    Lint {
15716        label: "clippy::modulo_arithmetic",
15717        description: r##"Checks for modulo arithmetic."##,
15718        default_severity: Severity::Allow,
15719        warn_since: None,
15720        deny_since: None,
15721    },
15722    Lint {
15723        label: "clippy::modulo_one",
15724        description: r##"Checks for getting the remainder of integer division by one or minus
15725one."##,
15726        default_severity: Severity::Allow,
15727        warn_since: None,
15728        deny_since: None,
15729    },
15730    Lint {
15731        label: "clippy::multi_assignments",
15732        description: r##"Checks for nested assignments."##,
15733        default_severity: Severity::Allow,
15734        warn_since: None,
15735        deny_since: None,
15736    },
15737    Lint {
15738        label: "clippy::multiple_bound_locations",
15739        description: r##"Check if a generic is defined both in the bound predicate and in the `where` clause."##,
15740        default_severity: Severity::Allow,
15741        warn_since: None,
15742        deny_since: None,
15743    },
15744    Lint {
15745        label: "clippy::multiple_crate_versions",
15746        description: r##"Checks to see if multiple versions of a crate are being
15747used."##,
15748        default_severity: Severity::Allow,
15749        warn_since: None,
15750        deny_since: None,
15751    },
15752    Lint {
15753        label: "clippy::multiple_inherent_impl",
15754        description: r##"Checks for multiple inherent implementations of a struct"##,
15755        default_severity: Severity::Allow,
15756        warn_since: None,
15757        deny_since: None,
15758    },
15759    Lint {
15760        label: "clippy::multiple_unsafe_ops_per_block",
15761        description: r##"Checks for `unsafe` blocks that contain more than one unsafe operation."##,
15762        default_severity: Severity::Allow,
15763        warn_since: None,
15764        deny_since: None,
15765    },
15766    Lint {
15767        label: "clippy::must_use_candidate",
15768        description: r##"Checks for public functions that have no
15769`#[must_use]` attribute, but return something not already marked
15770must-use, have no mutable arg and mutate no statics."##,
15771        default_severity: Severity::Allow,
15772        warn_since: None,
15773        deny_since: None,
15774    },
15775    Lint {
15776        label: "clippy::must_use_unit",
15777        description: r##"Checks for a `#[must_use]` attribute on
15778unit-returning functions and methods."##,
15779        default_severity: Severity::Allow,
15780        warn_since: None,
15781        deny_since: None,
15782    },
15783    Lint {
15784        label: "clippy::mut_from_ref",
15785        description: r##"This lint checks for functions that take immutable references and return
15786mutable ones. This will not trigger if no unsafe code exists as there
15787are multiple safe functions which will do this transformation
15788
15789To be on the conservative side, if there's at least one mutable
15790reference with the output lifetime, this lint will not trigger."##,
15791        default_severity: Severity::Allow,
15792        warn_since: None,
15793        deny_since: None,
15794    },
15795    Lint {
15796        label: "clippy::mut_mut",
15797        description: r##"Checks for instances of `mut mut` references."##,
15798        default_severity: Severity::Allow,
15799        warn_since: None,
15800        deny_since: None,
15801    },
15802    Lint {
15803        label: "clippy::mut_mutex_lock",
15804        description: r##"Checks for `&mut Mutex::lock` calls"##,
15805        default_severity: Severity::Allow,
15806        warn_since: None,
15807        deny_since: None,
15808    },
15809    Lint {
15810        label: "clippy::mut_range_bound",
15811        description: r##"Checks for loops with a range bound that is a mutable variable."##,
15812        default_severity: Severity::Allow,
15813        warn_since: None,
15814        deny_since: None,
15815    },
15816    Lint {
15817        label: "clippy::mutable_key_type",
15818        description: r##"Checks for sets/maps with mutable key types."##,
15819        default_severity: Severity::Allow,
15820        warn_since: None,
15821        deny_since: None,
15822    },
15823    Lint {
15824        label: "clippy::mutex_atomic",
15825        description: r##"Checks for usage of `Mutex<X>` where an atomic will do."##,
15826        default_severity: Severity::Allow,
15827        warn_since: None,
15828        deny_since: None,
15829    },
15830    Lint {
15831        label: "clippy::mutex_integer",
15832        description: r##"Checks for usage of `Mutex<X>` where `X` is an integral
15833type."##,
15834        default_severity: Severity::Allow,
15835        warn_since: None,
15836        deny_since: None,
15837    },
15838    Lint {
15839        label: "clippy::naive_bytecount",
15840        description: r##"Checks for naive byte counts"##,
15841        default_severity: Severity::Allow,
15842        warn_since: None,
15843        deny_since: None,
15844    },
15845    Lint {
15846        label: "clippy::needless_arbitrary_self_type",
15847        description: r##"The lint checks for `self` in fn parameters that
15848specify the `Self`-type explicitly"##,
15849        default_severity: Severity::Allow,
15850        warn_since: None,
15851        deny_since: None,
15852    },
15853    Lint {
15854        label: "clippy::needless_bitwise_bool",
15855        description: r##"Checks for usage of bitwise and/or operators between booleans, where performance may be improved by using
15856a lazy and."##,
15857        default_severity: Severity::Allow,
15858        warn_since: None,
15859        deny_since: None,
15860    },
15861    Lint {
15862        label: "clippy::needless_bool",
15863        description: r##"Checks for expressions of the form `if c { true } else {
15864false }` (or vice versa) and suggests using the condition directly."##,
15865        default_severity: Severity::Allow,
15866        warn_since: None,
15867        deny_since: None,
15868    },
15869    Lint {
15870        label: "clippy::needless_bool_assign",
15871        description: r##"Checks for expressions of the form `if c { x = true } else { x = false }`
15872(or vice versa) and suggest assigning the variable directly from the
15873condition."##,
15874        default_severity: Severity::Allow,
15875        warn_since: None,
15876        deny_since: None,
15877    },
15878    Lint {
15879        label: "clippy::needless_borrow",
15880        description: r##"Checks for address of operations (`&`) that are going to
15881be dereferenced immediately by the compiler."##,
15882        default_severity: Severity::Allow,
15883        warn_since: None,
15884        deny_since: None,
15885    },
15886    Lint {
15887        label: "clippy::needless_borrowed_reference",
15888        description: r##"Checks for bindings that needlessly destructure a reference and borrow the inner
15889value with `&ref`."##,
15890        default_severity: Severity::Allow,
15891        warn_since: None,
15892        deny_since: None,
15893    },
15894    Lint {
15895        label: "clippy::needless_borrows_for_generic_args",
15896        description: r##"Checks for borrow operations (`&`) that are used as a generic argument to a
15897function when the borrowed value could be used."##,
15898        default_severity: Severity::Allow,
15899        warn_since: None,
15900        deny_since: None,
15901    },
15902    Lint {
15903        label: "clippy::needless_character_iteration",
15904        description: r##"Checks if an iterator is used to check if a string is ascii."##,
15905        default_severity: Severity::Allow,
15906        warn_since: None,
15907        deny_since: None,
15908    },
15909    Lint {
15910        label: "clippy::needless_collect",
15911        description: r##"Checks for functions collecting an iterator when collect
15912is not needed."##,
15913        default_severity: Severity::Allow,
15914        warn_since: None,
15915        deny_since: None,
15916    },
15917    Lint {
15918        label: "clippy::needless_continue",
15919        description: r##"The lint checks for `if`-statements appearing in loops
15920that contain a `continue` statement in either their main blocks or their
15921`else`-blocks, when omitting the `else`-block possibly with some
15922rearrangement of code can make the code easier to understand."##,
15923        default_severity: Severity::Allow,
15924        warn_since: None,
15925        deny_since: None,
15926    },
15927    Lint {
15928        label: "clippy::needless_doctest_main",
15929        description: r##"Checks for `fn main() { .. }` in doctests"##,
15930        default_severity: Severity::Allow,
15931        warn_since: None,
15932        deny_since: None,
15933    },
15934    Lint {
15935        label: "clippy::needless_else",
15936        description: r##"Checks for empty `else` branches."##,
15937        default_severity: Severity::Allow,
15938        warn_since: None,
15939        deny_since: None,
15940    },
15941    Lint {
15942        label: "clippy::needless_for_each",
15943        description: r##"Checks for usage of `for_each` that would be more simply written as a
15944`for` loop."##,
15945        default_severity: Severity::Allow,
15946        warn_since: None,
15947        deny_since: None,
15948    },
15949    Lint {
15950        label: "clippy::needless_if",
15951        description: r##"Checks for empty `if` branches with no else branch."##,
15952        default_severity: Severity::Allow,
15953        warn_since: None,
15954        deny_since: None,
15955    },
15956    Lint {
15957        label: "clippy::needless_late_init",
15958        description: r##"Checks for late initializations that can be replaced by a `let` statement
15959with an initializer."##,
15960        default_severity: Severity::Allow,
15961        warn_since: None,
15962        deny_since: None,
15963    },
15964    Lint {
15965        label: "clippy::needless_lifetimes",
15966        description: r##"Checks for lifetime annotations which can be removed by
15967relying on lifetime elision."##,
15968        default_severity: Severity::Allow,
15969        warn_since: None,
15970        deny_since: None,
15971    },
15972    Lint {
15973        label: "clippy::needless_match",
15974        description: r##"Checks for unnecessary `match` or match-like `if let` returns for `Option` and `Result`
15975when function signatures are the same."##,
15976        default_severity: Severity::Allow,
15977        warn_since: None,
15978        deny_since: None,
15979    },
15980    Lint {
15981        label: "clippy::needless_maybe_sized",
15982        description: r##"Lints `?Sized` bounds applied to type parameters that cannot be unsized"##,
15983        default_severity: Severity::Allow,
15984        warn_since: None,
15985        deny_since: None,
15986    },
15987    Lint {
15988        label: "clippy::needless_option_as_deref",
15989        description: r##"Checks for no-op uses of `Option::{as_deref, as_deref_mut}`,
15990for example, `Option<&T>::as_deref()` returns the same type."##,
15991        default_severity: Severity::Allow,
15992        warn_since: None,
15993        deny_since: None,
15994    },
15995    Lint {
15996        label: "clippy::needless_option_take",
15997        description: r##"Checks for calling `take` function after `as_ref`."##,
15998        default_severity: Severity::Allow,
15999        warn_since: None,
16000        deny_since: None,
16001    },
16002    Lint {
16003        label: "clippy::needless_parens_on_range_literals",
16004        description: r##"The lint checks for parenthesis on literals in range statements that are
16005superfluous."##,
16006        default_severity: Severity::Allow,
16007        warn_since: None,
16008        deny_since: None,
16009    },
16010    Lint {
16011        label: "clippy::needless_pass_by_ref_mut",
16012        description: r##"Check if a `&mut` function argument is actually used mutably.
16013
16014Be careful if the function is publicly reexported as it would break compatibility with
16015users of this function, when the users pass this function as an argument."##,
16016        default_severity: Severity::Allow,
16017        warn_since: None,
16018        deny_since: None,
16019    },
16020    Lint {
16021        label: "clippy::needless_pass_by_value",
16022        description: r##"Checks for functions taking arguments by value, but not
16023consuming them in its
16024body."##,
16025        default_severity: Severity::Allow,
16026        warn_since: None,
16027        deny_since: None,
16028    },
16029    Lint {
16030        label: "clippy::needless_pub_self",
16031        description: r##"Checks for usage of `pub(self)` and `pub(in self)`."##,
16032        default_severity: Severity::Allow,
16033        warn_since: None,
16034        deny_since: None,
16035    },
16036    Lint {
16037        label: "clippy::needless_question_mark",
16038        description: r##"Suggests alternatives for useless applications of `?` in terminating expressions"##,
16039        default_severity: Severity::Allow,
16040        warn_since: None,
16041        deny_since: None,
16042    },
16043    Lint {
16044        label: "clippy::needless_range_loop",
16045        description: r##"Checks for looping over the range of `0..len` of some
16046collection just to get the values by index."##,
16047        default_severity: Severity::Allow,
16048        warn_since: None,
16049        deny_since: None,
16050    },
16051    Lint {
16052        label: "clippy::needless_raw_string_hashes",
16053        description: r##"Checks for raw string literals with an unnecessary amount of hashes around them."##,
16054        default_severity: Severity::Allow,
16055        warn_since: None,
16056        deny_since: None,
16057    },
16058    Lint {
16059        label: "clippy::needless_raw_strings",
16060        description: r##"Checks for raw string literals where a string literal can be used instead."##,
16061        default_severity: Severity::Allow,
16062        warn_since: None,
16063        deny_since: None,
16064    },
16065    Lint {
16066        label: "clippy::needless_return",
16067        description: r##"Checks for return statements at the end of a block."##,
16068        default_severity: Severity::Allow,
16069        warn_since: None,
16070        deny_since: None,
16071    },
16072    Lint {
16073        label: "clippy::needless_return_with_question_mark",
16074        description: r##"Checks for return statements on `Err` paired with the `?` operator."##,
16075        default_severity: Severity::Allow,
16076        warn_since: None,
16077        deny_since: None,
16078    },
16079    Lint {
16080        label: "clippy::needless_splitn",
16081        description: r##"Checks for usage of `str::splitn` (or `str::rsplitn`) where using `str::split` would be the same."##,
16082        default_severity: Severity::Allow,
16083        warn_since: None,
16084        deny_since: None,
16085    },
16086    Lint {
16087        label: "clippy::needless_update",
16088        description: r##"Checks for needlessly including a base struct on update
16089when all fields are changed anyway.
16090
16091This lint is not applied to structs marked with
16092[non_exhaustive](https://doc.rust-lang.org/reference/attributes/type_system.html)."##,
16093        default_severity: Severity::Allow,
16094        warn_since: None,
16095        deny_since: None,
16096    },
16097    Lint {
16098        label: "clippy::neg_cmp_op_on_partial_ord",
16099        description: r##"Checks for the usage of negated comparison operators on types which only implement
16100`PartialOrd` (e.g., `f64`)."##,
16101        default_severity: Severity::Allow,
16102        warn_since: None,
16103        deny_since: None,
16104    },
16105    Lint {
16106        label: "clippy::neg_multiply",
16107        description: r##"Checks for multiplication by -1 as a form of negation."##,
16108        default_severity: Severity::Allow,
16109        warn_since: None,
16110        deny_since: None,
16111    },
16112    Lint {
16113        label: "clippy::negative_feature_names",
16114        description: r##"Checks for negative feature names with prefix `no-` or `not-`"##,
16115        default_severity: Severity::Allow,
16116        warn_since: None,
16117        deny_since: None,
16118    },
16119    Lint {
16120        label: "clippy::never_loop",
16121        description: r##"Checks for loops that will always `break`, `return` or
16122`continue` an outer loop."##,
16123        default_severity: Severity::Allow,
16124        warn_since: None,
16125        deny_since: None,
16126    },
16127    Lint {
16128        label: "clippy::new_ret_no_self",
16129        description: r##"Checks for `new` not returning a type that contains `Self`."##,
16130        default_severity: Severity::Allow,
16131        warn_since: None,
16132        deny_since: None,
16133    },
16134    Lint {
16135        label: "clippy::new_without_default",
16136        description: r##"Checks for public types with a `pub fn new() -> Self` method and no
16137implementation of
16138[`Default`](https://doc.rust-lang.org/std/default/trait.Default.html)."##,
16139        default_severity: Severity::Allow,
16140        warn_since: None,
16141        deny_since: None,
16142    },
16143    Lint {
16144        label: "clippy::no_effect",
16145        description: r##"Checks for statements which have no effect."##,
16146        default_severity: Severity::Allow,
16147        warn_since: None,
16148        deny_since: None,
16149    },
16150    Lint {
16151        label: "clippy::no_effect_replace",
16152        description: r##"Checks for `replace` statements which have no effect."##,
16153        default_severity: Severity::Allow,
16154        warn_since: None,
16155        deny_since: None,
16156    },
16157    Lint {
16158        label: "clippy::no_effect_underscore_binding",
16159        description: r##"Checks for binding to underscore prefixed variable without side-effects."##,
16160        default_severity: Severity::Allow,
16161        warn_since: None,
16162        deny_since: None,
16163    },
16164    Lint {
16165        label: "clippy::no_mangle_with_rust_abi",
16166        description: r##"Checks for Rust ABI functions with the `#[no_mangle]` attribute."##,
16167        default_severity: Severity::Allow,
16168        warn_since: None,
16169        deny_since: None,
16170    },
16171    Lint {
16172        label: "clippy::non_ascii_literal",
16173        description: r##"Checks for non-ASCII characters in string and char literals."##,
16174        default_severity: Severity::Allow,
16175        warn_since: None,
16176        deny_since: None,
16177    },
16178    Lint {
16179        label: "clippy::non_canonical_clone_impl",
16180        description: r##"Checks for non-canonical implementations of `Clone` when `Copy` is already implemented."##,
16181        default_severity: Severity::Allow,
16182        warn_since: None,
16183        deny_since: None,
16184    },
16185    Lint {
16186        label: "clippy::non_canonical_partial_ord_impl",
16187        description: r##"Checks for non-canonical implementations of `PartialOrd` when `Ord` is already implemented."##,
16188        default_severity: Severity::Allow,
16189        warn_since: None,
16190        deny_since: None,
16191    },
16192    Lint {
16193        label: "clippy::non_minimal_cfg",
16194        description: r##"Checks for `any` and `all` combinators in `cfg` with only one condition."##,
16195        default_severity: Severity::Allow,
16196        warn_since: None,
16197        deny_since: None,
16198    },
16199    Lint {
16200        label: "clippy::non_octal_unix_permissions",
16201        description: r##"Checks for non-octal values used to set Unix file permissions."##,
16202        default_severity: Severity::Allow,
16203        warn_since: None,
16204        deny_since: None,
16205    },
16206    Lint {
16207        label: "clippy::non_send_fields_in_send_ty",
16208        description: r##"This lint warns about a `Send` implementation for a type that
16209contains fields that are not safe to be sent across threads.
16210It tries to detect fields that can cause a soundness issue
16211when sent to another thread (e.g., `Rc`) while allowing `!Send` fields
16212that are expected to exist in a `Send` type, such as raw pointers."##,
16213        default_severity: Severity::Allow,
16214        warn_since: None,
16215        deny_since: None,
16216    },
16217    Lint {
16218        label: "clippy::non_zero_suggestions",
16219        description: r##"Checks for conversions from `NonZero` types to regular integer types,
16220and suggests using `NonZero` types for the target as well."##,
16221        default_severity: Severity::Allow,
16222        warn_since: None,
16223        deny_since: None,
16224    },
16225    Lint {
16226        label: "clippy::nonminimal_bool",
16227        description: r##"Checks for boolean expressions that can be written more
16228concisely."##,
16229        default_severity: Severity::Allow,
16230        warn_since: None,
16231        deny_since: None,
16232    },
16233    Lint {
16234        label: "clippy::nonsensical_open_options",
16235        description: r##"Checks for duplicate open options as well as combinations
16236that make no sense."##,
16237        default_severity: Severity::Allow,
16238        warn_since: None,
16239        deny_since: None,
16240    },
16241    Lint {
16242        label: "clippy::nonstandard_macro_braces",
16243        description: r##"Checks that common macros are used with consistent bracing."##,
16244        default_severity: Severity::Allow,
16245        warn_since: None,
16246        deny_since: None,
16247    },
16248    Lint {
16249        label: "clippy::not_unsafe_ptr_arg_deref",
16250        description: r##"Checks for public functions that dereference raw pointer
16251arguments but are not marked `unsafe`."##,
16252        default_severity: Severity::Allow,
16253        warn_since: None,
16254        deny_since: None,
16255    },
16256    Lint {
16257        label: "clippy::obfuscated_if_else",
16258        description: r##"Checks for usage of `.then_some(..).unwrap_or(..)`"##,
16259        default_severity: Severity::Allow,
16260        warn_since: None,
16261        deny_since: None,
16262    },
16263    Lint {
16264        label: "clippy::octal_escapes",
16265        description: r##"Checks for `\\0` escapes in string and byte literals that look like octal
16266character escapes in C."##,
16267        default_severity: Severity::Allow,
16268        warn_since: None,
16269        deny_since: None,
16270    },
16271    Lint {
16272        label: "clippy::ok_expect",
16273        description: r##"Checks for usage of `ok().expect(..)`."##,
16274        default_severity: Severity::Allow,
16275        warn_since: None,
16276        deny_since: None,
16277    },
16278    Lint {
16279        label: "clippy::only_used_in_recursion",
16280        description: r##"Checks for arguments that are only used in recursion with no side-effects."##,
16281        default_severity: Severity::Allow,
16282        warn_since: None,
16283        deny_since: None,
16284    },
16285    Lint {
16286        label: "clippy::op_ref",
16287        description: r##"Checks for arguments to `==` which have their address
16288taken to satisfy a bound
16289and suggests to dereference the other argument instead"##,
16290        default_severity: Severity::Allow,
16291        warn_since: None,
16292        deny_since: None,
16293    },
16294    Lint {
16295        label: "clippy::option_as_ref_cloned",
16296        description: r##"Checks for usage of `.as_ref().cloned()` and `.as_mut().cloned()` on `Option`s"##,
16297        default_severity: Severity::Allow,
16298        warn_since: None,
16299        deny_since: None,
16300    },
16301    Lint {
16302        label: "clippy::option_as_ref_deref",
16303        description: r##"Checks for usage of `_.as_ref().map(Deref::deref)` or its aliases (such as String::as_str)."##,
16304        default_severity: Severity::Allow,
16305        warn_since: None,
16306        deny_since: None,
16307    },
16308    Lint {
16309        label: "clippy::option_env_unwrap",
16310        description: r##"Checks for usage of `option_env!(...).unwrap()` and
16311suggests usage of the `env!` macro."##,
16312        default_severity: Severity::Allow,
16313        warn_since: None,
16314        deny_since: None,
16315    },
16316    Lint {
16317        label: "clippy::option_filter_map",
16318        description: r##"Checks for iterators of `Option`s using `.filter(Option::is_some).map(Option::unwrap)` that may
16319be replaced with a `.flatten()` call."##,
16320        default_severity: Severity::Allow,
16321        warn_since: None,
16322        deny_since: None,
16323    },
16324    Lint {
16325        label: "clippy::option_if_let_else",
16326        description: r##"Lints usage of `if let Some(v) = ... { y } else { x }` and
16327`match .. { Some(v) => y, None/_ => x }` which are more
16328idiomatically done with `Option::map_or` (if the else bit is a pure
16329expression) or `Option::map_or_else` (if the else bit is an impure
16330expression)."##,
16331        default_severity: Severity::Allow,
16332        warn_since: None,
16333        deny_since: None,
16334    },
16335    Lint {
16336        label: "clippy::option_map_or_err_ok",
16337        description: r##"Checks for usage of `_.map_or(Err(_), Ok)`."##,
16338        default_severity: Severity::Allow,
16339        warn_since: None,
16340        deny_since: None,
16341    },
16342    Lint {
16343        label: "clippy::option_map_or_none",
16344        description: r##"Checks for usage of `_.map_or(None, _)`."##,
16345        default_severity: Severity::Allow,
16346        warn_since: None,
16347        deny_since: None,
16348    },
16349    Lint {
16350        label: "clippy::option_map_unit_fn",
16351        description: r##"Checks for usage of `option.map(f)` where f is a function
16352or closure that returns the unit type `()`."##,
16353        default_severity: Severity::Allow,
16354        warn_since: None,
16355        deny_since: None,
16356    },
16357    Lint {
16358        label: "clippy::option_option",
16359        description: r##"Checks for usage of `Option<Option<_>>` in function signatures and type
16360definitions"##,
16361        default_severity: Severity::Allow,
16362        warn_since: None,
16363        deny_since: None,
16364    },
16365    Lint {
16366        label: "clippy::or_fun_call",
16367        description: r##"Checks for calls to `.or(foo(..))`, `.unwrap_or(foo(..))`,
16368`.or_insert(foo(..))` etc., and suggests to use `.or_else(|| foo(..))`,
16369`.unwrap_or_else(|| foo(..))`, `.unwrap_or_default()` or `.or_default()`
16370etc. instead."##,
16371        default_severity: Severity::Allow,
16372        warn_since: None,
16373        deny_since: None,
16374    },
16375    Lint {
16376        label: "clippy::or_then_unwrap",
16377        description: r##"Checks for `.or(…).unwrap()` calls to Options and Results."##,
16378        default_severity: Severity::Allow,
16379        warn_since: None,
16380        deny_since: None,
16381    },
16382    Lint {
16383        label: "clippy::out_of_bounds_indexing",
16384        description: r##"Checks for out of bounds array indexing with a constant
16385index."##,
16386        default_severity: Severity::Allow,
16387        warn_since: None,
16388        deny_since: None,
16389    },
16390    Lint {
16391        label: "clippy::overly_complex_bool_expr",
16392        description: r##"Checks for boolean expressions that contain terminals that
16393can be eliminated."##,
16394        default_severity: Severity::Allow,
16395        warn_since: None,
16396        deny_since: None,
16397    },
16398    Lint {
16399        label: "clippy::panic",
16400        description: r##"Checks for usage of `panic!`."##,
16401        default_severity: Severity::Allow,
16402        warn_since: None,
16403        deny_since: None,
16404    },
16405    Lint {
16406        label: "clippy::panic_in_result_fn",
16407        description: r##"Checks for usage of `panic!` or assertions in a function whose return type is `Result`."##,
16408        default_severity: Severity::Allow,
16409        warn_since: None,
16410        deny_since: None,
16411    },
16412    Lint {
16413        label: "clippy::panicking_overflow_checks",
16414        description: r##"Detects C-style underflow/overflow checks."##,
16415        default_severity: Severity::Allow,
16416        warn_since: None,
16417        deny_since: None,
16418    },
16419    Lint {
16420        label: "clippy::panicking_unwrap",
16421        description: r##"Checks for calls of `unwrap[_err]()` that will always fail."##,
16422        default_severity: Severity::Allow,
16423        warn_since: None,
16424        deny_since: None,
16425    },
16426    Lint {
16427        label: "clippy::partial_pub_fields",
16428        description: r##"Checks whether some but not all fields of a `struct` are public.
16429
16430Either make all fields of a type public, or make none of them public"##,
16431        default_severity: Severity::Allow,
16432        warn_since: None,
16433        deny_since: None,
16434    },
16435    Lint {
16436        label: "clippy::partialeq_ne_impl",
16437        description: r##"Checks for manual re-implementations of `PartialEq::ne`."##,
16438        default_severity: Severity::Allow,
16439        warn_since: None,
16440        deny_since: None,
16441    },
16442    Lint {
16443        label: "clippy::partialeq_to_none",
16444        description: r##"Checks for binary comparisons to a literal `Option::None`."##,
16445        default_severity: Severity::Allow,
16446        warn_since: None,
16447        deny_since: None,
16448    },
16449    Lint {
16450        label: "clippy::path_buf_push_overwrite",
16451        description: r##"* Checks for [push](https://doc.rust-lang.org/std/path/struct.PathBuf.html#method.push)
16452calls on `PathBuf` that can cause overwrites."##,
16453        default_severity: Severity::Allow,
16454        warn_since: None,
16455        deny_since: None,
16456    },
16457    Lint {
16458        label: "clippy::path_ends_with_ext",
16459        description: r##"Looks for calls to `Path::ends_with` calls where the argument looks like a file extension.
16460
16461By default, Clippy has a short list of known filenames that start with a dot
16462but aren't necessarily file extensions (e.g. the `.git` folder), which are allowed by default.
16463The `allowed-dotfiles` configuration can be used to allow additional
16464file extensions that Clippy should not lint."##,
16465        default_severity: Severity::Allow,
16466        warn_since: None,
16467        deny_since: None,
16468    },
16469    Lint {
16470        label: "clippy::pathbuf_init_then_push",
16471        description: r##"Checks for calls to `push` immediately after creating a new `PathBuf`."##,
16472        default_severity: Severity::Allow,
16473        warn_since: None,
16474        deny_since: None,
16475    },
16476    Lint {
16477        label: "clippy::pattern_type_mismatch",
16478        description: r##"Checks for patterns that aren't exact representations of the types
16479they are applied to.
16480
16481To satisfy this lint, you will have to adjust either the expression that is matched
16482against or the pattern itself, as well as the bindings that are introduced by the
16483adjusted patterns. For matching you will have to either dereference the expression
16484with the `*` operator, or amend the patterns to explicitly match against `&<pattern>`
16485or `&mut <pattern>` depending on the reference mutability. For the bindings you need
16486to use the inverse. You can leave them as plain bindings if you wish for the value
16487to be copied, but you must use `ref mut <variable>` or `ref <variable>` to construct
16488a reference into the matched structure.
16489
16490If you are looking for a way to learn about ownership semantics in more detail, it
16491is recommended to look at IDE options available to you to highlight types, lifetimes
16492and reference semantics in your code. The available tooling would expose these things
16493in a general way even outside of the various pattern matching mechanics. Of course
16494this lint can still be used to highlight areas of interest and ensure a good understanding
16495of ownership semantics."##,
16496        default_severity: Severity::Allow,
16497        warn_since: None,
16498        deny_since: None,
16499    },
16500    Lint {
16501        label: "clippy::permissions_set_readonly_false",
16502        description: r##"Checks for calls to `std::fs::Permissions.set_readonly` with argument `false`."##,
16503        default_severity: Severity::Allow,
16504        warn_since: None,
16505        deny_since: None,
16506    },
16507    Lint {
16508        label: "clippy::pointers_in_nomem_asm_block",
16509        description: r##"Checks if any pointer is being passed to an asm! block with `nomem` option."##,
16510        default_severity: Severity::Allow,
16511        warn_since: None,
16512        deny_since: None,
16513    },
16514    Lint {
16515        label: "clippy::possible_missing_comma",
16516        description: r##"Checks for possible missing comma in an array. It lints if
16517an array element is a binary operator expression and it lies on two lines."##,
16518        default_severity: Severity::Allow,
16519        warn_since: None,
16520        deny_since: None,
16521    },
16522    Lint {
16523        label: "clippy::precedence",
16524        description: r##"Checks for operations where precedence may be unclear
16525and suggests to add parentheses. Currently it catches the following:
16526* mixed usage of arithmetic and bit shifting/combining operators without
16527parentheses"##,
16528        default_severity: Severity::Allow,
16529        warn_since: None,
16530        deny_since: None,
16531    },
16532    Lint {
16533        label: "clippy::print_in_format_impl",
16534        description: r##"Checks for usage of `println`, `print`, `eprintln` or `eprint` in an
16535implementation of a formatting trait."##,
16536        default_severity: Severity::Allow,
16537        warn_since: None,
16538        deny_since: None,
16539    },
16540    Lint {
16541        label: "clippy::print_literal",
16542        description: r##"This lint warns about the use of literals as `print!`/`println!` args."##,
16543        default_severity: Severity::Allow,
16544        warn_since: None,
16545        deny_since: None,
16546    },
16547    Lint {
16548        label: "clippy::print_stderr",
16549        description: r##"Checks for printing on *stderr*. The purpose of this lint
16550is to catch debugging remnants."##,
16551        default_severity: Severity::Allow,
16552        warn_since: None,
16553        deny_since: None,
16554    },
16555    Lint {
16556        label: "clippy::print_stdout",
16557        description: r##"Checks for printing on *stdout*. The purpose of this lint
16558is to catch debugging remnants."##,
16559        default_severity: Severity::Allow,
16560        warn_since: None,
16561        deny_since: None,
16562    },
16563    Lint {
16564        label: "clippy::print_with_newline",
16565        description: r##"This lint warns when you use `print!()` with a format
16566string that ends in a newline."##,
16567        default_severity: Severity::Allow,
16568        warn_since: None,
16569        deny_since: None,
16570    },
16571    Lint {
16572        label: "clippy::println_empty_string",
16573        description: r##"This lint warns when you use `println!()` to
16574print a newline."##,
16575        default_severity: Severity::Allow,
16576        warn_since: None,
16577        deny_since: None,
16578    },
16579    Lint {
16580        label: "clippy::ptr_arg",
16581        description: r##"This lint checks for function arguments of type `&String`, `&Vec`,
16582`&PathBuf`, and `Cow<_>`. It will also suggest you replace `.clone()` calls
16583with the appropriate `.to_owned()`/`to_string()` calls."##,
16584        default_severity: Severity::Allow,
16585        warn_since: None,
16586        deny_since: None,
16587    },
16588    Lint {
16589        label: "clippy::ptr_as_ptr",
16590        description: r##"Checks for `as` casts between raw pointers that don't change their
16591constness, namely `*const T` to `*const U` and `*mut T` to `*mut U`."##,
16592        default_severity: Severity::Allow,
16593        warn_since: None,
16594        deny_since: None,
16595    },
16596    Lint {
16597        label: "clippy::ptr_cast_constness",
16598        description: r##"Checks for `as` casts between raw pointers that change their constness, namely `*const T` to
16599`*mut T` and `*mut T` to `*const T`."##,
16600        default_severity: Severity::Allow,
16601        warn_since: None,
16602        deny_since: None,
16603    },
16604    Lint {
16605        label: "clippy::ptr_eq",
16606        description: r##"Use `std::ptr::eq` when applicable"##,
16607        default_severity: Severity::Allow,
16608        warn_since: None,
16609        deny_since: None,
16610    },
16611    Lint {
16612        label: "clippy::ptr_offset_with_cast",
16613        description: r##"Checks for usage of the `offset` pointer method with a `usize` casted to an
16614`isize`."##,
16615        default_severity: Severity::Allow,
16616        warn_since: None,
16617        deny_since: None,
16618    },
16619    Lint {
16620        label: "clippy::pub_enum_variant_names",
16621        description: r##"Nothing. This lint has been deprecated"##,
16622        default_severity: Severity::Allow,
16623        warn_since: None,
16624        deny_since: None,
16625    },
16626    Lint {
16627        label: "clippy::pub_underscore_fields",
16628        description: r##"Checks whether any field of the struct is prefixed with an `_` (underscore) and also marked
16629`pub` (public)"##,
16630        default_severity: Severity::Allow,
16631        warn_since: None,
16632        deny_since: None,
16633    },
16634    Lint {
16635        label: "clippy::pub_use",
16636        description: r##"Restricts the usage of `pub use ...`"##,
16637        default_severity: Severity::Allow,
16638        warn_since: None,
16639        deny_since: None,
16640    },
16641    Lint {
16642        label: "clippy::pub_with_shorthand",
16643        description: r##"Checks for usage of `pub(<loc>)` with `in`."##,
16644        default_severity: Severity::Allow,
16645        warn_since: None,
16646        deny_since: None,
16647    },
16648    Lint {
16649        label: "clippy::pub_without_shorthand",
16650        description: r##"Checks for usage of `pub(<loc>)` without `in`.
16651
16652Note: As you cannot write a module's path in `pub(<loc>)`, this will only trigger on
16653`pub(super)` and the like."##,
16654        default_severity: Severity::Allow,
16655        warn_since: None,
16656        deny_since: None,
16657    },
16658    Lint {
16659        label: "clippy::question_mark",
16660        description: r##"Checks for expressions that could be replaced by the question mark operator."##,
16661        default_severity: Severity::Allow,
16662        warn_since: None,
16663        deny_since: None,
16664    },
16665    Lint {
16666        label: "clippy::question_mark_used",
16667        description: r##"Checks for expressions that use the question mark operator and rejects them."##,
16668        default_severity: Severity::Allow,
16669        warn_since: None,
16670        deny_since: None,
16671    },
16672    Lint {
16673        label: "clippy::range_minus_one",
16674        description: r##"Checks for inclusive ranges where 1 is subtracted from
16675the upper bound, e.g., `x..=(y-1)`."##,
16676        default_severity: Severity::Allow,
16677        warn_since: None,
16678        deny_since: None,
16679    },
16680    Lint {
16681        label: "clippy::range_plus_one",
16682        description: r##"Checks for exclusive ranges where 1 is added to the
16683upper bound, e.g., `x..(y+1)`."##,
16684        default_severity: Severity::Allow,
16685        warn_since: None,
16686        deny_since: None,
16687    },
16688    Lint {
16689        label: "clippy::range_step_by_zero",
16690        description: r##"Nothing. This lint has been deprecated"##,
16691        default_severity: Severity::Allow,
16692        warn_since: None,
16693        deny_since: None,
16694    },
16695    Lint {
16696        label: "clippy::range_zip_with_len",
16697        description: r##"Checks for zipping a collection with the range of
16698`0.._.len()`."##,
16699        default_severity: Severity::Allow,
16700        warn_since: None,
16701        deny_since: None,
16702    },
16703    Lint {
16704        label: "clippy::rc_buffer",
16705        description: r##"Checks for `Rc<T>` and `Arc<T>` when `T` is a mutable buffer type such as `String` or `Vec`."##,
16706        default_severity: Severity::Allow,
16707        warn_since: None,
16708        deny_since: None,
16709    },
16710    Lint {
16711        label: "clippy::rc_clone_in_vec_init",
16712        description: r##"Checks for reference-counted pointers (`Arc`, `Rc`, `rc::Weak`, and `sync::Weak`)
16713in `vec![elem; len]`"##,
16714        default_severity: Severity::Allow,
16715        warn_since: None,
16716        deny_since: None,
16717    },
16718    Lint {
16719        label: "clippy::rc_mutex",
16720        description: r##"Checks for `Rc<Mutex<T>>`."##,
16721        default_severity: Severity::Allow,
16722        warn_since: None,
16723        deny_since: None,
16724    },
16725    Lint {
16726        label: "clippy::read_line_without_trim",
16727        description: r##"Looks for calls to [`Stdin::read_line`] to read a line from the standard input
16728into a string, then later attempting to use that string for an operation that will never
16729work for strings with a trailing newline character in it (e.g. parsing into a `i32`)."##,
16730        default_severity: Severity::Allow,
16731        warn_since: None,
16732        deny_since: None,
16733    },
16734    Lint {
16735        label: "clippy::read_zero_byte_vec",
16736        description: r##"This lint catches reads into a zero-length `Vec`.
16737Especially in the case of a call to `with_capacity`, this lint warns that read
16738gets the number of bytes from the `Vec`'s length, not its capacity."##,
16739        default_severity: Severity::Allow,
16740        warn_since: None,
16741        deny_since: None,
16742    },
16743    Lint {
16744        label: "clippy::readonly_write_lock",
16745        description: r##"Looks for calls to `RwLock::write` where the lock is only used for reading."##,
16746        default_severity: Severity::Allow,
16747        warn_since: None,
16748        deny_since: None,
16749    },
16750    Lint {
16751        label: "clippy::recursive_format_impl",
16752        description: r##"Checks for format trait implementations (e.g. `Display`) with a recursive call to itself
16753which uses `self` as a parameter.
16754This is typically done indirectly with the `write!` macro or with `to_string()`."##,
16755        default_severity: Severity::Allow,
16756        warn_since: None,
16757        deny_since: None,
16758    },
16759    Lint {
16760        label: "clippy::redundant_allocation",
16761        description: r##"Checks for usage of redundant allocations anywhere in the code."##,
16762        default_severity: Severity::Allow,
16763        warn_since: None,
16764        deny_since: None,
16765    },
16766    Lint {
16767        label: "clippy::redundant_as_str",
16768        description: r##"Checks for usage of `as_str()` on a `String` chained with a method available on the `String` itself."##,
16769        default_severity: Severity::Allow,
16770        warn_since: None,
16771        deny_since: None,
16772    },
16773    Lint {
16774        label: "clippy::redundant_async_block",
16775        description: r##"Checks for `async` block that only returns `await` on a future."##,
16776        default_severity: Severity::Allow,
16777        warn_since: None,
16778        deny_since: None,
16779    },
16780    Lint {
16781        label: "clippy::redundant_at_rest_pattern",
16782        description: r##"Checks for `[all @ ..]` patterns."##,
16783        default_severity: Severity::Allow,
16784        warn_since: None,
16785        deny_since: None,
16786    },
16787    Lint {
16788        label: "clippy::redundant_clone",
16789        description: r##"Checks for a redundant `clone()` (and its relatives) which clones an owned
16790value that is going to be dropped without further use."##,
16791        default_severity: Severity::Allow,
16792        warn_since: None,
16793        deny_since: None,
16794    },
16795    Lint {
16796        label: "clippy::redundant_closure",
16797        description: r##"Checks for closures which just call another function where
16798the function can be called directly. `unsafe` functions, calls where types
16799get adjusted or where the callee is marked `#[track_caller]` are ignored."##,
16800        default_severity: Severity::Allow,
16801        warn_since: None,
16802        deny_since: None,
16803    },
16804    Lint {
16805        label: "clippy::redundant_closure_call",
16806        description: r##"Detects closures called in the same expression where they
16807are defined."##,
16808        default_severity: Severity::Allow,
16809        warn_since: None,
16810        deny_since: None,
16811    },
16812    Lint {
16813        label: "clippy::redundant_closure_for_method_calls",
16814        description: r##"Checks for closures which only invoke a method on the closure
16815argument and can be replaced by referencing the method directly."##,
16816        default_severity: Severity::Allow,
16817        warn_since: None,
16818        deny_since: None,
16819    },
16820    Lint {
16821        label: "clippy::redundant_comparisons",
16822        description: r##"Checks for ineffective double comparisons against constants."##,
16823        default_severity: Severity::Allow,
16824        warn_since: None,
16825        deny_since: None,
16826    },
16827    Lint {
16828        label: "clippy::redundant_else",
16829        description: r##"Checks for `else` blocks that can be removed without changing semantics."##,
16830        default_severity: Severity::Allow,
16831        warn_since: None,
16832        deny_since: None,
16833    },
16834    Lint {
16835        label: "clippy::redundant_feature_names",
16836        description: r##"Checks for feature names with prefix `use-`, `with-` or suffix `-support`"##,
16837        default_severity: Severity::Allow,
16838        warn_since: None,
16839        deny_since: None,
16840    },
16841    Lint {
16842        label: "clippy::redundant_field_names",
16843        description: r##"Checks for fields in struct literals where shorthands
16844could be used."##,
16845        default_severity: Severity::Allow,
16846        warn_since: None,
16847        deny_since: None,
16848    },
16849    Lint {
16850        label: "clippy::redundant_guards",
16851        description: r##"Checks for unnecessary guards in match expressions."##,
16852        default_severity: Severity::Allow,
16853        warn_since: None,
16854        deny_since: None,
16855    },
16856    Lint {
16857        label: "clippy::redundant_locals",
16858        description: r##"Checks for redundant redefinitions of local bindings."##,
16859        default_severity: Severity::Allow,
16860        warn_since: None,
16861        deny_since: None,
16862    },
16863    Lint {
16864        label: "clippy::redundant_pattern",
16865        description: r##"Checks for patterns in the form `name @ _`."##,
16866        default_severity: Severity::Allow,
16867        warn_since: None,
16868        deny_since: None,
16869    },
16870    Lint {
16871        label: "clippy::redundant_pattern_matching",
16872        description: r##"Lint for redundant pattern matching over `Result`, `Option`,
16873`std::task::Poll`, `std::net::IpAddr` or `bool`s"##,
16874        default_severity: Severity::Allow,
16875        warn_since: None,
16876        deny_since: None,
16877    },
16878    Lint {
16879        label: "clippy::redundant_pub_crate",
16880        description: r##"Checks for items declared `pub(crate)` that are not crate visible because they
16881are inside a private module."##,
16882        default_severity: Severity::Allow,
16883        warn_since: None,
16884        deny_since: None,
16885    },
16886    Lint {
16887        label: "clippy::redundant_slicing",
16888        description: r##"Checks for redundant slicing expressions which use the full range, and
16889do not change the type."##,
16890        default_severity: Severity::Allow,
16891        warn_since: None,
16892        deny_since: None,
16893    },
16894    Lint {
16895        label: "clippy::redundant_static_lifetimes",
16896        description: r##"Checks for constants and statics with an explicit `'static` lifetime."##,
16897        default_severity: Severity::Allow,
16898        warn_since: None,
16899        deny_since: None,
16900    },
16901    Lint {
16902        label: "clippy::redundant_type_annotations",
16903        description: r##"Warns about needless / redundant type annotations."##,
16904        default_severity: Severity::Allow,
16905        warn_since: None,
16906        deny_since: None,
16907    },
16908    Lint {
16909        label: "clippy::ref_as_ptr",
16910        description: r##"Checks for casts of references to pointer using `as`
16911and suggests `std::ptr::from_ref` and `std::ptr::from_mut` instead."##,
16912        default_severity: Severity::Allow,
16913        warn_since: None,
16914        deny_since: None,
16915    },
16916    Lint {
16917        label: "clippy::ref_binding_to_reference",
16918        description: r##"Checks for `ref` bindings which create a reference to a reference."##,
16919        default_severity: Severity::Allow,
16920        warn_since: None,
16921        deny_since: None,
16922    },
16923    Lint {
16924        label: "clippy::ref_option",
16925        description: r##"Warns when a function signature uses `&Option<T>` instead of `Option<&T>`."##,
16926        default_severity: Severity::Allow,
16927        warn_since: None,
16928        deny_since: None,
16929    },
16930    Lint {
16931        label: "clippy::ref_option_ref",
16932        description: r##"Checks for usage of `&Option<&T>`."##,
16933        default_severity: Severity::Allow,
16934        warn_since: None,
16935        deny_since: None,
16936    },
16937    Lint {
16938        label: "clippy::ref_patterns",
16939        description: r##"Checks for usages of the `ref` keyword."##,
16940        default_severity: Severity::Allow,
16941        warn_since: None,
16942        deny_since: None,
16943    },
16944    Lint {
16945        label: "clippy::regex_macro",
16946        description: r##"Nothing. This lint has been deprecated"##,
16947        default_severity: Severity::Allow,
16948        warn_since: None,
16949        deny_since: None,
16950    },
16951    Lint {
16952        label: "clippy::renamed_function_params",
16953        description: r##"Lints when the name of function parameters from trait impl is
16954different than its default implementation."##,
16955        default_severity: Severity::Allow,
16956        warn_since: None,
16957        deny_since: None,
16958    },
16959    Lint {
16960        label: "clippy::repeat_once",
16961        description: r##"Checks for usage of `.repeat(1)` and suggest the following method for each types.
16962- `.to_string()` for `str`
16963- `.clone()` for `String`
16964- `.to_vec()` for `slice`
16965
16966The lint will evaluate constant expressions and values as arguments of `.repeat(..)` and emit a message if
16967they are equivalent to `1`. (Related discussion in [rust-clippy#7306](https://github.com/rust-lang/rust-clippy/issues/7306))"##,
16968        default_severity: Severity::Allow,
16969        warn_since: None,
16970        deny_since: None,
16971    },
16972    Lint {
16973        label: "clippy::repeat_vec_with_capacity",
16974        description: r##"Looks for patterns such as `vec![Vec::with_capacity(x); n]` or `iter::repeat(Vec::with_capacity(x))`."##,
16975        default_severity: Severity::Allow,
16976        warn_since: None,
16977        deny_since: None,
16978    },
16979    Lint {
16980        label: "clippy::replace_consts",
16981        description: r##"Nothing. This lint has been deprecated"##,
16982        default_severity: Severity::Allow,
16983        warn_since: None,
16984        deny_since: None,
16985    },
16986    Lint {
16987        label: "clippy::reserve_after_initialization",
16988        description: r##"Informs the user about a more concise way to create a vector with a known capacity."##,
16989        default_severity: Severity::Allow,
16990        warn_since: None,
16991        deny_since: None,
16992    },
16993    Lint {
16994        label: "clippy::rest_pat_in_fully_bound_structs",
16995        description: r##"Checks for unnecessary '..' pattern binding on struct when all fields are explicitly matched."##,
16996        default_severity: Severity::Allow,
16997        warn_since: None,
16998        deny_since: None,
16999    },
17000    Lint {
17001        label: "clippy::result_filter_map",
17002        description: r##"Checks for iterators of `Result`s using `.filter(Result::is_ok).map(Result::unwrap)` that may
17003be replaced with a `.flatten()` call."##,
17004        default_severity: Severity::Allow,
17005        warn_since: None,
17006        deny_since: None,
17007    },
17008    Lint {
17009        label: "clippy::result_large_err",
17010        description: r##"Checks for functions that return `Result` with an unusually large
17011`Err`-variant."##,
17012        default_severity: Severity::Allow,
17013        warn_since: None,
17014        deny_since: None,
17015    },
17016    Lint {
17017        label: "clippy::result_map_or_into_option",
17018        description: r##"Checks for usage of `_.map_or(None, Some)`."##,
17019        default_severity: Severity::Allow,
17020        warn_since: None,
17021        deny_since: None,
17022    },
17023    Lint {
17024        label: "clippy::result_map_unit_fn",
17025        description: r##"Checks for usage of `result.map(f)` where f is a function
17026or closure that returns the unit type `()`."##,
17027        default_severity: Severity::Allow,
17028        warn_since: None,
17029        deny_since: None,
17030    },
17031    Lint {
17032        label: "clippy::result_unit_err",
17033        description: r##"Checks for public functions that return a `Result`
17034with an `Err` type of `()`. It suggests using a custom type that
17035implements `std::error::Error`."##,
17036        default_severity: Severity::Allow,
17037        warn_since: None,
17038        deny_since: None,
17039    },
17040    Lint {
17041        label: "clippy::return_self_not_must_use",
17042        description: r##"This lint warns when a method returning `Self` doesn't have the `#[must_use]` attribute."##,
17043        default_severity: Severity::Allow,
17044        warn_since: None,
17045        deny_since: None,
17046    },
17047    Lint {
17048        label: "clippy::reversed_empty_ranges",
17049        description: r##"Checks for range expressions `x..y` where both `x` and `y`
17050are constant and `x` is greater to `y`. Also triggers if `x` is equal to `y` when they are conditions to a `for` loop."##,
17051        default_severity: Severity::Allow,
17052        warn_since: None,
17053        deny_since: None,
17054    },
17055    Lint {
17056        label: "clippy::same_functions_in_if_condition",
17057        description: r##"Checks for consecutive `if`s with the same function call."##,
17058        default_severity: Severity::Allow,
17059        warn_since: None,
17060        deny_since: None,
17061    },
17062    Lint {
17063        label: "clippy::same_item_push",
17064        description: r##"Checks whether a for loop is being used to push a constant
17065value into a Vec."##,
17066        default_severity: Severity::Allow,
17067        warn_since: None,
17068        deny_since: None,
17069    },
17070    Lint {
17071        label: "clippy::same_name_method",
17072        description: r##"It lints if a struct has two methods with the same name:
17073one from a trait, another not from a trait."##,
17074        default_severity: Severity::Allow,
17075        warn_since: None,
17076        deny_since: None,
17077    },
17078    Lint {
17079        label: "clippy::search_is_some",
17080        description: r##"Checks for an iterator or string search (such as `find()`,
17081`position()`, or `rposition()`) followed by a call to `is_some()` or `is_none()`."##,
17082        default_severity: Severity::Allow,
17083        warn_since: None,
17084        deny_since: None,
17085    },
17086    Lint {
17087        label: "clippy::seek_from_current",
17088        description: r##"Checks if the `seek` method of the `Seek` trait is called with `SeekFrom::Current(0)`,
17089and if it is, suggests using `stream_position` instead."##,
17090        default_severity: Severity::Allow,
17091        warn_since: None,
17092        deny_since: None,
17093    },
17094    Lint {
17095        label: "clippy::seek_to_start_instead_of_rewind",
17096        description: r##"Checks for jumps to the start of a stream that implements `Seek`
17097and uses the `seek` method providing `Start` as parameter."##,
17098        default_severity: Severity::Allow,
17099        warn_since: None,
17100        deny_since: None,
17101    },
17102    Lint {
17103        label: "clippy::self_assignment",
17104        description: r##"Checks for explicit self-assignments."##,
17105        default_severity: Severity::Allow,
17106        warn_since: None,
17107        deny_since: None,
17108    },
17109    Lint {
17110        label: "clippy::self_named_constructors",
17111        description: r##"Warns when constructors have the same name as their types."##,
17112        default_severity: Severity::Allow,
17113        warn_since: None,
17114        deny_since: None,
17115    },
17116    Lint {
17117        label: "clippy::self_named_module_files",
17118        description: r##"Checks that module layout uses only `mod.rs` files."##,
17119        default_severity: Severity::Allow,
17120        warn_since: None,
17121        deny_since: None,
17122    },
17123    Lint {
17124        label: "clippy::semicolon_if_nothing_returned",
17125        description: r##"Looks for blocks of expressions and fires if the last expression returns
17126`()` but is not followed by a semicolon."##,
17127        default_severity: Severity::Allow,
17128        warn_since: None,
17129        deny_since: None,
17130    },
17131    Lint {
17132        label: "clippy::semicolon_inside_block",
17133        description: r##"Suggests moving the semicolon after a block to the inside of the block, after its last
17134expression."##,
17135        default_severity: Severity::Allow,
17136        warn_since: None,
17137        deny_since: None,
17138    },
17139    Lint {
17140        label: "clippy::semicolon_outside_block",
17141        description: r##"Suggests moving the semicolon from a block's final expression outside of the block."##,
17142        default_severity: Severity::Allow,
17143        warn_since: None,
17144        deny_since: None,
17145    },
17146    Lint {
17147        label: "clippy::separated_literal_suffix",
17148        description: r##"Warns if literal suffixes are separated by an underscore.
17149To enforce separated literal suffix style,
17150see the `unseparated_literal_suffix` lint."##,
17151        default_severity: Severity::Allow,
17152        warn_since: None,
17153        deny_since: None,
17154    },
17155    Lint {
17156        label: "clippy::serde_api_misuse",
17157        description: r##"Checks for misuses of the serde API."##,
17158        default_severity: Severity::Allow,
17159        warn_since: None,
17160        deny_since: None,
17161    },
17162    Lint {
17163        label: "clippy::set_contains_or_insert",
17164        description: r##"Checks for usage of `contains` to see if a value is not present
17165in a set like `HashSet` or `BTreeSet`, followed by an `insert`."##,
17166        default_severity: Severity::Allow,
17167        warn_since: None,
17168        deny_since: None,
17169    },
17170    Lint {
17171        label: "clippy::shadow_reuse",
17172        description: r##"Checks for bindings that shadow other bindings already in
17173scope, while reusing the original value."##,
17174        default_severity: Severity::Allow,
17175        warn_since: None,
17176        deny_since: None,
17177    },
17178    Lint {
17179        label: "clippy::shadow_same",
17180        description: r##"Checks for bindings that shadow other bindings already in
17181scope, while just changing reference level or mutability."##,
17182        default_severity: Severity::Allow,
17183        warn_since: None,
17184        deny_since: None,
17185    },
17186    Lint {
17187        label: "clippy::shadow_unrelated",
17188        description: r##"Checks for bindings that shadow other bindings already in
17189scope, either without an initialization or with one that does not even use
17190the original value."##,
17191        default_severity: Severity::Allow,
17192        warn_since: None,
17193        deny_since: None,
17194    },
17195    Lint {
17196        label: "clippy::short_circuit_statement",
17197        description: r##"Checks for the use of short circuit boolean conditions as
17198a
17199statement."##,
17200        default_severity: Severity::Allow,
17201        warn_since: None,
17202        deny_since: None,
17203    },
17204    Lint {
17205        label: "clippy::should_assert_eq",
17206        description: r##"Nothing. This lint has been deprecated"##,
17207        default_severity: Severity::Allow,
17208        warn_since: None,
17209        deny_since: None,
17210    },
17211    Lint {
17212        label: "clippy::should_implement_trait",
17213        description: r##"Checks for methods that should live in a trait
17214implementation of a `std` trait (see [llogiq's blog
17215post](http://llogiq.github.io/2015/07/30/traits.html) for further
17216information) instead of an inherent implementation."##,
17217        default_severity: Severity::Allow,
17218        warn_since: None,
17219        deny_since: None,
17220    },
17221    Lint {
17222        label: "clippy::should_panic_without_expect",
17223        description: r##"Checks for `#[should_panic]` attributes without specifying the expected panic message."##,
17224        default_severity: Severity::Allow,
17225        warn_since: None,
17226        deny_since: None,
17227    },
17228    Lint {
17229        label: "clippy::significant_drop_in_scrutinee",
17230        description: r##"Checks for temporaries returned from function calls in a match scrutinee that have the
17231`clippy::has_significant_drop` attribute."##,
17232        default_severity: Severity::Allow,
17233        warn_since: None,
17234        deny_since: None,
17235    },
17236    Lint {
17237        label: "clippy::significant_drop_tightening",
17238        description: r##"Searches for elements marked with `#[clippy::has_significant_drop]` that could be early
17239dropped but are in fact dropped at the end of their scopes. In other words, enforces the
17240tightening of their possible lifetimes."##,
17241        default_severity: Severity::Allow,
17242        warn_since: None,
17243        deny_since: None,
17244    },
17245    Lint {
17246        label: "clippy::similar_names",
17247        description: r##"Checks for names that are very similar and thus confusing.
17248
17249Note: this lint looks for similar names throughout each
17250scope. To allow it, you need to allow it on the scope
17251level, not on the name that is reported."##,
17252        default_severity: Severity::Allow,
17253        warn_since: None,
17254        deny_since: None,
17255    },
17256    Lint {
17257        label: "clippy::single_call_fn",
17258        description: r##"Checks for functions that are only used once. Does not lint tests."##,
17259        default_severity: Severity::Allow,
17260        warn_since: None,
17261        deny_since: None,
17262    },
17263    Lint {
17264        label: "clippy::single_char_add_str",
17265        description: r##"Warns when using `push_str`/`insert_str` with a single-character string literal
17266where `push`/`insert` with a `char` would work fine."##,
17267        default_severity: Severity::Allow,
17268        warn_since: None,
17269        deny_since: None,
17270    },
17271    Lint {
17272        label: "clippy::single_char_lifetime_names",
17273        description: r##"Checks for lifetimes with names which are one character
17274long."##,
17275        default_severity: Severity::Allow,
17276        warn_since: None,
17277        deny_since: None,
17278    },
17279    Lint {
17280        label: "clippy::single_char_pattern",
17281        description: r##"Checks for string methods that receive a single-character
17282`str` as an argument, e.g., `_.split(x)`."##,
17283        default_severity: Severity::Allow,
17284        warn_since: None,
17285        deny_since: None,
17286    },
17287    Lint {
17288        label: "clippy::single_component_path_imports",
17289        description: r##"Checking for imports with single component use path."##,
17290        default_severity: Severity::Allow,
17291        warn_since: None,
17292        deny_since: None,
17293    },
17294    Lint {
17295        label: "clippy::single_element_loop",
17296        description: r##"Checks whether a for loop has a single element."##,
17297        default_severity: Severity::Allow,
17298        warn_since: None,
17299        deny_since: None,
17300    },
17301    Lint {
17302        label: "clippy::single_match",
17303        description: r##"Checks for matches with a single arm where an `if let`
17304will usually suffice.
17305
17306This intentionally does not lint if there are comments
17307inside of the other arm, so as to allow the user to document
17308why having another explicit pattern with an empty body is necessary,
17309or because the comments need to be preserved for other reasons."##,
17310        default_severity: Severity::Allow,
17311        warn_since: None,
17312        deny_since: None,
17313    },
17314    Lint {
17315        label: "clippy::single_match_else",
17316        description: r##"Checks for matches with two arms where an `if let else` will
17317usually suffice."##,
17318        default_severity: Severity::Allow,
17319        warn_since: None,
17320        deny_since: None,
17321    },
17322    Lint {
17323        label: "clippy::single_range_in_vec_init",
17324        description: r##"Checks for `Vec` or array initializations that contain only one range."##,
17325        default_severity: Severity::Allow,
17326        warn_since: None,
17327        deny_since: None,
17328    },
17329    Lint {
17330        label: "clippy::size_of_in_element_count",
17331        description: r##"Detects expressions where
17332`size_of::<T>` or `size_of_val::<T>` is used as a
17333count of elements of type `T`"##,
17334        default_severity: Severity::Allow,
17335        warn_since: None,
17336        deny_since: None,
17337    },
17338    Lint {
17339        label: "clippy::size_of_ref",
17340        description: r##"Checks for calls to `size_of_val()` where the argument is
17341a reference to a reference."##,
17342        default_severity: Severity::Allow,
17343        warn_since: None,
17344        deny_since: None,
17345    },
17346    Lint {
17347        label: "clippy::skip_while_next",
17348        description: r##"Checks for usage of `_.skip_while(condition).next()`."##,
17349        default_severity: Severity::Allow,
17350        warn_since: None,
17351        deny_since: None,
17352    },
17353    Lint {
17354        label: "clippy::slow_vector_initialization",
17355        description: r##"Checks slow zero-filled vector initialization"##,
17356        default_severity: Severity::Allow,
17357        warn_since: None,
17358        deny_since: None,
17359    },
17360    Lint {
17361        label: "clippy::stable_sort_primitive",
17362        description: r##"When sorting primitive values (integers, bools, chars, as well
17363as arrays, slices, and tuples of such items), it is typically better to
17364use an unstable sort than a stable sort."##,
17365        default_severity: Severity::Allow,
17366        warn_since: None,
17367        deny_since: None,
17368    },
17369    Lint {
17370        label: "clippy::std_instead_of_alloc",
17371        description: r##"Finds items imported through `std` when available through `alloc`."##,
17372        default_severity: Severity::Allow,
17373        warn_since: None,
17374        deny_since: None,
17375    },
17376    Lint {
17377        label: "clippy::std_instead_of_core",
17378        description: r##"Finds items imported through `std` when available through `core`."##,
17379        default_severity: Severity::Allow,
17380        warn_since: None,
17381        deny_since: None,
17382    },
17383    Lint {
17384        label: "clippy::str_split_at_newline",
17385        description: r##"Checks for usages of `str.trim().split(\
17386)` and `str.trim().split(\\
17387)`."##,
17388        default_severity: Severity::Allow,
17389        warn_since: None,
17390        deny_since: None,
17391    },
17392    Lint {
17393        label: "clippy::str_to_string",
17394        description: r##"This lint checks for `.to_string()` method calls on values of type `&str`."##,
17395        default_severity: Severity::Allow,
17396        warn_since: None,
17397        deny_since: None,
17398    },
17399    Lint {
17400        label: "clippy::string_add",
17401        description: r##"Checks for all instances of `x + _` where `x` is of type
17402`String`, but only if [`string_add_assign`](#string_add_assign) does *not*
17403match."##,
17404        default_severity: Severity::Allow,
17405        warn_since: None,
17406        deny_since: None,
17407    },
17408    Lint {
17409        label: "clippy::string_add_assign",
17410        description: r##"Checks for string appends of the form `x = x + y` (without
17411`let`!)."##,
17412        default_severity: Severity::Allow,
17413        warn_since: None,
17414        deny_since: None,
17415    },
17416    Lint {
17417        label: "clippy::string_extend_chars",
17418        description: r##"Checks for the use of `.extend(s.chars())` where s is a
17419`&str` or `String`."##,
17420        default_severity: Severity::Allow,
17421        warn_since: None,
17422        deny_since: None,
17423    },
17424    Lint {
17425        label: "clippy::string_from_utf8_as_bytes",
17426        description: r##"Check if the string is transformed to byte array and casted back to string."##,
17427        default_severity: Severity::Allow,
17428        warn_since: None,
17429        deny_since: None,
17430    },
17431    Lint {
17432        label: "clippy::string_lit_as_bytes",
17433        description: r##"Checks for the `as_bytes` method called on string literals
17434that contain only ASCII characters."##,
17435        default_severity: Severity::Allow,
17436        warn_since: None,
17437        deny_since: None,
17438    },
17439    Lint {
17440        label: "clippy::string_lit_chars_any",
17441        description: r##"Checks for `<string_lit>.chars().any(|i| i == c)`."##,
17442        default_severity: Severity::Allow,
17443        warn_since: None,
17444        deny_since: None,
17445    },
17446    Lint {
17447        label: "clippy::string_slice",
17448        description: r##"Checks for slice operations on strings"##,
17449        default_severity: Severity::Allow,
17450        warn_since: None,
17451        deny_since: None,
17452    },
17453    Lint {
17454        label: "clippy::string_to_string",
17455        description: r##"This lint checks for `.to_string()` method calls on values of type `String`."##,
17456        default_severity: Severity::Allow,
17457        warn_since: None,
17458        deny_since: None,
17459    },
17460    Lint {
17461        label: "clippy::strlen_on_c_strings",
17462        description: r##"Checks for usage of `libc::strlen` on a `CString` or `CStr` value,
17463and suggest calling `as_bytes().len()` or `to_bytes().len()` respectively instead."##,
17464        default_severity: Severity::Allow,
17465        warn_since: None,
17466        deny_since: None,
17467    },
17468    Lint {
17469        label: "clippy::struct_excessive_bools",
17470        description: r##"Checks for excessive
17471use of bools in structs."##,
17472        default_severity: Severity::Allow,
17473        warn_since: None,
17474        deny_since: None,
17475    },
17476    Lint {
17477        label: "clippy::struct_field_names",
17478        description: r##"Detects struct fields that are prefixed or suffixed
17479by the same characters or the name of the struct itself."##,
17480        default_severity: Severity::Allow,
17481        warn_since: None,
17482        deny_since: None,
17483    },
17484    Lint {
17485        label: "clippy::suboptimal_flops",
17486        description: r##"Looks for floating-point expressions that
17487can be expressed using built-in methods to improve both
17488accuracy and performance."##,
17489        default_severity: Severity::Allow,
17490        warn_since: None,
17491        deny_since: None,
17492    },
17493    Lint {
17494        label: "clippy::suspicious_arithmetic_impl",
17495        description: r##"Lints for suspicious operations in impls of arithmetic operators, e.g.
17496subtracting elements in an Add impl."##,
17497        default_severity: Severity::Allow,
17498        warn_since: None,
17499        deny_since: None,
17500    },
17501    Lint {
17502        label: "clippy::suspicious_assignment_formatting",
17503        description: r##"Checks for usage of the non-existent `=*`, `=!` and `=-`
17504operators."##,
17505        default_severity: Severity::Allow,
17506        warn_since: None,
17507        deny_since: None,
17508    },
17509    Lint {
17510        label: "clippy::suspicious_command_arg_space",
17511        description: r##"Checks for `Command::arg()` invocations that look like they
17512should be multiple arguments instead, such as `arg(-t ext2)`."##,
17513        default_severity: Severity::Allow,
17514        warn_since: None,
17515        deny_since: None,
17516    },
17517    Lint {
17518        label: "clippy::suspicious_doc_comments",
17519        description: r##"Detects the use of outer doc comments (`///`, `/**`) followed by a bang (`!`): `///!`"##,
17520        default_severity: Severity::Allow,
17521        warn_since: None,
17522        deny_since: None,
17523    },
17524    Lint {
17525        label: "clippy::suspicious_else_formatting",
17526        description: r##"Checks for formatting of `else`. It lints if the `else`
17527is followed immediately by a newline or the `else` seems to be missing."##,
17528        default_severity: Severity::Allow,
17529        warn_since: None,
17530        deny_since: None,
17531    },
17532    Lint {
17533        label: "clippy::suspicious_map",
17534        description: r##"Checks for calls to `map` followed by a `count`."##,
17535        default_severity: Severity::Allow,
17536        warn_since: None,
17537        deny_since: None,
17538    },
17539    Lint {
17540        label: "clippy::suspicious_op_assign_impl",
17541        description: r##"Lints for suspicious operations in impls of OpAssign, e.g.
17542subtracting elements in an AddAssign impl."##,
17543        default_severity: Severity::Allow,
17544        warn_since: None,
17545        deny_since: None,
17546    },
17547    Lint {
17548        label: "clippy::suspicious_open_options",
17549        description: r##"Checks for the suspicious use of `OpenOptions::create()`
17550without an explicit `OpenOptions::truncate()`."##,
17551        default_severity: Severity::Allow,
17552        warn_since: None,
17553        deny_since: None,
17554    },
17555    Lint {
17556        label: "clippy::suspicious_operation_groupings",
17557        description: r##"Checks for unlikely usages of binary operators that are almost
17558certainly typos and/or copy/paste errors, given the other usages
17559of binary operators nearby."##,
17560        default_severity: Severity::Allow,
17561        warn_since: None,
17562        deny_since: None,
17563    },
17564    Lint {
17565        label: "clippy::suspicious_splitn",
17566        description: r##"Checks for calls to [`splitn`]
17567(https://doc.rust-lang.org/std/primitive.str.html#method.splitn) and
17568related functions with either zero or one splits."##,
17569        default_severity: Severity::Allow,
17570        warn_since: None,
17571        deny_since: None,
17572    },
17573    Lint {
17574        label: "clippy::suspicious_to_owned",
17575        description: r##"Checks for the usage of `_.to_owned()`, on a `Cow<'_, _>`."##,
17576        default_severity: Severity::Allow,
17577        warn_since: None,
17578        deny_since: None,
17579    },
17580    Lint {
17581        label: "clippy::suspicious_unary_op_formatting",
17582        description: r##"Checks the formatting of a unary operator on the right hand side
17583of a binary operator. It lints if there is no space between the binary and unary operators,
17584but there is a space between the unary and its operand."##,
17585        default_severity: Severity::Allow,
17586        warn_since: None,
17587        deny_since: None,
17588    },
17589    Lint {
17590        label: "clippy::suspicious_xor_used_as_pow",
17591        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."##,
17592        default_severity: Severity::Allow,
17593        warn_since: None,
17594        deny_since: None,
17595    },
17596    Lint {
17597        label: "clippy::swap_ptr_to_ref",
17598        description: r##"Checks for calls to `core::mem::swap` where either parameter is derived from a pointer"##,
17599        default_severity: Severity::Allow,
17600        warn_since: None,
17601        deny_since: None,
17602    },
17603    Lint {
17604        label: "clippy::tabs_in_doc_comments",
17605        description: r##"Checks doc comments for usage of tab characters."##,
17606        default_severity: Severity::Allow,
17607        warn_since: None,
17608        deny_since: None,
17609    },
17610    Lint {
17611        label: "clippy::temporary_assignment",
17612        description: r##"Checks for construction of a structure or tuple just to
17613assign a value in it."##,
17614        default_severity: Severity::Allow,
17615        warn_since: None,
17616        deny_since: None,
17617    },
17618    Lint {
17619        label: "clippy::test_attr_in_doctest",
17620        description: r##"Checks for `#[test]` in doctests unless they are marked with
17621either `ignore`, `no_run` or `compile_fail`."##,
17622        default_severity: Severity::Allow,
17623        warn_since: None,
17624        deny_since: None,
17625    },
17626    Lint {
17627        label: "clippy::tests_outside_test_module",
17628        description: r##"Triggers when a testing function (marked with the `#[test]` attribute) isn't inside a testing module
17629(marked with `#[cfg(test)]`)."##,
17630        default_severity: Severity::Allow,
17631        warn_since: None,
17632        deny_since: None,
17633    },
17634    Lint {
17635        label: "clippy::to_digit_is_some",
17636        description: r##"Checks for `.to_digit(..).is_some()` on `char`s."##,
17637        default_severity: Severity::Allow,
17638        warn_since: None,
17639        deny_since: None,
17640    },
17641    Lint {
17642        label: "clippy::to_string_in_format_args",
17643        description: r##"Checks for [`ToString::to_string`](https://doc.rust-lang.org/std/string/trait.ToString.html#tymethod.to_string)
17644applied to a type that implements [`Display`](https://doc.rust-lang.org/std/fmt/trait.Display.html)
17645in a macro that does formatting."##,
17646        default_severity: Severity::Allow,
17647        warn_since: None,
17648        deny_since: None,
17649    },
17650    Lint {
17651        label: "clippy::to_string_trait_impl",
17652        description: r##"Checks for direct implementations of `ToString`."##,
17653        default_severity: Severity::Allow,
17654        warn_since: None,
17655        deny_since: None,
17656    },
17657    Lint {
17658        label: "clippy::todo",
17659        description: r##"Checks for usage of `todo!`."##,
17660        default_severity: Severity::Allow,
17661        warn_since: None,
17662        deny_since: None,
17663    },
17664    Lint {
17665        label: "clippy::too_long_first_doc_paragraph",
17666        description: r##"Checks if the first line in the documentation of items listed in module page is too long."##,
17667        default_severity: Severity::Allow,
17668        warn_since: None,
17669        deny_since: None,
17670    },
17671    Lint {
17672        label: "clippy::too_many_arguments",
17673        description: r##"Checks for functions with too many parameters."##,
17674        default_severity: Severity::Allow,
17675        warn_since: None,
17676        deny_since: None,
17677    },
17678    Lint {
17679        label: "clippy::too_many_lines",
17680        description: r##"Checks for functions with a large amount of lines."##,
17681        default_severity: Severity::Allow,
17682        warn_since: None,
17683        deny_since: None,
17684    },
17685    Lint {
17686        label: "clippy::toplevel_ref_arg",
17687        description: r##"Checks for function arguments and let bindings denoted as
17688`ref`."##,
17689        default_severity: Severity::Allow,
17690        warn_since: None,
17691        deny_since: None,
17692    },
17693    Lint {
17694        label: "clippy::trailing_empty_array",
17695        description: r##"Displays a warning when a struct with a trailing zero-sized array is declared without a `repr` attribute."##,
17696        default_severity: Severity::Allow,
17697        warn_since: None,
17698        deny_since: None,
17699    },
17700    Lint {
17701        label: "clippy::trait_duplication_in_bounds",
17702        description: r##"Checks for cases where generics or trait objects are being used and multiple
17703syntax specifications for trait bounds are used simultaneously."##,
17704        default_severity: Severity::Allow,
17705        warn_since: None,
17706        deny_since: None,
17707    },
17708    Lint {
17709        label: "clippy::transmute_bytes_to_str",
17710        description: r##"Checks for transmutes from a `&[u8]` to a `&str`."##,
17711        default_severity: Severity::Allow,
17712        warn_since: None,
17713        deny_since: None,
17714    },
17715    Lint {
17716        label: "clippy::transmute_float_to_int",
17717        description: r##"Checks for transmutes from a float to an integer."##,
17718        default_severity: Severity::Allow,
17719        warn_since: None,
17720        deny_since: None,
17721    },
17722    Lint {
17723        label: "clippy::transmute_int_to_bool",
17724        description: r##"Checks for transmutes from an integer to a `bool`."##,
17725        default_severity: Severity::Allow,
17726        warn_since: None,
17727        deny_since: None,
17728    },
17729    Lint {
17730        label: "clippy::transmute_int_to_char",
17731        description: r##"Checks for transmutes from an integer to a `char`."##,
17732        default_severity: Severity::Allow,
17733        warn_since: None,
17734        deny_since: None,
17735    },
17736    Lint {
17737        label: "clippy::transmute_int_to_float",
17738        description: r##"Checks for transmutes from an integer to a float."##,
17739        default_severity: Severity::Allow,
17740        warn_since: None,
17741        deny_since: None,
17742    },
17743    Lint {
17744        label: "clippy::transmute_int_to_non_zero",
17745        description: r##"Checks for transmutes from `T` to `NonZero<T>`, and suggests the `new_unchecked`
17746method instead."##,
17747        default_severity: Severity::Allow,
17748        warn_since: None,
17749        deny_since: None,
17750    },
17751    Lint {
17752        label: "clippy::transmute_null_to_fn",
17753        description: r##"Checks for null function pointer creation through transmute."##,
17754        default_severity: Severity::Allow,
17755        warn_since: None,
17756        deny_since: None,
17757    },
17758    Lint {
17759        label: "clippy::transmute_num_to_bytes",
17760        description: r##"Checks for transmutes from a number to an array of `u8`"##,
17761        default_severity: Severity::Allow,
17762        warn_since: None,
17763        deny_since: None,
17764    },
17765    Lint {
17766        label: "clippy::transmute_ptr_to_ptr",
17767        description: r##"Checks for transmutes from a pointer to a pointer, or
17768from a reference to a reference."##,
17769        default_severity: Severity::Allow,
17770        warn_since: None,
17771        deny_since: None,
17772    },
17773    Lint {
17774        label: "clippy::transmute_ptr_to_ref",
17775        description: r##"Checks for transmutes from a pointer to a reference."##,
17776        default_severity: Severity::Allow,
17777        warn_since: None,
17778        deny_since: None,
17779    },
17780    Lint {
17781        label: "clippy::transmute_undefined_repr",
17782        description: r##"Checks for transmutes between types which do not have a representation defined relative to
17783each other."##,
17784        default_severity: Severity::Allow,
17785        warn_since: None,
17786        deny_since: None,
17787    },
17788    Lint {
17789        label: "clippy::transmutes_expressible_as_ptr_casts",
17790        description: r##"Checks for transmutes that could be a pointer cast."##,
17791        default_severity: Severity::Allow,
17792        warn_since: None,
17793        deny_since: None,
17794    },
17795    Lint {
17796        label: "clippy::transmuting_null",
17797        description: r##"Checks for transmute calls which would receive a null pointer."##,
17798        default_severity: Severity::Allow,
17799        warn_since: None,
17800        deny_since: None,
17801    },
17802    Lint {
17803        label: "clippy::trim_split_whitespace",
17804        description: r##"Warns about calling `str::trim` (or variants) before `str::split_whitespace`."##,
17805        default_severity: Severity::Allow,
17806        warn_since: None,
17807        deny_since: None,
17808    },
17809    Lint {
17810        label: "clippy::trivial_regex",
17811        description: r##"Checks for trivial [regex](https://crates.io/crates/regex)
17812creation (with `Regex::new`, `RegexBuilder::new`, or `RegexSet::new`)."##,
17813        default_severity: Severity::Allow,
17814        warn_since: None,
17815        deny_since: None,
17816    },
17817    Lint {
17818        label: "clippy::trivially_copy_pass_by_ref",
17819        description: r##"Checks for functions taking arguments by reference, where
17820the argument type is `Copy` and small enough to be more efficient to always
17821pass by value."##,
17822        default_severity: Severity::Allow,
17823        warn_since: None,
17824        deny_since: None,
17825    },
17826    Lint {
17827        label: "clippy::try_err",
17828        description: r##"Checks for usage of `Err(x)?`."##,
17829        default_severity: Severity::Allow,
17830        warn_since: None,
17831        deny_since: None,
17832    },
17833    Lint {
17834        label: "clippy::tuple_array_conversions",
17835        description: r##"Checks for tuple<=>array conversions that are not done with `.into()`."##,
17836        default_severity: Severity::Allow,
17837        warn_since: None,
17838        deny_since: None,
17839    },
17840    Lint {
17841        label: "clippy::type_complexity",
17842        description: r##"Checks for types used in structs, parameters and `let`
17843declarations above a certain complexity threshold."##,
17844        default_severity: Severity::Allow,
17845        warn_since: None,
17846        deny_since: None,
17847    },
17848    Lint {
17849        label: "clippy::type_id_on_box",
17850        description: r##"Looks for calls to `.type_id()` on a `Box<dyn _>`."##,
17851        default_severity: Severity::Allow,
17852        warn_since: None,
17853        deny_since: None,
17854    },
17855    Lint {
17856        label: "clippy::type_repetition_in_bounds",
17857        description: r##"This lint warns about unnecessary type repetitions in trait bounds"##,
17858        default_severity: Severity::Allow,
17859        warn_since: None,
17860        deny_since: None,
17861    },
17862    Lint {
17863        label: "clippy::unchecked_duration_subtraction",
17864        description: r##"Lints subtraction between an `Instant` and a `Duration`."##,
17865        default_severity: Severity::Allow,
17866        warn_since: None,
17867        deny_since: None,
17868    },
17869    Lint {
17870        label: "clippy::unconditional_recursion",
17871        description: r##"Checks that there isn't an infinite recursion in trait
17872implementations."##,
17873        default_severity: Severity::Allow,
17874        warn_since: None,
17875        deny_since: None,
17876    },
17877    Lint {
17878        label: "clippy::undocumented_unsafe_blocks",
17879        description: r##"Checks for `unsafe` blocks and impls without a `// SAFETY: ` comment
17880explaining why the unsafe operations performed inside
17881the block are safe.
17882
17883Note the comment must appear on the line(s) preceding the unsafe block
17884with nothing appearing in between. The following is ok:
17885```rust
17886foo(
17887    // SAFETY:
17888    // This is a valid safety comment
17889    unsafe { *x }
17890)
17891```
17892But neither of these are:
17893```rust
17894// SAFETY:
17895// This is not a valid safety comment
17896foo(
17897    /* SAFETY: Neither is this */ unsafe { *x },
17898);
17899```"##,
17900        default_severity: Severity::Allow,
17901        warn_since: None,
17902        deny_since: None,
17903    },
17904    Lint {
17905        label: "clippy::unicode_not_nfc",
17906        description: r##"Checks for string literals that contain Unicode in a form
17907that is not equal to its
17908[NFC-recomposition](http://www.unicode.org/reports/tr15/#Norm_Forms)."##,
17909        default_severity: Severity::Allow,
17910        warn_since: None,
17911        deny_since: None,
17912    },
17913    Lint {
17914        label: "clippy::unimplemented",
17915        description: r##"Checks for usage of `unimplemented!`."##,
17916        default_severity: Severity::Allow,
17917        warn_since: None,
17918        deny_since: None,
17919    },
17920    Lint {
17921        label: "clippy::uninhabited_references",
17922        description: r##"It detects references to uninhabited types, such as `!` and
17923warns when those are either dereferenced or returned from a function."##,
17924        default_severity: Severity::Allow,
17925        warn_since: None,
17926        deny_since: None,
17927    },
17928    Lint {
17929        label: "clippy::uninit_assumed_init",
17930        description: r##"Checks for `MaybeUninit::uninit().assume_init()`."##,
17931        default_severity: Severity::Allow,
17932        warn_since: None,
17933        deny_since: None,
17934    },
17935    Lint {
17936        label: "clippy::uninit_vec",
17937        description: r##"Checks for `set_len()` call that creates `Vec` with uninitialized elements.
17938This is commonly caused by calling `set_len()` right after allocating or
17939reserving a buffer with `new()`, `default()`, `with_capacity()`, or `reserve()`."##,
17940        default_severity: Severity::Allow,
17941        warn_since: None,
17942        deny_since: None,
17943    },
17944    Lint {
17945        label: "clippy::uninlined_format_args",
17946        description: r##"Detect when a variable is not inlined in a format string,
17947and suggests to inline it."##,
17948        default_severity: Severity::Allow,
17949        warn_since: None,
17950        deny_since: None,
17951    },
17952    Lint {
17953        label: "clippy::unit_arg",
17954        description: r##"Checks for passing a unit value as an argument to a function without using a
17955unit literal (`()`)."##,
17956        default_severity: Severity::Allow,
17957        warn_since: None,
17958        deny_since: None,
17959    },
17960    Lint {
17961        label: "clippy::unit_cmp",
17962        description: r##"Checks for comparisons to unit. This includes all binary
17963comparisons (like `==` and `<`) and asserts."##,
17964        default_severity: Severity::Allow,
17965        warn_since: None,
17966        deny_since: None,
17967    },
17968    Lint {
17969        label: "clippy::unit_hash",
17970        description: r##"Detects `().hash(_)`."##,
17971        default_severity: Severity::Allow,
17972        warn_since: None,
17973        deny_since: None,
17974    },
17975    Lint {
17976        label: "clippy::unit_return_expecting_ord",
17977        description: r##"Checks for functions that expect closures of type
17978Fn(...) -> Ord where the implemented closure returns the unit type.
17979The lint also suggests to remove the semi-colon at the end of the statement if present."##,
17980        default_severity: Severity::Allow,
17981        warn_since: None,
17982        deny_since: None,
17983    },
17984    Lint {
17985        label: "clippy::unnecessary_box_returns",
17986        description: r##"Checks for a return type containing a `Box<T>` where `T` implements `Sized`
17987
17988The lint ignores `Box<T>` where `T` is larger than `unnecessary_box_size`,
17989as returning a large `T` directly may be detrimental to performance."##,
17990        default_severity: Severity::Allow,
17991        warn_since: None,
17992        deny_since: None,
17993    },
17994    Lint {
17995        label: "clippy::unnecessary_cast",
17996        description: r##"Checks for casts to the same type, casts of int literals to integer
17997types, casts of float literals to float types, and casts between raw
17998pointers that don't change type or constness."##,
17999        default_severity: Severity::Allow,
18000        warn_since: None,
18001        deny_since: None,
18002    },
18003    Lint {
18004        label: "clippy::unnecessary_clippy_cfg",
18005        description: r##"Checks for `#[cfg_attr(clippy, allow(clippy::lint))]`
18006and suggests to replace it with `#[allow(clippy::lint)]`."##,
18007        default_severity: Severity::Allow,
18008        warn_since: None,
18009        deny_since: None,
18010    },
18011    Lint {
18012        label: "clippy::unnecessary_fallible_conversions",
18013        description: r##"Checks for calls to `TryInto::try_into` and `TryFrom::try_from` when their infallible counterparts
18014could be used."##,
18015        default_severity: Severity::Allow,
18016        warn_since: None,
18017        deny_since: None,
18018    },
18019    Lint {
18020        label: "clippy::unnecessary_filter_map",
18021        description: r##"Checks for `filter_map` calls that could be replaced by `filter` or `map`.
18022More specifically it checks if the closure provided is only performing one of the
18023filter or map operations and suggests the appropriate option."##,
18024        default_severity: Severity::Allow,
18025        warn_since: None,
18026        deny_since: None,
18027    },
18028    Lint {
18029        label: "clippy::unnecessary_find_map",
18030        description: r##"Checks for `find_map` calls that could be replaced by `find` or `map`. More
18031specifically it checks if the closure provided is only performing one of the
18032find or map operations and suggests the appropriate option."##,
18033        default_severity: Severity::Allow,
18034        warn_since: None,
18035        deny_since: None,
18036    },
18037    Lint {
18038        label: "clippy::unnecessary_first_then_check",
18039        description: r##"Checks the usage of `.first().is_some()` or `.first().is_none()` to check if a slice is
18040empty."##,
18041        default_severity: Severity::Allow,
18042        warn_since: None,
18043        deny_since: None,
18044    },
18045    Lint {
18046        label: "clippy::unnecessary_fold",
18047        description: r##"Checks for usage of `fold` when a more succinct alternative exists.
18048Specifically, this checks for `fold`s which could be replaced by `any`, `all`,
18049`sum` or `product`."##,
18050        default_severity: Severity::Allow,
18051        warn_since: None,
18052        deny_since: None,
18053    },
18054    Lint {
18055        label: "clippy::unnecessary_get_then_check",
18056        description: r##"Checks the usage of `.get().is_some()` or `.get().is_none()` on std map types."##,
18057        default_severity: Severity::Allow,
18058        warn_since: None,
18059        deny_since: None,
18060    },
18061    Lint {
18062        label: "clippy::unnecessary_join",
18063        description: r##"Checks for usage of `.collect::<Vec<String>>().join()` on iterators."##,
18064        default_severity: Severity::Allow,
18065        warn_since: None,
18066        deny_since: None,
18067    },
18068    Lint {
18069        label: "clippy::unnecessary_lazy_evaluations",
18070        description: r##"As the counterpart to `or_fun_call`, this lint looks for unnecessary
18071lazily evaluated closures on `Option` and `Result`.
18072
18073This lint suggests changing the following functions, when eager evaluation results in
18074simpler code:
18075 - `unwrap_or_else` to `unwrap_or`
18076 - `and_then` to `and`
18077 - `or_else` to `or`
18078 - `get_or_insert_with` to `get_or_insert`
18079 - `ok_or_else` to `ok_or`
18080 - `then` to `then_some` (for msrv >= 1.62.0)"##,
18081        default_severity: Severity::Allow,
18082        warn_since: None,
18083        deny_since: None,
18084    },
18085    Lint {
18086        label: "clippy::unnecessary_literal_unwrap",
18087        description: r##"Checks for `.unwrap()` related calls on `Result`s and `Option`s that are constructed."##,
18088        default_severity: Severity::Allow,
18089        warn_since: None,
18090        deny_since: None,
18091    },
18092    Lint {
18093        label: "clippy::unnecessary_map_on_constructor",
18094        description: r##"Suggests removing the use of a `map()` (or `map_err()`) method when an `Option` or `Result`
18095is being constructed."##,
18096        default_severity: Severity::Allow,
18097        warn_since: None,
18098        deny_since: None,
18099    },
18100    Lint {
18101        label: "clippy::unnecessary_min_or_max",
18102        description: r##"Checks for unnecessary calls to `min()` or `max()` in the following cases
18103- Either both side is constant
18104- One side is clearly larger than the other, like i32::MIN and an i32 variable"##,
18105        default_severity: Severity::Allow,
18106        warn_since: None,
18107        deny_since: None,
18108    },
18109    Lint {
18110        label: "clippy::unnecessary_mut_passed",
18111        description: r##"Detects passing a mutable reference to a function that only
18112requires an immutable reference."##,
18113        default_severity: Severity::Allow,
18114        warn_since: None,
18115        deny_since: None,
18116    },
18117    Lint {
18118        label: "clippy::unnecessary_operation",
18119        description: r##"Checks for expression statements that can be reduced to a
18120sub-expression."##,
18121        default_severity: Severity::Allow,
18122        warn_since: None,
18123        deny_since: None,
18124    },
18125    Lint {
18126        label: "clippy::unnecessary_owned_empty_strings",
18127        description: r##"Detects cases of owned empty strings being passed as an argument to a function expecting `&str`"##,
18128        default_severity: Severity::Allow,
18129        warn_since: None,
18130        deny_since: None,
18131    },
18132    Lint {
18133        label: "clippy::unnecessary_result_map_or_else",
18134        description: r##"Checks for usage of `.map_or_else()` map closure for `Result` type."##,
18135        default_severity: Severity::Allow,
18136        warn_since: None,
18137        deny_since: None,
18138    },
18139    Lint {
18140        label: "clippy::unnecessary_safety_comment",
18141        description: r##"Checks for `// SAFETY: ` comments on safe code."##,
18142        default_severity: Severity::Allow,
18143        warn_since: None,
18144        deny_since: None,
18145    },
18146    Lint {
18147        label: "clippy::unnecessary_safety_doc",
18148        description: r##"Checks for the doc comments of publicly visible
18149safe functions and traits and warns if there is a `# Safety` section."##,
18150        default_severity: Severity::Allow,
18151        warn_since: None,
18152        deny_since: None,
18153    },
18154    Lint {
18155        label: "clippy::unnecessary_self_imports",
18156        description: r##"Checks for imports ending in `::{self}`."##,
18157        default_severity: Severity::Allow,
18158        warn_since: None,
18159        deny_since: None,
18160    },
18161    Lint {
18162        label: "clippy::unnecessary_sort_by",
18163        description: r##"Checks for usage of `Vec::sort_by` passing in a closure
18164which compares the two arguments, either directly or indirectly."##,
18165        default_severity: Severity::Allow,
18166        warn_since: None,
18167        deny_since: None,
18168    },
18169    Lint {
18170        label: "clippy::unnecessary_struct_initialization",
18171        description: r##"Checks for initialization of an identical `struct` from another instance
18172of the type, either by copying a base without setting any field or by
18173moving all fields individually."##,
18174        default_severity: Severity::Allow,
18175        warn_since: None,
18176        deny_since: None,
18177    },
18178    Lint {
18179        label: "clippy::unnecessary_to_owned",
18180        description: r##"Checks for unnecessary calls to [`ToOwned::to_owned`](https://doc.rust-lang.org/std/borrow/trait.ToOwned.html#tymethod.to_owned)
18181and other `to_owned`-like functions."##,
18182        default_severity: Severity::Allow,
18183        warn_since: None,
18184        deny_since: None,
18185    },
18186    Lint {
18187        label: "clippy::unnecessary_unwrap",
18188        description: r##"Checks for calls of `unwrap[_err]()` that cannot fail."##,
18189        default_severity: Severity::Allow,
18190        warn_since: None,
18191        deny_since: None,
18192    },
18193    Lint {
18194        label: "clippy::unnecessary_wraps",
18195        description: r##"Checks for private functions that only return `Ok` or `Some`."##,
18196        default_severity: Severity::Allow,
18197        warn_since: None,
18198        deny_since: None,
18199    },
18200    Lint {
18201        label: "clippy::unneeded_field_pattern",
18202        description: r##"Checks for structure field patterns bound to wildcards."##,
18203        default_severity: Severity::Allow,
18204        warn_since: None,
18205        deny_since: None,
18206    },
18207    Lint {
18208        label: "clippy::unneeded_wildcard_pattern",
18209        description: r##"Checks for tuple patterns with a wildcard
18210pattern (`_`) is next to a rest pattern (`..`).
18211
18212_NOTE_: While `_, ..` means there is at least one element left, `..`
18213means there are 0 or more elements left. This can make a difference
18214when refactoring, but shouldn't result in errors in the refactored code,
18215since the wildcard pattern isn't used anyway."##,
18216        default_severity: Severity::Allow,
18217        warn_since: None,
18218        deny_since: None,
18219    },
18220    Lint {
18221        label: "clippy::unnested_or_patterns",
18222        description: r##"Checks for unnested or-patterns, e.g., `Some(0) | Some(2)` and
18223suggests replacing the pattern with a nested one, `Some(0 | 2)`.
18224
18225Another way to think of this is that it rewrites patterns in
18226*disjunctive normal form (DNF)* into *conjunctive normal form (CNF)*."##,
18227        default_severity: Severity::Allow,
18228        warn_since: None,
18229        deny_since: None,
18230    },
18231    Lint {
18232        label: "clippy::unreachable",
18233        description: r##"Checks for usage of `unreachable!`."##,
18234        default_severity: Severity::Allow,
18235        warn_since: None,
18236        deny_since: None,
18237    },
18238    Lint {
18239        label: "clippy::unreadable_literal",
18240        description: r##"Warns if a long integral or floating-point constant does
18241not contain underscores."##,
18242        default_severity: Severity::Allow,
18243        warn_since: None,
18244        deny_since: None,
18245    },
18246    Lint {
18247        label: "clippy::unsafe_derive_deserialize",
18248        description: r##"Checks for deriving `serde::Deserialize` on a type that
18249has methods using `unsafe`."##,
18250        default_severity: Severity::Allow,
18251        warn_since: None,
18252        deny_since: None,
18253    },
18254    Lint {
18255        label: "clippy::unsafe_removed_from_name",
18256        description: r##"Checks for imports that remove unsafe from an item's
18257name."##,
18258        default_severity: Severity::Allow,
18259        warn_since: None,
18260        deny_since: None,
18261    },
18262    Lint {
18263        label: "clippy::unsafe_vector_initialization",
18264        description: r##"Nothing. This lint has been deprecated"##,
18265        default_severity: Severity::Allow,
18266        warn_since: None,
18267        deny_since: None,
18268    },
18269    Lint {
18270        label: "clippy::unseparated_literal_suffix",
18271        description: r##"Warns if literal suffixes are not separated by an
18272underscore.
18273To enforce unseparated literal suffix style,
18274see the `separated_literal_suffix` lint."##,
18275        default_severity: Severity::Allow,
18276        warn_since: None,
18277        deny_since: None,
18278    },
18279    Lint {
18280        label: "clippy::unsound_collection_transmute",
18281        description: r##"Checks for transmutes between collections whose
18282types have different ABI, size or alignment."##,
18283        default_severity: Severity::Allow,
18284        warn_since: None,
18285        deny_since: None,
18286    },
18287    Lint {
18288        label: "clippy::unstable_as_mut_slice",
18289        description: r##"Nothing. This lint has been deprecated"##,
18290        default_severity: Severity::Allow,
18291        warn_since: None,
18292        deny_since: None,
18293    },
18294    Lint {
18295        label: "clippy::unstable_as_slice",
18296        description: r##"Nothing. This lint has been deprecated"##,
18297        default_severity: Severity::Allow,
18298        warn_since: None,
18299        deny_since: None,
18300    },
18301    Lint {
18302        label: "clippy::unused_async",
18303        description: r##"Checks for functions that are declared `async` but have no `.await`s inside of them."##,
18304        default_severity: Severity::Allow,
18305        warn_since: None,
18306        deny_since: None,
18307    },
18308    Lint {
18309        label: "clippy::unused_collect",
18310        description: r##"Nothing. This lint has been deprecated"##,
18311        default_severity: Severity::Allow,
18312        warn_since: None,
18313        deny_since: None,
18314    },
18315    Lint {
18316        label: "clippy::unused_enumerate_index",
18317        description: r##"Checks for uses of the `enumerate` method where the index is unused (`_`)"##,
18318        default_severity: Severity::Allow,
18319        warn_since: None,
18320        deny_since: None,
18321    },
18322    Lint {
18323        label: "clippy::unused_format_specs",
18324        description: r##"Detects [formatting parameters] that have no effect on the output of
18325`format!()`, `println!()` or similar macros."##,
18326        default_severity: Severity::Allow,
18327        warn_since: None,
18328        deny_since: None,
18329    },
18330    Lint {
18331        label: "clippy::unused_io_amount",
18332        description: r##"Checks for unused written/read amount."##,
18333        default_severity: Severity::Allow,
18334        warn_since: None,
18335        deny_since: None,
18336    },
18337    Lint {
18338        label: "clippy::unused_peekable",
18339        description: r##"Checks for the creation of a `peekable` iterator that is never `.peek()`ed"##,
18340        default_severity: Severity::Allow,
18341        warn_since: None,
18342        deny_since: None,
18343    },
18344    Lint {
18345        label: "clippy::unused_result_ok",
18346        description: r##"Checks for calls to `Result::ok()` without using the returned `Option`."##,
18347        default_severity: Severity::Allow,
18348        warn_since: None,
18349        deny_since: None,
18350    },
18351    Lint {
18352        label: "clippy::unused_rounding",
18353        description: r##"Detects cases where a whole-number literal float is being rounded, using
18354the `floor`, `ceil`, or `round` methods."##,
18355        default_severity: Severity::Allow,
18356        warn_since: None,
18357        deny_since: None,
18358    },
18359    Lint {
18360        label: "clippy::unused_self",
18361        description: r##"Checks methods that contain a `self` argument but don't use it"##,
18362        default_severity: Severity::Allow,
18363        warn_since: None,
18364        deny_since: None,
18365    },
18366    Lint {
18367        label: "clippy::unused_trait_names",
18368        description: r##"Checks for `use Trait` where the Trait is only used for its methods and not referenced by a path directly."##,
18369        default_severity: Severity::Allow,
18370        warn_since: None,
18371        deny_since: None,
18372    },
18373    Lint {
18374        label: "clippy::unused_unit",
18375        description: r##"Checks for unit (`()`) expressions that can be removed."##,
18376        default_severity: Severity::Allow,
18377        warn_since: None,
18378        deny_since: None,
18379    },
18380    Lint {
18381        label: "clippy::unusual_byte_groupings",
18382        description: r##"Warns if hexadecimal or binary literals are not grouped
18383by nibble or byte."##,
18384        default_severity: Severity::Allow,
18385        warn_since: None,
18386        deny_since: None,
18387    },
18388    Lint {
18389        label: "clippy::unwrap_in_result",
18390        description: r##"Checks for functions of type `Result` that contain `expect()` or `unwrap()`"##,
18391        default_severity: Severity::Allow,
18392        warn_since: None,
18393        deny_since: None,
18394    },
18395    Lint {
18396        label: "clippy::unwrap_or_default",
18397        description: r##"Checks for usages of the following functions with an argument that constructs a default value
18398(e.g., `Default::default` or `String::new`):
18399- `unwrap_or`
18400- `unwrap_or_else`
18401- `or_insert`
18402- `or_insert_with`"##,
18403        default_severity: Severity::Allow,
18404        warn_since: None,
18405        deny_since: None,
18406    },
18407    Lint {
18408        label: "clippy::unwrap_used",
18409        description: r##"Checks for `.unwrap()` or `.unwrap_err()` calls on `Result`s and `.unwrap()` call on `Option`s."##,
18410        default_severity: Severity::Allow,
18411        warn_since: None,
18412        deny_since: None,
18413    },
18414    Lint {
18415        label: "clippy::upper_case_acronyms",
18416        description: r##"Checks for fully capitalized names and optionally names containing a capitalized acronym."##,
18417        default_severity: Severity::Allow,
18418        warn_since: None,
18419        deny_since: None,
18420    },
18421    Lint {
18422        label: "clippy::use_debug",
18423        description: r##"Checks for usage of `Debug` formatting. The purpose of this
18424lint is to catch debugging remnants."##,
18425        default_severity: Severity::Allow,
18426        warn_since: None,
18427        deny_since: None,
18428    },
18429    Lint {
18430        label: "clippy::use_self",
18431        description: r##"Checks for unnecessary repetition of structure name when a
18432replacement with `Self` is applicable."##,
18433        default_severity: Severity::Allow,
18434        warn_since: None,
18435        deny_since: None,
18436    },
18437    Lint {
18438        label: "clippy::used_underscore_binding",
18439        description: r##"Checks for the use of bindings with a single leading
18440underscore."##,
18441        default_severity: Severity::Allow,
18442        warn_since: None,
18443        deny_since: None,
18444    },
18445    Lint {
18446        label: "clippy::used_underscore_items",
18447        description: r##"Checks for the use of item with a single leading
18448underscore."##,
18449        default_severity: Severity::Allow,
18450        warn_since: None,
18451        deny_since: None,
18452    },
18453    Lint {
18454        label: "clippy::useless_asref",
18455        description: r##"Checks for usage of `.as_ref()` or `.as_mut()` where the
18456types before and after the call are the same."##,
18457        default_severity: Severity::Allow,
18458        warn_since: None,
18459        deny_since: None,
18460    },
18461    Lint {
18462        label: "clippy::useless_attribute",
18463        description: r##"Checks for `extern crate` and `use` items annotated with
18464lint attributes.
18465
18466This lint permits lint attributes for lints emitted on the items themself.
18467For `use` items these lints are:
18468* ambiguous_glob_reexports
18469* dead_code
18470* deprecated
18471* hidden_glob_reexports
18472* unreachable_pub
18473* unused
18474* unused_braces
18475* unused_import_braces
18476* clippy::disallowed_types
18477* clippy::enum_glob_use
18478* clippy::macro_use_imports
18479* clippy::module_name_repetitions
18480* clippy::redundant_pub_crate
18481* clippy::single_component_path_imports
18482* clippy::unsafe_removed_from_name
18483* clippy::wildcard_imports
18484
18485For `extern crate` items these lints are:
18486* `unused_imports` on items with `#[macro_use]`"##,
18487        default_severity: Severity::Allow,
18488        warn_since: None,
18489        deny_since: None,
18490    },
18491    Lint {
18492        label: "clippy::useless_conversion",
18493        description: r##"Checks for `Into`, `TryInto`, `From`, `TryFrom`, or `IntoIter` calls
18494which uselessly convert to the same type."##,
18495        default_severity: Severity::Allow,
18496        warn_since: None,
18497        deny_since: None,
18498    },
18499    Lint {
18500        label: "clippy::useless_format",
18501        description: r##"Checks for the use of `format!(string literal with no
18502argument)` and `format!({}, foo)` where `foo` is a string."##,
18503        default_severity: Severity::Allow,
18504        warn_since: None,
18505        deny_since: None,
18506    },
18507    Lint {
18508        label: "clippy::useless_let_if_seq",
18509        description: r##"Checks for variable declarations immediately followed by a
18510conditional affectation."##,
18511        default_severity: Severity::Allow,
18512        warn_since: None,
18513        deny_since: None,
18514    },
18515    Lint {
18516        label: "clippy::useless_transmute",
18517        description: r##"Checks for transmutes to the original type of the object
18518and transmutes that could be a cast."##,
18519        default_severity: Severity::Allow,
18520        warn_since: None,
18521        deny_since: None,
18522    },
18523    Lint {
18524        label: "clippy::useless_vec",
18525        description: r##"Checks for usage of `vec![..]` when using `[..]` would
18526be possible."##,
18527        default_severity: Severity::Allow,
18528        warn_since: None,
18529        deny_since: None,
18530    },
18531    Lint {
18532        label: "clippy::vec_box",
18533        description: r##"Checks for usage of `Vec<Box<T>>` where T: Sized anywhere in the code.
18534Check the [Box documentation](https://doc.rust-lang.org/std/boxed/index.html) for more information."##,
18535        default_severity: Severity::Allow,
18536        warn_since: None,
18537        deny_since: None,
18538    },
18539    Lint {
18540        label: "clippy::vec_init_then_push",
18541        description: r##"Checks for calls to `push` immediately after creating a new `Vec`.
18542
18543If the `Vec` is created using `with_capacity` this will only lint if the capacity is a
18544constant and the number of pushes is greater than or equal to the initial capacity.
18545
18546If the `Vec` is extended after the initial sequence of pushes and it was default initialized
18547then this will only lint after there were at least four pushes. This number may change in
18548the future."##,
18549        default_severity: Severity::Allow,
18550        warn_since: None,
18551        deny_since: None,
18552    },
18553    Lint {
18554        label: "clippy::vec_resize_to_zero",
18555        description: r##"Finds occurrences of `Vec::resize(0, an_int)`"##,
18556        default_severity: Severity::Allow,
18557        warn_since: None,
18558        deny_since: None,
18559    },
18560    Lint {
18561        label: "clippy::verbose_bit_mask",
18562        description: r##"Checks for bit masks that can be replaced by a call
18563to `trailing_zeros`"##,
18564        default_severity: Severity::Allow,
18565        warn_since: None,
18566        deny_since: None,
18567    },
18568    Lint {
18569        label: "clippy::verbose_file_reads",
18570        description: r##"Checks for usage of File::read_to_end and File::read_to_string."##,
18571        default_severity: Severity::Allow,
18572        warn_since: None,
18573        deny_since: None,
18574    },
18575    Lint {
18576        label: "clippy::waker_clone_wake",
18577        description: r##"Checks for usage of `waker.clone().wake()`"##,
18578        default_severity: Severity::Allow,
18579        warn_since: None,
18580        deny_since: None,
18581    },
18582    Lint {
18583        label: "clippy::while_float",
18584        description: r##"Checks for while loops comparing floating point values."##,
18585        default_severity: Severity::Allow,
18586        warn_since: None,
18587        deny_since: None,
18588    },
18589    Lint {
18590        label: "clippy::while_immutable_condition",
18591        description: r##"Checks whether variables used within while loop condition
18592can be (and are) mutated in the body."##,
18593        default_severity: Severity::Allow,
18594        warn_since: None,
18595        deny_since: None,
18596    },
18597    Lint {
18598        label: "clippy::while_let_loop",
18599        description: r##"Detects `loop + match` combinations that are easier
18600written as a `while let` loop."##,
18601        default_severity: Severity::Allow,
18602        warn_since: None,
18603        deny_since: None,
18604    },
18605    Lint {
18606        label: "clippy::while_let_on_iterator",
18607        description: r##"Checks for `while let` expressions on iterators."##,
18608        default_severity: Severity::Allow,
18609        warn_since: None,
18610        deny_since: None,
18611    },
18612    Lint {
18613        label: "clippy::wildcard_dependencies",
18614        description: r##"Checks for wildcard dependencies in the `Cargo.toml`."##,
18615        default_severity: Severity::Allow,
18616        warn_since: None,
18617        deny_since: None,
18618    },
18619    Lint {
18620        label: "clippy::wildcard_enum_match_arm",
18621        description: r##"Checks for wildcard enum matches using `_`."##,
18622        default_severity: Severity::Allow,
18623        warn_since: None,
18624        deny_since: None,
18625    },
18626    Lint {
18627        label: "clippy::wildcard_imports",
18628        description: r##"Checks for wildcard imports `use _::*`."##,
18629        default_severity: Severity::Allow,
18630        warn_since: None,
18631        deny_since: None,
18632    },
18633    Lint {
18634        label: "clippy::wildcard_in_or_patterns",
18635        description: r##"Checks for wildcard pattern used with others patterns in same match arm."##,
18636        default_severity: Severity::Allow,
18637        warn_since: None,
18638        deny_since: None,
18639    },
18640    Lint {
18641        label: "clippy::write_literal",
18642        description: r##"This lint warns about the use of literals as `write!`/`writeln!` args."##,
18643        default_severity: Severity::Allow,
18644        warn_since: None,
18645        deny_since: None,
18646    },
18647    Lint {
18648        label: "clippy::write_with_newline",
18649        description: r##"This lint warns when you use `write!()` with a format
18650string that
18651ends in a newline."##,
18652        default_severity: Severity::Allow,
18653        warn_since: None,
18654        deny_since: None,
18655    },
18656    Lint {
18657        label: "clippy::writeln_empty_string",
18658        description: r##"This lint warns when you use `writeln!(buf, )` to
18659print a newline."##,
18660        default_severity: Severity::Allow,
18661        warn_since: None,
18662        deny_since: None,
18663    },
18664    Lint {
18665        label: "clippy::wrong_pub_self_convention",
18666        description: r##"Nothing. This lint has been deprecated"##,
18667        default_severity: Severity::Allow,
18668        warn_since: None,
18669        deny_since: None,
18670    },
18671    Lint {
18672        label: "clippy::wrong_self_convention",
18673        description: r##"Checks for methods with certain name prefixes or suffixes, and which
18674do not adhere to standard conventions regarding how `self` is taken.
18675The actual rules are:
18676
18677|Prefix |Postfix     |`self` taken                   | `self` type  |
18678|-------|------------|-------------------------------|--------------|
18679|`as_`  | none       |`&self` or `&mut self`         | any          |
18680|`from_`| none       | none                          | any          |
18681|`into_`| none       |`self`                         | any          |
18682|`is_`  | none       |`&mut self` or `&self` or none | any          |
18683|`to_`  | `_mut`     |`&mut self`                    | any          |
18684|`to_`  | not `_mut` |`self`                         | `Copy`       |
18685|`to_`  | not `_mut` |`&self`                        | not `Copy`   |
18686
18687Note: Clippy doesn't trigger methods with `to_` prefix in:
18688- Traits definition.
18689Clippy can not tell if a type that implements a trait is `Copy` or not.
18690- Traits implementation, when `&self` is taken.
18691The method signature is controlled by the trait and often `&self` is required for all types that implement the trait
18692(see e.g. the `std::string::ToString` trait).
18693
18694Clippy allows `Pin<&Self>` and `Pin<&mut Self>` if `&self` and `&mut self` is required.
18695
18696Please find more info here:
18697https://rust-lang.github.io/api-guidelines/naming.html#ad-hoc-conversions-follow-as_-to_-into_-conventions-c-conv"##,
18698        default_severity: Severity::Allow,
18699        warn_since: None,
18700        deny_since: None,
18701    },
18702    Lint {
18703        label: "clippy::wrong_transmute",
18704        description: r##"Checks for transmutes that can't ever be correct on any
18705architecture."##,
18706        default_severity: Severity::Allow,
18707        warn_since: None,
18708        deny_since: None,
18709    },
18710    Lint {
18711        label: "clippy::zero_divided_by_zero",
18712        description: r##"Checks for `0.0 / 0.0`."##,
18713        default_severity: Severity::Allow,
18714        warn_since: None,
18715        deny_since: None,
18716    },
18717    Lint {
18718        label: "clippy::zero_prefixed_literal",
18719        description: r##"Warns if an integral constant literal starts with `0`."##,
18720        default_severity: Severity::Allow,
18721        warn_since: None,
18722        deny_since: None,
18723    },
18724    Lint {
18725        label: "clippy::zero_ptr",
18726        description: r##"Catch casts from `0` to some pointer type"##,
18727        default_severity: Severity::Allow,
18728        warn_since: None,
18729        deny_since: None,
18730    },
18731    Lint {
18732        label: "clippy::zero_repeat_side_effects",
18733        description: r##"Checks for array or vec initializations which call a function or method,
18734but which have a repeat count of zero."##,
18735        default_severity: Severity::Allow,
18736        warn_since: None,
18737        deny_since: None,
18738    },
18739    Lint {
18740        label: "clippy::zero_sized_map_values",
18741        description: r##"Checks for maps with zero-sized value types anywhere in the code."##,
18742        default_severity: Severity::Allow,
18743        warn_since: None,
18744        deny_since: None,
18745    },
18746    Lint {
18747        label: "clippy::zombie_processes",
18748        description: r##"Looks for code that spawns a process but never calls `wait()` on the child."##,
18749        default_severity: Severity::Allow,
18750        warn_since: None,
18751        deny_since: None,
18752    },
18753    Lint {
18754        label: "clippy::zst_offset",
18755        description: r##"Checks for `offset(_)`, `wrapping_`{`add`, `sub`}, etc. on raw pointers to
18756zero-sized types"##,
18757        default_severity: Severity::Allow,
18758        warn_since: None,
18759        deny_since: None,
18760    },
18761];
18762pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
18763    LintGroup {
18764        lint: Lint {
18765            label: "clippy::cargo",
18766            description: r##"lint group for: clippy::cargo_common_metadata, clippy::multiple_crate_versions, clippy::negative_feature_names, clippy::redundant_feature_names, clippy::wildcard_dependencies"##,
18767            default_severity: Severity::Allow,
18768            warn_since: None,
18769            deny_since: None,
18770        },
18771        children: &[
18772            "clippy::cargo_common_metadata",
18773            "clippy::multiple_crate_versions",
18774            "clippy::negative_feature_names",
18775            "clippy::redundant_feature_names",
18776            "clippy::wildcard_dependencies",
18777        ],
18778    },
18779    LintGroup {
18780        lint: Lint {
18781            label: "clippy::complexity",
18782            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"##,
18783            default_severity: Severity::Allow,
18784            warn_since: None,
18785            deny_since: None,
18786        },
18787        children: &[
18788            "clippy::bind_instead_of_map",
18789            "clippy::bool_comparison",
18790            "clippy::borrow_deref_ref",
18791            "clippy::borrowed_box",
18792            "clippy::bytes_count_to_len",
18793            "clippy::char_lit_as_u8",
18794            "clippy::clone_on_copy",
18795            "clippy::crosspointer_transmute",
18796            "clippy::default_constructed_unit_structs",
18797            "clippy::deprecated_cfg_attr",
18798            "clippy::deref_addrof",
18799            "clippy::derivable_impls",
18800            "clippy::diverging_sub_expression",
18801            "clippy::double_comparisons",
18802            "clippy::double_parens",
18803            "clippy::duration_subsec",
18804            "clippy::excessive_nesting",
18805            "clippy::explicit_auto_deref",
18806            "clippy::explicit_counter_loop",
18807            "clippy::explicit_write",
18808            "clippy::extra_unused_lifetimes",
18809            "clippy::extra_unused_type_parameters",
18810            "clippy::filter_map_identity",
18811            "clippy::filter_next",
18812            "clippy::flat_map_identity",
18813            "clippy::get_last_with_len",
18814            "clippy::identity_op",
18815            "clippy::implied_bounds_in_impls",
18816            "clippy::inspect_for_each",
18817            "clippy::int_plus_one",
18818            "clippy::iter_count",
18819            "clippy::iter_kv_map",
18820            "clippy::let_with_type_underscore",
18821            "clippy::manual_c_str_literals",
18822            "clippy::manual_clamp",
18823            "clippy::manual_div_ceil",
18824            "clippy::manual_filter",
18825            "clippy::manual_filter_map",
18826            "clippy::manual_find",
18827            "clippy::manual_find_map",
18828            "clippy::manual_flatten",
18829            "clippy::manual_hash_one",
18830            "clippy::manual_inspect",
18831            "clippy::manual_is_power_of_two",
18832            "clippy::manual_main_separator_str",
18833            "clippy::manual_range_patterns",
18834            "clippy::manual_rem_euclid",
18835            "clippy::manual_slice_size_calculation",
18836            "clippy::manual_split_once",
18837            "clippy::manual_strip",
18838            "clippy::manual_swap",
18839            "clippy::manual_unwrap_or",
18840            "clippy::map_flatten",
18841            "clippy::map_identity",
18842            "clippy::match_as_ref",
18843            "clippy::match_single_binding",
18844            "clippy::needless_arbitrary_self_type",
18845            "clippy::needless_bool",
18846            "clippy::needless_bool_assign",
18847            "clippy::needless_borrowed_reference",
18848            "clippy::needless_if",
18849            "clippy::needless_lifetimes",
18850            "clippy::needless_match",
18851            "clippy::needless_option_as_deref",
18852            "clippy::needless_option_take",
18853            "clippy::needless_question_mark",
18854            "clippy::needless_splitn",
18855            "clippy::needless_update",
18856            "clippy::neg_cmp_op_on_partial_ord",
18857            "clippy::no_effect",
18858            "clippy::nonminimal_bool",
18859            "clippy::only_used_in_recursion",
18860            "clippy::option_as_ref_deref",
18861            "clippy::option_filter_map",
18862            "clippy::option_map_unit_fn",
18863            "clippy::or_then_unwrap",
18864            "clippy::partialeq_ne_impl",
18865            "clippy::precedence",
18866            "clippy::ptr_offset_with_cast",
18867            "clippy::range_zip_with_len",
18868            "clippy::redundant_as_str",
18869            "clippy::redundant_async_block",
18870            "clippy::redundant_at_rest_pattern",
18871            "clippy::redundant_closure_call",
18872            "clippy::redundant_guards",
18873            "clippy::redundant_slicing",
18874            "clippy::repeat_once",
18875            "clippy::reserve_after_initialization",
18876            "clippy::result_filter_map",
18877            "clippy::result_map_unit_fn",
18878            "clippy::search_is_some",
18879            "clippy::seek_from_current",
18880            "clippy::seek_to_start_instead_of_rewind",
18881            "clippy::short_circuit_statement",
18882            "clippy::single_element_loop",
18883            "clippy::skip_while_next",
18884            "clippy::string_from_utf8_as_bytes",
18885            "clippy::strlen_on_c_strings",
18886            "clippy::temporary_assignment",
18887            "clippy::too_many_arguments",
18888            "clippy::transmute_bytes_to_str",
18889            "clippy::transmute_float_to_int",
18890            "clippy::transmute_int_to_bool",
18891            "clippy::transmute_int_to_char",
18892            "clippy::transmute_int_to_float",
18893            "clippy::transmute_int_to_non_zero",
18894            "clippy::transmute_num_to_bytes",
18895            "clippy::transmute_ptr_to_ref",
18896            "clippy::transmutes_expressible_as_ptr_casts",
18897            "clippy::type_complexity",
18898            "clippy::unit_arg",
18899            "clippy::unnecessary_cast",
18900            "clippy::unnecessary_filter_map",
18901            "clippy::unnecessary_find_map",
18902            "clippy::unnecessary_first_then_check",
18903            "clippy::unnecessary_literal_unwrap",
18904            "clippy::unnecessary_map_on_constructor",
18905            "clippy::unnecessary_min_or_max",
18906            "clippy::unnecessary_operation",
18907            "clippy::unnecessary_sort_by",
18908            "clippy::unnecessary_unwrap",
18909            "clippy::unneeded_wildcard_pattern",
18910            "clippy::unused_format_specs",
18911            "clippy::useless_asref",
18912            "clippy::useless_conversion",
18913            "clippy::useless_format",
18914            "clippy::useless_transmute",
18915            "clippy::vec_box",
18916            "clippy::while_let_loop",
18917            "clippy::wildcard_in_or_patterns",
18918            "clippy::zero_divided_by_zero",
18919            "clippy::zero_prefixed_literal",
18920        ],
18921    },
18922    LintGroup {
18923        lint: Lint {
18924            label: "clippy::correctness",
18925            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"##,
18926            default_severity: Severity::Allow,
18927            warn_since: None,
18928            deny_since: None,
18929        },
18930        children: &[
18931            "clippy::absurd_extreme_comparisons",
18932            "clippy::almost_swapped",
18933            "clippy::approx_constant",
18934            "clippy::async_yields_async",
18935            "clippy::bad_bit_mask",
18936            "clippy::cast_slice_different_sizes",
18937            "clippy::deprecated_semver",
18938            "clippy::derive_ord_xor_partial_ord",
18939            "clippy::derived_hash_with_manual_eq",
18940            "clippy::eager_transmute",
18941            "clippy::enum_clike_unportable_variant",
18942            "clippy::eq_op",
18943            "clippy::erasing_op",
18944            "clippy::fn_address_comparisons",
18945            "clippy::if_let_mutex",
18946            "clippy::ifs_same_cond",
18947            "clippy::impl_hash_borrow_with_str_and_bytes",
18948            "clippy::impossible_comparisons",
18949            "clippy::ineffective_bit_mask",
18950            "clippy::infinite_iter",
18951            "clippy::inherent_to_string_shadow_display",
18952            "clippy::inline_fn_without_body",
18953            "clippy::invalid_null_ptr_usage",
18954            "clippy::invalid_regex",
18955            "clippy::inverted_saturating_sub",
18956            "clippy::invisible_characters",
18957            "clippy::iter_next_loop",
18958            "clippy::iter_skip_zero",
18959            "clippy::iterator_step_by_zero",
18960            "clippy::let_underscore_lock",
18961            "clippy::lint_groups_priority",
18962            "clippy::match_str_case_mismatch",
18963            "clippy::mem_replace_with_uninit",
18964            "clippy::min_max",
18965            "clippy::mistyped_literal_suffixes",
18966            "clippy::modulo_one",
18967            "clippy::mut_from_ref",
18968            "clippy::never_loop",
18969            "clippy::non_octal_unix_permissions",
18970            "clippy::nonsensical_open_options",
18971            "clippy::not_unsafe_ptr_arg_deref",
18972            "clippy::option_env_unwrap",
18973            "clippy::out_of_bounds_indexing",
18974            "clippy::overly_complex_bool_expr",
18975            "clippy::panicking_overflow_checks",
18976            "clippy::panicking_unwrap",
18977            "clippy::possible_missing_comma",
18978            "clippy::read_line_without_trim",
18979            "clippy::recursive_format_impl",
18980            "clippy::redundant_comparisons",
18981            "clippy::redundant_locals",
18982            "clippy::reversed_empty_ranges",
18983            "clippy::self_assignment",
18984            "clippy::serde_api_misuse",
18985            "clippy::size_of_in_element_count",
18986            "clippy::suspicious_splitn",
18987            "clippy::transmute_null_to_fn",
18988            "clippy::transmuting_null",
18989            "clippy::uninit_assumed_init",
18990            "clippy::uninit_vec",
18991            "clippy::unit_cmp",
18992            "clippy::unit_hash",
18993            "clippy::unit_return_expecting_ord",
18994            "clippy::unsound_collection_transmute",
18995            "clippy::unused_io_amount",
18996            "clippy::useless_attribute",
18997            "clippy::vec_resize_to_zero",
18998            "clippy::while_immutable_condition",
18999            "clippy::wrong_transmute",
19000            "clippy::zst_offset",
19001        ],
19002    },
19003    LintGroup {
19004        lint: Lint {
19005            label: "clippy::deprecated",
19006            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"##,
19007            default_severity: Severity::Allow,
19008            warn_since: None,
19009            deny_since: None,
19010        },
19011        children: &[
19012            "clippy::assign_ops",
19013            "clippy::extend_from_slice",
19014            "clippy::misaligned_transmute",
19015            "clippy::pub_enum_variant_names",
19016            "clippy::range_step_by_zero",
19017            "clippy::regex_macro",
19018            "clippy::replace_consts",
19019            "clippy::should_assert_eq",
19020            "clippy::unsafe_vector_initialization",
19021            "clippy::unstable_as_mut_slice",
19022            "clippy::unstable_as_slice",
19023            "clippy::unused_collect",
19024            "clippy::wrong_pub_self_convention",
19025        ],
19026    },
19027    LintGroup {
19028        lint: Lint {
19029            label: "clippy::nursery",
19030            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"##,
19031            default_severity: Severity::Allow,
19032            warn_since: None,
19033            deny_since: None,
19034        },
19035        children: &[
19036            "clippy::as_ptr_cast_mut",
19037            "clippy::branches_sharing_code",
19038            "clippy::clear_with_drain",
19039            "clippy::cognitive_complexity",
19040            "clippy::collection_is_never_read",
19041            "clippy::debug_assert_with_mut_call",
19042            "clippy::derive_partial_eq_without_eq",
19043            "clippy::equatable_if_let",
19044            "clippy::fallible_impl_from",
19045            "clippy::future_not_send",
19046            "clippy::imprecise_flops",
19047            "clippy::iter_on_empty_collections",
19048            "clippy::iter_on_single_items",
19049            "clippy::iter_with_drain",
19050            "clippy::large_stack_frames",
19051            "clippy::missing_const_for_fn",
19052            "clippy::mutex_integer",
19053            "clippy::needless_collect",
19054            "clippy::needless_pass_by_ref_mut",
19055            "clippy::non_send_fields_in_send_ty",
19056            "clippy::nonstandard_macro_braces",
19057            "clippy::option_if_let_else",
19058            "clippy::or_fun_call",
19059            "clippy::path_buf_push_overwrite",
19060            "clippy::read_zero_byte_vec",
19061            "clippy::redundant_clone",
19062            "clippy::redundant_pub_crate",
19063            "clippy::set_contains_or_insert",
19064            "clippy::significant_drop_in_scrutinee",
19065            "clippy::significant_drop_tightening",
19066            "clippy::string_lit_as_bytes",
19067            "clippy::suboptimal_flops",
19068            "clippy::suspicious_operation_groupings",
19069            "clippy::trailing_empty_array",
19070            "clippy::trait_duplication_in_bounds",
19071            "clippy::transmute_undefined_repr",
19072            "clippy::trivial_regex",
19073            "clippy::tuple_array_conversions",
19074            "clippy::type_repetition_in_bounds",
19075            "clippy::uninhabited_references",
19076            "clippy::unnecessary_struct_initialization",
19077            "clippy::unused_peekable",
19078            "clippy::unused_rounding",
19079            "clippy::use_self",
19080            "clippy::useless_let_if_seq",
19081            "clippy::while_float",
19082        ],
19083    },
19084    LintGroup {
19085        lint: Lint {
19086            label: "clippy::pedantic",
19087            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"##,
19088            default_severity: Severity::Allow,
19089            warn_since: None,
19090            deny_since: None,
19091        },
19092        children: &[
19093            "clippy::assigning_clones",
19094            "clippy::bool_to_int_with_if",
19095            "clippy::borrow_as_ptr",
19096            "clippy::case_sensitive_file_extension_comparisons",
19097            "clippy::cast_lossless",
19098            "clippy::cast_possible_truncation",
19099            "clippy::cast_possible_wrap",
19100            "clippy::cast_precision_loss",
19101            "clippy::cast_ptr_alignment",
19102            "clippy::cast_sign_loss",
19103            "clippy::checked_conversions",
19104            "clippy::cloned_instead_of_copied",
19105            "clippy::copy_iterator",
19106            "clippy::default_trait_access",
19107            "clippy::doc_link_with_quotes",
19108            "clippy::doc_markdown",
19109            "clippy::empty_enum",
19110            "clippy::enum_glob_use",
19111            "clippy::expl_impl_clone_on_copy",
19112            "clippy::explicit_deref_methods",
19113            "clippy::explicit_into_iter_loop",
19114            "clippy::explicit_iter_loop",
19115            "clippy::filter_map_next",
19116            "clippy::flat_map_option",
19117            "clippy::float_cmp",
19118            "clippy::fn_params_excessive_bools",
19119            "clippy::from_iter_instead_of_collect",
19120            "clippy::if_not_else",
19121            "clippy::ignored_unit_patterns",
19122            "clippy::implicit_clone",
19123            "clippy::implicit_hasher",
19124            "clippy::inconsistent_struct_constructor",
19125            "clippy::index_refutable_slice",
19126            "clippy::inefficient_to_string",
19127            "clippy::inline_always",
19128            "clippy::into_iter_without_iter",
19129            "clippy::invalid_upcast_comparisons",
19130            "clippy::items_after_statements",
19131            "clippy::iter_filter_is_ok",
19132            "clippy::iter_filter_is_some",
19133            "clippy::iter_not_returning_iterator",
19134            "clippy::iter_without_into_iter",
19135            "clippy::large_digit_groups",
19136            "clippy::large_futures",
19137            "clippy::large_stack_arrays",
19138            "clippy::large_types_passed_by_value",
19139            "clippy::linkedlist",
19140            "clippy::macro_use_imports",
19141            "clippy::manual_assert",
19142            "clippy::manual_instant_elapsed",
19143            "clippy::manual_is_variant_and",
19144            "clippy::manual_let_else",
19145            "clippy::manual_ok_or",
19146            "clippy::manual_string_new",
19147            "clippy::many_single_char_names",
19148            "clippy::map_unwrap_or",
19149            "clippy::match_bool",
19150            "clippy::match_on_vec_items",
19151            "clippy::match_same_arms",
19152            "clippy::match_wild_err_arm",
19153            "clippy::match_wildcard_for_single_variants",
19154            "clippy::maybe_infinite_iter",
19155            "clippy::mismatching_type_param_order",
19156            "clippy::missing_errors_doc",
19157            "clippy::missing_fields_in_debug",
19158            "clippy::missing_panics_doc",
19159            "clippy::module_name_repetitions",
19160            "clippy::must_use_candidate",
19161            "clippy::mut_mut",
19162            "clippy::naive_bytecount",
19163            "clippy::needless_bitwise_bool",
19164            "clippy::needless_continue",
19165            "clippy::needless_for_each",
19166            "clippy::needless_pass_by_value",
19167            "clippy::needless_raw_string_hashes",
19168            "clippy::no_effect_underscore_binding",
19169            "clippy::no_mangle_with_rust_abi",
19170            "clippy::option_as_ref_cloned",
19171            "clippy::option_option",
19172            "clippy::ptr_as_ptr",
19173            "clippy::ptr_cast_constness",
19174            "clippy::pub_underscore_fields",
19175            "clippy::range_minus_one",
19176            "clippy::range_plus_one",
19177            "clippy::redundant_closure_for_method_calls",
19178            "clippy::redundant_else",
19179            "clippy::ref_as_ptr",
19180            "clippy::ref_binding_to_reference",
19181            "clippy::ref_option",
19182            "clippy::ref_option_ref",
19183            "clippy::return_self_not_must_use",
19184            "clippy::same_functions_in_if_condition",
19185            "clippy::semicolon_if_nothing_returned",
19186            "clippy::should_panic_without_expect",
19187            "clippy::similar_names",
19188            "clippy::single_char_pattern",
19189            "clippy::single_match_else",
19190            "clippy::stable_sort_primitive",
19191            "clippy::str_split_at_newline",
19192            "clippy::string_add_assign",
19193            "clippy::struct_excessive_bools",
19194            "clippy::struct_field_names",
19195            "clippy::too_many_lines",
19196            "clippy::transmute_ptr_to_ptr",
19197            "clippy::trivially_copy_pass_by_ref",
19198            "clippy::unchecked_duration_subtraction",
19199            "clippy::unicode_not_nfc",
19200            "clippy::uninlined_format_args",
19201            "clippy::unnecessary_box_returns",
19202            "clippy::unnecessary_join",
19203            "clippy::unnecessary_wraps",
19204            "clippy::unnested_or_patterns",
19205            "clippy::unreadable_literal",
19206            "clippy::unsafe_derive_deserialize",
19207            "clippy::unused_async",
19208            "clippy::unused_self",
19209            "clippy::used_underscore_binding",
19210            "clippy::used_underscore_items",
19211            "clippy::verbose_bit_mask",
19212            "clippy::wildcard_imports",
19213            "clippy::zero_sized_map_values",
19214        ],
19215    },
19216    LintGroup {
19217        lint: Lint {
19218            label: "clippy::perf",
19219            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"##,
19220            default_severity: Severity::Allow,
19221            warn_since: None,
19222            deny_since: None,
19223        },
19224        children: &[
19225            "clippy::box_collection",
19226            "clippy::boxed_local",
19227            "clippy::cmp_owned",
19228            "clippy::collapsible_str_replace",
19229            "clippy::drain_collect",
19230            "clippy::expect_fun_call",
19231            "clippy::extend_with_drain",
19232            "clippy::format_collect",
19233            "clippy::format_in_format_args",
19234            "clippy::iter_overeager_cloned",
19235            "clippy::large_const_arrays",
19236            "clippy::large_enum_variant",
19237            "clippy::manual_memcpy",
19238            "clippy::manual_retain",
19239            "clippy::manual_str_repeat",
19240            "clippy::manual_try_fold",
19241            "clippy::map_entry",
19242            "clippy::missing_const_for_thread_local",
19243            "clippy::missing_spin_loop",
19244            "clippy::readonly_write_lock",
19245            "clippy::redundant_allocation",
19246            "clippy::result_large_err",
19247            "clippy::slow_vector_initialization",
19248            "clippy::to_string_in_format_args",
19249            "clippy::unnecessary_to_owned",
19250            "clippy::useless_vec",
19251            "clippy::vec_init_then_push",
19252            "clippy::waker_clone_wake",
19253        ],
19254    },
19255    LintGroup {
19256        lint: Lint {
19257            label: "clippy::restriction",
19258            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"##,
19259            default_severity: Severity::Allow,
19260            warn_since: None,
19261            deny_since: None,
19262        },
19263        children: &[
19264            "clippy::absolute_paths",
19265            "clippy::alloc_instead_of_core",
19266            "clippy::allow_attributes",
19267            "clippy::allow_attributes_without_reason",
19268            "clippy::arithmetic_side_effects",
19269            "clippy::as_conversions",
19270            "clippy::as_underscore",
19271            "clippy::assertions_on_result_states",
19272            "clippy::big_endian_bytes",
19273            "clippy::cfg_not_test",
19274            "clippy::clone_on_ref_ptr",
19275            "clippy::create_dir",
19276            "clippy::dbg_macro",
19277            "clippy::decimal_literal_representation",
19278            "clippy::default_numeric_fallback",
19279            "clippy::default_union_representation",
19280            "clippy::deref_by_slicing",
19281            "clippy::disallowed_script_idents",
19282            "clippy::else_if_without_else",
19283            "clippy::empty_drop",
19284            "clippy::empty_enum_variants_with_brackets",
19285            "clippy::empty_structs_with_brackets",
19286            "clippy::error_impl_error",
19287            "clippy::exhaustive_enums",
19288            "clippy::exhaustive_structs",
19289            "clippy::exit",
19290            "clippy::expect_used",
19291            "clippy::field_scoped_visibility_modifiers",
19292            "clippy::filetype_is_file",
19293            "clippy::float_arithmetic",
19294            "clippy::float_cmp_const",
19295            "clippy::fn_to_numeric_cast_any",
19296            "clippy::format_push_string",
19297            "clippy::get_unwrap",
19298            "clippy::host_endian_bytes",
19299            "clippy::if_then_some_else_none",
19300            "clippy::impl_trait_in_params",
19301            "clippy::implicit_return",
19302            "clippy::indexing_slicing",
19303            "clippy::infinite_loop",
19304            "clippy::inline_asm_x86_att_syntax",
19305            "clippy::inline_asm_x86_intel_syntax",
19306            "clippy::integer_division",
19307            "clippy::integer_division_remainder_used",
19308            "clippy::iter_over_hash_type",
19309            "clippy::large_include_file",
19310            "clippy::let_underscore_must_use",
19311            "clippy::let_underscore_untyped",
19312            "clippy::little_endian_bytes",
19313            "clippy::lossy_float_literal",
19314            "clippy::map_err_ignore",
19315            "clippy::mem_forget",
19316            "clippy::min_ident_chars",
19317            "clippy::missing_assert_message",
19318            "clippy::missing_asserts_for_indexing",
19319            "clippy::missing_docs_in_private_items",
19320            "clippy::missing_inline_in_public_items",
19321            "clippy::missing_trait_methods",
19322            "clippy::mixed_read_write_in_expression",
19323            "clippy::mod_module_files",
19324            "clippy::modulo_arithmetic",
19325            "clippy::multiple_inherent_impl",
19326            "clippy::multiple_unsafe_ops_per_block",
19327            "clippy::mutex_atomic",
19328            "clippy::needless_raw_strings",
19329            "clippy::non_ascii_literal",
19330            "clippy::non_zero_suggestions",
19331            "clippy::panic",
19332            "clippy::panic_in_result_fn",
19333            "clippy::partial_pub_fields",
19334            "clippy::pathbuf_init_then_push",
19335            "clippy::pattern_type_mismatch",
19336            "clippy::print_stderr",
19337            "clippy::print_stdout",
19338            "clippy::pub_use",
19339            "clippy::pub_with_shorthand",
19340            "clippy::pub_without_shorthand",
19341            "clippy::question_mark_used",
19342            "clippy::rc_buffer",
19343            "clippy::rc_mutex",
19344            "clippy::redundant_type_annotations",
19345            "clippy::ref_patterns",
19346            "clippy::renamed_function_params",
19347            "clippy::rest_pat_in_fully_bound_structs",
19348            "clippy::same_name_method",
19349            "clippy::self_named_module_files",
19350            "clippy::semicolon_inside_block",
19351            "clippy::semicolon_outside_block",
19352            "clippy::separated_literal_suffix",
19353            "clippy::shadow_reuse",
19354            "clippy::shadow_same",
19355            "clippy::shadow_unrelated",
19356            "clippy::single_call_fn",
19357            "clippy::single_char_lifetime_names",
19358            "clippy::std_instead_of_alloc",
19359            "clippy::std_instead_of_core",
19360            "clippy::str_to_string",
19361            "clippy::string_add",
19362            "clippy::string_lit_chars_any",
19363            "clippy::string_slice",
19364            "clippy::string_to_string",
19365            "clippy::suspicious_xor_used_as_pow",
19366            "clippy::tests_outside_test_module",
19367            "clippy::todo",
19368            "clippy::try_err",
19369            "clippy::undocumented_unsafe_blocks",
19370            "clippy::unimplemented",
19371            "clippy::unnecessary_safety_comment",
19372            "clippy::unnecessary_safety_doc",
19373            "clippy::unnecessary_self_imports",
19374            "clippy::unneeded_field_pattern",
19375            "clippy::unreachable",
19376            "clippy::unseparated_literal_suffix",
19377            "clippy::unused_result_ok",
19378            "clippy::unused_trait_names",
19379            "clippy::unwrap_in_result",
19380            "clippy::unwrap_used",
19381            "clippy::use_debug",
19382            "clippy::verbose_file_reads",
19383            "clippy::wildcard_enum_match_arm",
19384        ],
19385    },
19386    LintGroup {
19387        lint: Lint {
19388            label: "clippy::style",
19389            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"##,
19390            default_severity: Severity::Allow,
19391            warn_since: None,
19392            deny_since: None,
19393        },
19394        children: &[
19395            "clippy::assertions_on_constants",
19396            "clippy::assign_op_pattern",
19397            "clippy::blocks_in_conditions",
19398            "clippy::bool_assert_comparison",
19399            "clippy::borrow_interior_mutable_const",
19400            "clippy::box_default",
19401            "clippy::builtin_type_shadow",
19402            "clippy::byte_char_slices",
19403            "clippy::bytes_nth",
19404            "clippy::chars_last_cmp",
19405            "clippy::chars_next_cmp",
19406            "clippy::cmp_null",
19407            "clippy::collapsible_else_if",
19408            "clippy::collapsible_if",
19409            "clippy::collapsible_match",
19410            "clippy::comparison_chain",
19411            "clippy::comparison_to_empty",
19412            "clippy::declare_interior_mutable_const",
19413            "clippy::default_instead_of_iter_empty",
19414            "clippy::disallowed_macros",
19415            "clippy::disallowed_methods",
19416            "clippy::disallowed_names",
19417            "clippy::disallowed_types",
19418            "clippy::doc_lazy_continuation",
19419            "clippy::double_must_use",
19420            "clippy::double_neg",
19421            "clippy::duplicate_underscore_argument",
19422            "clippy::enum_variant_names",
19423            "clippy::err_expect",
19424            "clippy::excessive_precision",
19425            "clippy::field_reassign_with_default",
19426            "clippy::filter_map_bool_then",
19427            "clippy::fn_to_numeric_cast",
19428            "clippy::fn_to_numeric_cast_with_truncation",
19429            "clippy::for_kv_map",
19430            "clippy::from_over_into",
19431            "clippy::from_str_radix_10",
19432            "clippy::get_first",
19433            "clippy::if_same_then_else",
19434            "clippy::implicit_saturating_add",
19435            "clippy::implicit_saturating_sub",
19436            "clippy::inconsistent_digit_grouping",
19437            "clippy::infallible_destructuring_match",
19438            "clippy::inherent_to_string",
19439            "clippy::init_numbered_fields",
19440            "clippy::into_iter_on_ref",
19441            "clippy::is_digit_ascii_radix",
19442            "clippy::items_after_test_module",
19443            "clippy::iter_cloned_collect",
19444            "clippy::iter_next_slice",
19445            "clippy::iter_nth",
19446            "clippy::iter_nth_zero",
19447            "clippy::iter_skip_next",
19448            "clippy::just_underscores_and_digits",
19449            "clippy::legacy_numeric_constants",
19450            "clippy::len_without_is_empty",
19451            "clippy::len_zero",
19452            "clippy::let_and_return",
19453            "clippy::let_unit_value",
19454            "clippy::main_recursion",
19455            "clippy::manual_async_fn",
19456            "clippy::manual_bits",
19457            "clippy::manual_is_ascii_check",
19458            "clippy::manual_is_finite",
19459            "clippy::manual_is_infinite",
19460            "clippy::manual_map",
19461            "clippy::manual_next_back",
19462            "clippy::manual_non_exhaustive",
19463            "clippy::manual_pattern_char_comparison",
19464            "clippy::manual_range_contains",
19465            "clippy::manual_rotate",
19466            "clippy::manual_saturating_arithmetic",
19467            "clippy::manual_while_let_some",
19468            "clippy::map_clone",
19469            "clippy::map_collect_result_unit",
19470            "clippy::match_like_matches_macro",
19471            "clippy::match_overlapping_arm",
19472            "clippy::match_ref_pats",
19473            "clippy::match_result_ok",
19474            "clippy::mem_replace_option_with_none",
19475            "clippy::mem_replace_with_default",
19476            "clippy::missing_enforced_import_renames",
19477            "clippy::missing_safety_doc",
19478            "clippy::mixed_attributes_style",
19479            "clippy::mixed_case_hex_literals",
19480            "clippy::module_inception",
19481            "clippy::must_use_unit",
19482            "clippy::mut_mutex_lock",
19483            "clippy::needless_borrow",
19484            "clippy::needless_borrows_for_generic_args",
19485            "clippy::needless_doctest_main",
19486            "clippy::needless_else",
19487            "clippy::needless_late_init",
19488            "clippy::needless_parens_on_range_literals",
19489            "clippy::needless_pub_self",
19490            "clippy::needless_range_loop",
19491            "clippy::needless_return",
19492            "clippy::needless_return_with_question_mark",
19493            "clippy::neg_multiply",
19494            "clippy::new_ret_no_self",
19495            "clippy::new_without_default",
19496            "clippy::non_minimal_cfg",
19497            "clippy::obfuscated_if_else",
19498            "clippy::ok_expect",
19499            "clippy::op_ref",
19500            "clippy::option_map_or_err_ok",
19501            "clippy::option_map_or_none",
19502            "clippy::partialeq_to_none",
19503            "clippy::print_literal",
19504            "clippy::print_with_newline",
19505            "clippy::println_empty_string",
19506            "clippy::ptr_arg",
19507            "clippy::ptr_eq",
19508            "clippy::question_mark",
19509            "clippy::redundant_closure",
19510            "clippy::redundant_field_names",
19511            "clippy::redundant_pattern",
19512            "clippy::redundant_pattern_matching",
19513            "clippy::redundant_static_lifetimes",
19514            "clippy::result_map_or_into_option",
19515            "clippy::result_unit_err",
19516            "clippy::same_item_push",
19517            "clippy::self_named_constructors",
19518            "clippy::should_implement_trait",
19519            "clippy::single_char_add_str",
19520            "clippy::single_component_path_imports",
19521            "clippy::single_match",
19522            "clippy::string_extend_chars",
19523            "clippy::tabs_in_doc_comments",
19524            "clippy::to_digit_is_some",
19525            "clippy::to_string_trait_impl",
19526            "clippy::too_long_first_doc_paragraph",
19527            "clippy::toplevel_ref_arg",
19528            "clippy::trim_split_whitespace",
19529            "clippy::unnecessary_fallible_conversions",
19530            "clippy::unnecessary_fold",
19531            "clippy::unnecessary_lazy_evaluations",
19532            "clippy::unnecessary_mut_passed",
19533            "clippy::unnecessary_owned_empty_strings",
19534            "clippy::unsafe_removed_from_name",
19535            "clippy::unused_enumerate_index",
19536            "clippy::unused_unit",
19537            "clippy::unusual_byte_groupings",
19538            "clippy::unwrap_or_default",
19539            "clippy::upper_case_acronyms",
19540            "clippy::while_let_on_iterator",
19541            "clippy::write_literal",
19542            "clippy::write_with_newline",
19543            "clippy::writeln_empty_string",
19544            "clippy::wrong_self_convention",
19545            "clippy::zero_ptr",
19546        ],
19547    },
19548    LintGroup {
19549        lint: Lint {
19550            label: "clippy::suspicious",
19551            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"##,
19552            default_severity: Severity::Allow,
19553            warn_since: None,
19554            deny_since: None,
19555        },
19556        children: &[
19557            "clippy::almost_complete_range",
19558            "clippy::arc_with_non_send_sync",
19559            "clippy::await_holding_invalid_type",
19560            "clippy::await_holding_lock",
19561            "clippy::await_holding_refcell_ref",
19562            "clippy::blanket_clippy_restriction_lints",
19563            "clippy::cast_abs_to_unsigned",
19564            "clippy::cast_enum_constructor",
19565            "clippy::cast_enum_truncation",
19566            "clippy::cast_nan_to_int",
19567            "clippy::cast_slice_from_raw_parts",
19568            "clippy::const_is_empty",
19569            "clippy::crate_in_macro_def",
19570            "clippy::deprecated_clippy_cfg_attr",
19571            "clippy::drop_non_drop",
19572            "clippy::duplicate_mod",
19573            "clippy::duplicated_attributes",
19574            "clippy::empty_docs",
19575            "clippy::empty_line_after_doc_comments",
19576            "clippy::empty_line_after_outer_attr",
19577            "clippy::empty_loop",
19578            "clippy::float_equality_without_abs",
19579            "clippy::forget_non_drop",
19580            "clippy::four_forward_slashes",
19581            "clippy::from_raw_with_void_ptr",
19582            "clippy::incompatible_msrv",
19583            "clippy::ineffective_open_options",
19584            "clippy::iter_out_of_bounds",
19585            "clippy::join_absolute_paths",
19586            "clippy::let_underscore_future",
19587            "clippy::lines_filter_map_ok",
19588            "clippy::macro_metavars_in_unsafe",
19589            "clippy::manual_unwrap_or_default",
19590            "clippy::misnamed_getters",
19591            "clippy::misrefactored_assign_op",
19592            "clippy::missing_transmute_annotations",
19593            "clippy::multi_assignments",
19594            "clippy::multiple_bound_locations",
19595            "clippy::mut_range_bound",
19596            "clippy::mutable_key_type",
19597            "clippy::needless_character_iteration",
19598            "clippy::needless_maybe_sized",
19599            "clippy::no_effect_replace",
19600            "clippy::non_canonical_clone_impl",
19601            "clippy::non_canonical_partial_ord_impl",
19602            "clippy::octal_escapes",
19603            "clippy::path_ends_with_ext",
19604            "clippy::permissions_set_readonly_false",
19605            "clippy::pointers_in_nomem_asm_block",
19606            "clippy::print_in_format_impl",
19607            "clippy::rc_clone_in_vec_init",
19608            "clippy::repeat_vec_with_capacity",
19609            "clippy::single_range_in_vec_init",
19610            "clippy::size_of_ref",
19611            "clippy::suspicious_arithmetic_impl",
19612            "clippy::suspicious_assignment_formatting",
19613            "clippy::suspicious_command_arg_space",
19614            "clippy::suspicious_doc_comments",
19615            "clippy::suspicious_else_formatting",
19616            "clippy::suspicious_map",
19617            "clippy::suspicious_op_assign_impl",
19618            "clippy::suspicious_open_options",
19619            "clippy::suspicious_to_owned",
19620            "clippy::suspicious_unary_op_formatting",
19621            "clippy::swap_ptr_to_ref",
19622            "clippy::test_attr_in_doctest",
19623            "clippy::type_id_on_box",
19624            "clippy::unconditional_recursion",
19625            "clippy::unnecessary_clippy_cfg",
19626            "clippy::unnecessary_get_then_check",
19627            "clippy::unnecessary_result_map_or_else",
19628            "clippy::zero_repeat_side_effects",
19629            "clippy::zombie_processes",
19630        ],
19631    },
19632];