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/HEAD/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/HEAD/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: [#130351]
10727
10728[#130351]: https://github.com/rust-lang/rust/issues/130351
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: "unicode_internals",
11850        description: r##"# `unicode_internals`
11851
11852This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
11853
11854------------------------
11855"##,
11856        default_severity: Severity::Allow,
11857        warn_since: None,
11858        deny_since: None,
11859    },
11860    Lint {
11861        label: "unique_rc_arc",
11862        description: r##"# `unique_rc_arc`
11863
11864The tracking issue for this feature is: [#112566]
11865
11866[#112566]: https://github.com/rust-lang/rust/issues/112566
11867
11868------------------------
11869"##,
11870        default_severity: Severity::Allow,
11871        warn_since: None,
11872        deny_since: None,
11873    },
11874    Lint {
11875        label: "unix_file_vectored_at",
11876        description: r##"# `unix_file_vectored_at`
11877
11878The tracking issue for this feature is: [#89517]
11879
11880[#89517]: https://github.com/rust-lang/rust/issues/89517
11881
11882------------------------
11883"##,
11884        default_severity: Severity::Allow,
11885        warn_since: None,
11886        deny_since: None,
11887    },
11888    Lint {
11889        label: "unix_set_mark",
11890        description: r##"# `unix_set_mark`
11891
11892The tracking issue for this feature is: [#96467]
11893
11894[#96467]: https://github.com/rust-lang/rust/issues/96467
11895
11896------------------------
11897"##,
11898        default_severity: Severity::Allow,
11899        warn_since: None,
11900        deny_since: None,
11901    },
11902    Lint {
11903        label: "unix_socket_ancillary_data",
11904        description: r##"# `unix_socket_ancillary_data`
11905
11906The tracking issue for this feature is: [#76915]
11907
11908[#76915]: https://github.com/rust-lang/rust/issues/76915
11909
11910------------------------
11911"##,
11912        default_severity: Severity::Allow,
11913        warn_since: None,
11914        deny_since: None,
11915    },
11916    Lint {
11917        label: "unix_socket_peek",
11918        description: r##"# `unix_socket_peek`
11919
11920The tracking issue for this feature is: [#76923]
11921
11922[#76923]: https://github.com/rust-lang/rust/issues/76923
11923
11924------------------------
11925"##,
11926        default_severity: Severity::Allow,
11927        warn_since: None,
11928        deny_since: None,
11929    },
11930    Lint {
11931        label: "unqualified_local_imports",
11932        description: r##"# `unqualified_local_imports`
11933
11934This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
11935
11936------------------------
11937"##,
11938        default_severity: Severity::Allow,
11939        warn_since: None,
11940        deny_since: None,
11941    },
11942    Lint {
11943        label: "unsafe_fields",
11944        description: r##"# `unsafe_fields`
11945
11946The tracking issue for this feature is: [#132922]
11947
11948[#132922]: https://github.com/rust-lang/rust/issues/132922
11949
11950------------------------
11951"##,
11952        default_severity: Severity::Allow,
11953        warn_since: None,
11954        deny_since: None,
11955    },
11956    Lint {
11957        label: "unsafe_pin_internals",
11958        description: r##"# `unsafe_pin_internals`
11959
11960This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
11961
11962------------------------
11963"##,
11964        default_severity: Severity::Allow,
11965        warn_since: None,
11966        deny_since: None,
11967    },
11968    Lint {
11969        label: "unsigned_is_multiple_of",
11970        description: r##"# `unsigned_is_multiple_of`
11971
11972The tracking issue for this feature is: [#128101]
11973
11974[#128101]: https://github.com/rust-lang/rust/issues/128101
11975
11976------------------------
11977"##,
11978        default_severity: Severity::Allow,
11979        warn_since: None,
11980        deny_since: None,
11981    },
11982    Lint {
11983        label: "unsigned_nonzero_div_ceil",
11984        description: r##"# `unsigned_nonzero_div_ceil`
11985
11986The tracking issue for this feature is: [#132968]
11987
11988[#132968]: https://github.com/rust-lang/rust/issues/132968
11989
11990------------------------
11991"##,
11992        default_severity: Severity::Allow,
11993        warn_since: None,
11994        deny_since: None,
11995    },
11996    Lint {
11997        label: "unsigned_signed_diff",
11998        description: r##"# `unsigned_signed_diff`
11999
12000The tracking issue for this feature is: [#126041]
12001
12002[#126041]: https://github.com/rust-lang/rust/issues/126041
12003
12004------------------------
12005"##,
12006        default_severity: Severity::Allow,
12007        warn_since: None,
12008        deny_since: None,
12009    },
12010    Lint {
12011        label: "unsize",
12012        description: r##"# `unsize`
12013
12014The tracking issue for this feature is: [#18598]
12015
12016[#18598]: https://github.com/rust-lang/rust/issues/18598
12017
12018------------------------
12019"##,
12020        default_severity: Severity::Allow,
12021        warn_since: None,
12022        deny_since: None,
12023    },
12024    Lint {
12025        label: "unsized_const_params",
12026        description: r##"# `unsized_const_params`
12027
12028The tracking issue for this feature is: [#95174]
12029
12030[#95174]: https://github.com/rust-lang/rust/issues/95174
12031
12032------------------------
12033"##,
12034        default_severity: Severity::Allow,
12035        warn_since: None,
12036        deny_since: None,
12037    },
12038    Lint {
12039        label: "unsized_fn_params",
12040        description: r##"# `unsized_fn_params`
12041
12042The tracking issue for this feature is: [#48055]
12043
12044[#48055]: https://github.com/rust-lang/rust/issues/48055
12045
12046------------------------
12047"##,
12048        default_severity: Severity::Allow,
12049        warn_since: None,
12050        deny_since: None,
12051    },
12052    Lint {
12053        label: "unsized_locals",
12054        description: r##"# `unsized_locals`
12055
12056The tracking issue for this feature is: [#48055]
12057
12058[#48055]: https://github.com/rust-lang/rust/issues/48055
12059
12060------------------------
12061
12062This implements [RFC1909]. When turned on, you can have unsized arguments and locals:
12063
12064[RFC1909]: https://github.com/rust-lang/rfcs/blob/master/text/1909-unsized-rvalues.md
12065
12066```rust
12067#![allow(incomplete_features)]
12068#![feature(unsized_locals, unsized_fn_params)]
12069
12070use std::any::Any;
12071
12072fn main() {
12073    let x: Box<dyn Any> = Box::new(42);
12074    let x: dyn Any = *x;
12075    //  ^ unsized local variable
12076    //               ^^ unsized temporary
12077    foo(x);
12078}
12079
12080fn foo(_: dyn Any) {}
12081//     ^^^^^^ unsized argument
12082```
12083
12084The RFC still forbids the following unsized expressions:
12085
12086```rust,compile_fail
12087#![feature(unsized_locals)]
12088
12089use std::any::Any;
12090
12091struct MyStruct<T: ?Sized> {
12092    content: T,
12093}
12094
12095struct MyTupleStruct<T: ?Sized>(T);
12096
12097fn answer() -> Box<dyn Any> {
12098    Box::new(42)
12099}
12100
12101fn main() {
12102    // You CANNOT have unsized statics.
12103    static X: dyn Any = *answer();  // ERROR
12104    const Y: dyn Any = *answer();  // ERROR
12105
12106    // You CANNOT have struct initialized unsized.
12107    MyStruct { content: *answer() };  // ERROR
12108    MyTupleStruct(*answer());  // ERROR
12109    (42, *answer());  // ERROR
12110
12111    // You CANNOT have unsized return types.
12112    fn my_function() -> dyn Any { *answer() }  // ERROR
12113
12114    // You CAN have unsized local variables...
12115    let mut x: dyn Any = *answer();  // OK
12116    // ...but you CANNOT reassign to them.
12117    x = *answer();  // ERROR
12118
12119    // You CANNOT even initialize them separately.
12120    let y: dyn Any;  // OK
12121    y = *answer();  // ERROR
12122
12123    // Not mentioned in the RFC, but by-move captured variables are also Sized.
12124    let x: dyn Any = *answer();
12125    (move || {  // ERROR
12126        let y = x;
12127    })();
12128
12129    // You CAN create a closure with unsized arguments,
12130    // but you CANNOT call it.
12131    // This is an implementation detail and may be changed in the future.
12132    let f = |x: dyn Any| {};
12133    f(*answer());  // ERROR
12134}
12135```
12136
12137## By-value trait objects
12138
12139With this feature, you can have by-value `self` arguments without `Self: Sized` bounds.
12140
12141```rust
12142#![feature(unsized_fn_params)]
12143
12144trait Foo {
12145    fn foo(self) {}
12146}
12147
12148impl<T: ?Sized> Foo for T {}
12149
12150fn main() {
12151    let slice: Box<[i32]> = Box::new([1, 2, 3]);
12152    <[i32] as Foo>::foo(*slice);
12153}
12154```
12155
12156And `Foo` will also be object-safe.
12157
12158```rust
12159#![feature(unsized_fn_params)]
12160
12161trait Foo {
12162    fn foo(self) {}
12163}
12164
12165impl<T: ?Sized> Foo for T {}
12166
12167fn main () {
12168    let slice: Box<dyn Foo> = Box::new([1, 2, 3]);
12169    // doesn't compile yet
12170    <dyn Foo as Foo>::foo(*slice);
12171}
12172```
12173
12174One of the objectives of this feature is to allow `Box<dyn FnOnce>`.
12175
12176## Variable length arrays
12177
12178The 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]`.
12179
12180```rust,ignore (not-yet-implemented)
12181#![feature(unsized_locals)]
12182
12183fn mergesort<T: Ord>(a: &mut [T]) {
12184    let mut tmp = [T; dyn a.len()];
12185    // ...
12186}
12187
12188fn main() {
12189    let mut a = [3, 1, 5, 6];
12190    mergesort(&mut a);
12191    assert_eq!(a, [1, 3, 5, 6]);
12192}
12193```
12194
12195VLAs 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]`.
12196
12197## Advisory on stack usage
12198
12199It's advised not to casually use the `#![feature(unsized_locals)]` feature. Typical use-cases are:
12200
12201- When you need a by-value trait objects.
12202- When you really need a fast allocation of small temporary arrays.
12203
12204Another 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
12205
12206```rust
12207#![feature(unsized_locals)]
12208
12209fn main() {
12210    let x: Box<[i32]> = Box::new([1, 2, 3, 4, 5]);
12211    let _x = {{{{{{{{{{*x}}}}}}}}}};
12212}
12213```
12214
12215and the code
12216
12217```rust
12218#![feature(unsized_locals)]
12219
12220fn main() {
12221    for _ in 0..10 {
12222        let x: Box<[i32]> = Box::new([1, 2, 3, 4, 5]);
12223        let _x = *x;
12224    }
12225}
12226```
12227
12228will unnecessarily extend the stack frame.
12229"##,
12230        default_severity: Severity::Allow,
12231        warn_since: None,
12232        deny_since: None,
12233    },
12234    Lint {
12235        label: "unwrap_infallible",
12236        description: r##"# `unwrap_infallible`
12237
12238The tracking issue for this feature is: [#61695]
12239
12240[#61695]: https://github.com/rust-lang/rust/issues/61695
12241
12242------------------------
12243"##,
12244        default_severity: Severity::Allow,
12245        warn_since: None,
12246        deny_since: None,
12247    },
12248    Lint {
12249        label: "update_panic_count",
12250        description: r##"# `update_panic_count`
12251
12252This feature is internal to the Rust compiler and is not intended for general use.
12253
12254------------------------
12255"##,
12256        default_severity: Severity::Allow,
12257        warn_since: None,
12258        deny_since: None,
12259    },
12260    Lint {
12261        label: "used_with_arg",
12262        description: r##"# `used_with_arg`
12263
12264The tracking issue for this feature is: [#93798]
12265
12266[#93798]: https://github.com/rust-lang/rust/issues/93798
12267
12268------------------------
12269"##,
12270        default_severity: Severity::Allow,
12271        warn_since: None,
12272        deny_since: None,
12273    },
12274    Lint {
12275        label: "utf16_extra",
12276        description: r##"# `utf16_extra`
12277
12278The tracking issue for this feature is: [#94919]
12279
12280[#94919]: https://github.com/rust-lang/rust/issues/94919
12281
12282------------------------
12283"##,
12284        default_severity: Severity::Allow,
12285        warn_since: None,
12286        deny_since: None,
12287    },
12288    Lint {
12289        label: "variant_count",
12290        description: r##"# `variant_count`
12291
12292The tracking issue for this feature is: [#73662]
12293
12294[#73662]: https://github.com/rust-lang/rust/issues/73662
12295
12296------------------------
12297"##,
12298        default_severity: Severity::Allow,
12299        warn_since: None,
12300        deny_since: None,
12301    },
12302    Lint {
12303        label: "vec_deque_iter_as_slices",
12304        description: r##"# `vec_deque_iter_as_slices`
12305
12306The tracking issue for this feature is: [#123947]
12307
12308[#123947]: https://github.com/rust-lang/rust/issues/123947
12309
12310------------------------
12311"##,
12312        default_severity: Severity::Allow,
12313        warn_since: None,
12314        deny_since: None,
12315    },
12316    Lint {
12317        label: "vec_into_raw_parts",
12318        description: r##"# `vec_into_raw_parts`
12319
12320The tracking issue for this feature is: [#65816]
12321
12322[#65816]: https://github.com/rust-lang/rust/issues/65816
12323
12324------------------------
12325"##,
12326        default_severity: Severity::Allow,
12327        warn_since: None,
12328        deny_since: None,
12329    },
12330    Lint {
12331        label: "vec_pop_if",
12332        description: r##"# `vec_pop_if`
12333
12334The tracking issue for this feature is: [#122741]
12335
12336[#122741]: https://github.com/rust-lang/rust/issues/122741
12337
12338------------------------
12339"##,
12340        default_severity: Severity::Allow,
12341        warn_since: None,
12342        deny_since: None,
12343    },
12344    Lint {
12345        label: "vec_push_within_capacity",
12346        description: r##"# `vec_push_within_capacity`
12347
12348The tracking issue for this feature is: [#100486]
12349
12350[#100486]: https://github.com/rust-lang/rust/issues/100486
12351
12352------------------------
12353"##,
12354        default_severity: Severity::Allow,
12355        warn_since: None,
12356        deny_since: None,
12357    },
12358    Lint {
12359        label: "vec_split_at_spare",
12360        description: r##"# `vec_split_at_spare`
12361
12362The tracking issue for this feature is: [#81944]
12363
12364[#81944]: https://github.com/rust-lang/rust/issues/81944
12365
12366------------------------
12367"##,
12368        default_severity: Severity::Allow,
12369        warn_since: None,
12370        deny_since: None,
12371    },
12372    Lint {
12373        label: "wasi_ext",
12374        description: r##"# `wasi_ext`
12375
12376The tracking issue for this feature is: [#71213]
12377
12378[#71213]: https://github.com/rust-lang/rust/issues/71213
12379
12380------------------------
12381"##,
12382        default_severity: Severity::Allow,
12383        warn_since: None,
12384        deny_since: None,
12385    },
12386    Lint {
12387        label: "wasm_target_feature",
12388        description: r##"# `wasm_target_feature`
12389
12390The tracking issue for this feature is: [#44839]
12391
12392[#44839]: https://github.com/rust-lang/rust/issues/44839
12393
12394------------------------
12395"##,
12396        default_severity: Severity::Allow,
12397        warn_since: None,
12398        deny_since: None,
12399    },
12400    Lint {
12401        label: "windows_by_handle",
12402        description: r##"# `windows_by_handle`
12403
12404The tracking issue for this feature is: [#63010]
12405
12406[#63010]: https://github.com/rust-lang/rust/issues/63010
12407
12408------------------------
12409"##,
12410        default_severity: Severity::Allow,
12411        warn_since: None,
12412        deny_since: None,
12413    },
12414    Lint {
12415        label: "windows_c",
12416        description: r##"# `windows_c`
12417
12418This feature is internal to the Rust compiler and is not intended for general use.
12419
12420------------------------
12421"##,
12422        default_severity: Severity::Allow,
12423        warn_since: None,
12424        deny_since: None,
12425    },
12426    Lint {
12427        label: "windows_change_time",
12428        description: r##"# `windows_change_time`
12429
12430The tracking issue for this feature is: [#121478]
12431
12432[#121478]: https://github.com/rust-lang/rust/issues/121478
12433
12434------------------------
12435"##,
12436        default_severity: Severity::Allow,
12437        warn_since: None,
12438        deny_since: None,
12439    },
12440    Lint {
12441        label: "windows_handle",
12442        description: r##"# `windows_handle`
12443
12444This feature is internal to the Rust compiler and is not intended for general use.
12445
12446------------------------
12447"##,
12448        default_severity: Severity::Allow,
12449        warn_since: None,
12450        deny_since: None,
12451    },
12452    Lint {
12453        label: "windows_net",
12454        description: r##"# `windows_net`
12455
12456This feature is internal to the Rust compiler and is not intended for general use.
12457
12458------------------------
12459"##,
12460        default_severity: Severity::Allow,
12461        warn_since: None,
12462        deny_since: None,
12463    },
12464    Lint {
12465        label: "windows_process_exit_code_from",
12466        description: r##"# `windows_process_exit_code_from`
12467
12468The tracking issue for this feature is: [#111688]
12469
12470[#111688]: https://github.com/rust-lang/rust/issues/111688
12471
12472------------------------
12473"##,
12474        default_severity: Severity::Allow,
12475        warn_since: None,
12476        deny_since: None,
12477    },
12478    Lint {
12479        label: "windows_process_extensions_async_pipes",
12480        description: r##"# `windows_process_extensions_async_pipes`
12481
12482The tracking issue for this feature is: [#98289]
12483
12484[#98289]: https://github.com/rust-lang/rust/issues/98289
12485
12486------------------------
12487"##,
12488        default_severity: Severity::Allow,
12489        warn_since: None,
12490        deny_since: None,
12491    },
12492    Lint {
12493        label: "windows_process_extensions_force_quotes",
12494        description: r##"# `windows_process_extensions_force_quotes`
12495
12496The tracking issue for this feature is: [#82227]
12497
12498[#82227]: https://github.com/rust-lang/rust/issues/82227
12499
12500------------------------
12501"##,
12502        default_severity: Severity::Allow,
12503        warn_since: None,
12504        deny_since: None,
12505    },
12506    Lint {
12507        label: "windows_process_extensions_main_thread_handle",
12508        description: r##"# `windows_process_extensions_main_thread_handle`
12509
12510The tracking issue for this feature is: [#96723]
12511
12512[#96723]: https://github.com/rust-lang/rust/issues/96723
12513
12514------------------------
12515"##,
12516        default_severity: Severity::Allow,
12517        warn_since: None,
12518        deny_since: None,
12519    },
12520    Lint {
12521        label: "windows_process_extensions_raw_attribute",
12522        description: r##"# `windows_process_extensions_raw_attribute`
12523
12524The tracking issue for this feature is: [#114854]
12525
12526[#114854]: https://github.com/rust-lang/rust/issues/114854
12527
12528------------------------
12529"##,
12530        default_severity: Severity::Allow,
12531        warn_since: None,
12532        deny_since: None,
12533    },
12534    Lint {
12535        label: "windows_process_extensions_show_window",
12536        description: r##"# `windows_process_extensions_show_window`
12537
12538The tracking issue for this feature is: [#127544]
12539
12540[#127544]: https://github.com/rust-lang/rust/issues/127544
12541
12542------------------------
12543"##,
12544        default_severity: Severity::Allow,
12545        warn_since: None,
12546        deny_since: None,
12547    },
12548    Lint {
12549        label: "windows_stdio",
12550        description: r##"# `windows_stdio`
12551
12552This feature is internal to the Rust compiler and is not intended for general use.
12553
12554------------------------
12555"##,
12556        default_severity: Severity::Allow,
12557        warn_since: None,
12558        deny_since: None,
12559    },
12560    Lint {
12561        label: "with_negative_coherence",
12562        description: r##"# `with_negative_coherence`
12563
12564This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
12565
12566------------------------
12567"##,
12568        default_severity: Severity::Allow,
12569        warn_since: None,
12570        deny_since: None,
12571    },
12572    Lint {
12573        label: "wrapping_int_impl",
12574        description: r##"# `wrapping_int_impl`
12575
12576The tracking issue for this feature is: [#32463]
12577
12578[#32463]: https://github.com/rust-lang/rust/issues/32463
12579
12580------------------------
12581"##,
12582        default_severity: Severity::Allow,
12583        warn_since: None,
12584        deny_since: None,
12585    },
12586    Lint {
12587        label: "wrapping_next_power_of_two",
12588        description: r##"# `wrapping_next_power_of_two`
12589
12590The tracking issue for this feature is: [#32463]
12591
12592[#32463]: https://github.com/rust-lang/rust/issues/32463
12593
12594------------------------
12595"##,
12596        default_severity: Severity::Allow,
12597        warn_since: None,
12598        deny_since: None,
12599    },
12600    Lint {
12601        label: "write_all_vectored",
12602        description: r##"# `write_all_vectored`
12603
12604The tracking issue for this feature is: [#70436]
12605
12606[#70436]: https://github.com/rust-lang/rust/issues/70436
12607
12608------------------------
12609"##,
12610        default_severity: Severity::Allow,
12611        warn_since: None,
12612        deny_since: None,
12613    },
12614    Lint {
12615        label: "x86_amx_intrinsics",
12616        description: r##"# `x86_amx_intrinsics`
12617
12618The tracking issue for this feature is: [#126622]
12619
12620[#126622]: https://github.com/rust-lang/rust/issues/126622
12621
12622------------------------
12623"##,
12624        default_severity: Severity::Allow,
12625        warn_since: None,
12626        deny_since: None,
12627    },
12628    Lint {
12629        label: "xop_target_feature",
12630        description: r##"# `xop_target_feature`
12631
12632The tracking issue for this feature is: [#127208]
12633
12634[#127208]: https://github.com/rust-lang/rust/issues/127208
12635
12636------------------------
12637"##,
12638        default_severity: Severity::Allow,
12639        warn_since: None,
12640        deny_since: None,
12641    },
12642    Lint {
12643        label: "yeet_desugar_details",
12644        description: r##"# `yeet_desugar_details`
12645
12646This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
12647
12648------------------------
12649"##,
12650        default_severity: Severity::Allow,
12651        warn_since: None,
12652        deny_since: None,
12653    },
12654    Lint {
12655        label: "yeet_expr",
12656        description: r##"# `yeet_expr`
12657
12658The tracking issue for this feature is: [#96373]
12659
12660[#96373]: https://github.com/rust-lang/rust/issues/96373
12661
12662------------------------
12663
12664The `yeet_expr` feature adds support for `do yeet` expressions,
12665which can be used to early-exit from a function or `try` block.
12666
12667These are highly experimental, thus the placeholder syntax.
12668
12669```rust,edition2021
12670#![feature(yeet_expr)]
12671
12672fn foo() -> Result<String, i32> {
12673    do yeet 4;
12674}
12675assert_eq!(foo(), Err(4));
12676
12677fn bar() -> Option<String> {
12678    do yeet;
12679}
12680assert_eq!(bar(), None);
12681```
12682"##,
12683        default_severity: Severity::Allow,
12684        warn_since: None,
12685        deny_since: None,
12686    },
12687];
12688
12689pub const CLIPPY_LINTS: &[Lint] = &[
12690    Lint {
12691        label: "clippy::absolute_paths",
12692        description: r##"Checks for usage of items through absolute paths, like `std::env::current_dir`."##,
12693        default_severity: Severity::Allow,
12694        warn_since: None,
12695        deny_since: None,
12696    },
12697    Lint {
12698        label: "clippy::absurd_extreme_comparisons",
12699        description: r##"Checks for comparisons where one side of the relation is
12700either the minimum or maximum value for its type and warns if it involves a
12701case that is always true or always false. Only integer and boolean types are
12702checked."##,
12703        default_severity: Severity::Allow,
12704        warn_since: None,
12705        deny_since: None,
12706    },
12707    Lint {
12708        label: "clippy::alloc_instead_of_core",
12709        description: r##"Finds items imported through `alloc` when available through `core`."##,
12710        default_severity: Severity::Allow,
12711        warn_since: None,
12712        deny_since: None,
12713    },
12714    Lint {
12715        label: "clippy::allow_attributes",
12716        description: r##"Checks for usage of the `#[allow]` attribute and suggests replacing it with
12717the `#[expect]` (See [RFC 2383](https://rust-lang.github.io/rfcs/2383-lint-reasons.html))
12718
12719This lint only warns outer attributes (`#[allow]`), as inner attributes
12720(`#![allow]`) are usually used to enable or disable lints on a global scale."##,
12721        default_severity: Severity::Allow,
12722        warn_since: None,
12723        deny_since: None,
12724    },
12725    Lint {
12726        label: "clippy::allow_attributes_without_reason",
12727        description: r##"Checks for attributes that allow lints without a reason."##,
12728        default_severity: Severity::Allow,
12729        warn_since: None,
12730        deny_since: None,
12731    },
12732    Lint {
12733        label: "clippy::almost_complete_range",
12734        description: r##"Checks for ranges which almost include the entire range of letters from 'a' to 'z'
12735or digits from '0' to '9', but don't because they're a half open range."##,
12736        default_severity: Severity::Allow,
12737        warn_since: None,
12738        deny_since: None,
12739    },
12740    Lint {
12741        label: "clippy::almost_swapped",
12742        description: r##"Checks for `foo = bar; bar = foo` sequences."##,
12743        default_severity: Severity::Allow,
12744        warn_since: None,
12745        deny_since: None,
12746    },
12747    Lint {
12748        label: "clippy::approx_constant",
12749        description: r##"Checks for floating point literals that approximate
12750constants which are defined in
12751[`std::f32::consts`](https://doc.rust-lang.org/stable/std/f32/consts/#constants)
12752or
12753[`std::f64::consts`](https://doc.rust-lang.org/stable/std/f64/consts/#constants),
12754respectively, suggesting to use the predefined constant."##,
12755        default_severity: Severity::Allow,
12756        warn_since: None,
12757        deny_since: None,
12758    },
12759    Lint {
12760        label: "clippy::arc_with_non_send_sync",
12761        description: r##".
12762This lint warns when you use `Arc` with a type that does not implement `Send` or `Sync`."##,
12763        default_severity: Severity::Allow,
12764        warn_since: None,
12765        deny_since: None,
12766    },
12767    Lint {
12768        label: "clippy::arithmetic_side_effects",
12769        description: r##"Checks any kind of arithmetic operation of any type.
12770
12771Operators like `+`, `-`, `*` or `<<` are usually capable of overflowing according to the [Rust
12772Reference](https://doc.rust-lang.org/reference/expressions/operator-expr.html#overflow),
12773or can panic (`/`, `%`).
12774
12775Known safe built-in types like `Wrapping` or `Saturating`, floats, operations in constant
12776environments, allowed types and non-constant operations that won't overflow are ignored."##,
12777        default_severity: Severity::Allow,
12778        warn_since: None,
12779        deny_since: None,
12780    },
12781    Lint {
12782        label: "clippy::as_conversions",
12783        description: r##"Checks for usage of `as` conversions.
12784
12785Note that this lint is specialized in linting *every single* use of `as`
12786regardless of whether good alternatives exist or not.
12787If you want more precise lints for `as`, please consider using these separate lints:
12788`unnecessary_cast`, `cast_lossless/cast_possible_truncation/cast_possible_wrap/cast_precision_loss/cast_sign_loss`,
12789`fn_to_numeric_cast(_with_truncation)`, `char_lit_as_u8`, `ref_to_mut` and `ptr_as_ptr`.
12790There is a good explanation the reason why this lint should work in this way and how it is useful
12791[in this issue](https://github.com/rust-lang/rust-clippy/issues/5122)."##,
12792        default_severity: Severity::Allow,
12793        warn_since: None,
12794        deny_since: None,
12795    },
12796    Lint {
12797        label: "clippy::as_ptr_cast_mut",
12798        description: r##"Checks for the result of a `&self`-taking `as_ptr` being cast to a mutable pointer."##,
12799        default_severity: Severity::Allow,
12800        warn_since: None,
12801        deny_since: None,
12802    },
12803    Lint {
12804        label: "clippy::as_underscore",
12805        description: r##"Checks for the usage of `as _` conversion using inferred type."##,
12806        default_severity: Severity::Allow,
12807        warn_since: None,
12808        deny_since: None,
12809    },
12810    Lint {
12811        label: "clippy::assertions_on_constants",
12812        description: r##"Checks for `assert!(true)` and `assert!(false)` calls."##,
12813        default_severity: Severity::Allow,
12814        warn_since: None,
12815        deny_since: None,
12816    },
12817    Lint {
12818        label: "clippy::assertions_on_result_states",
12819        description: r##"Checks for `assert!(r.is_ok())` or `assert!(r.is_err())` calls."##,
12820        default_severity: Severity::Allow,
12821        warn_since: None,
12822        deny_since: None,
12823    },
12824    Lint {
12825        label: "clippy::assign_op_pattern",
12826        description: r##"Checks for `a = a op b` or `a = b commutative_op a`
12827patterns."##,
12828        default_severity: Severity::Allow,
12829        warn_since: None,
12830        deny_since: None,
12831    },
12832    Lint {
12833        label: "clippy::assign_ops",
12834        description: r##"Nothing. This lint has been deprecated"##,
12835        default_severity: Severity::Allow,
12836        warn_since: None,
12837        deny_since: None,
12838    },
12839    Lint {
12840        label: "clippy::assigning_clones",
12841        description: r##"Checks for code like `foo = bar.clone();`"##,
12842        default_severity: Severity::Allow,
12843        warn_since: None,
12844        deny_since: None,
12845    },
12846    Lint {
12847        label: "clippy::async_yields_async",
12848        description: r##"Checks for async blocks that yield values of types
12849that can themselves be awaited."##,
12850        default_severity: Severity::Allow,
12851        warn_since: None,
12852        deny_since: None,
12853    },
12854    Lint {
12855        label: "clippy::await_holding_invalid_type",
12856        description: r##"Allows users to configure types which should not be held across await
12857suspension points."##,
12858        default_severity: Severity::Allow,
12859        warn_since: None,
12860        deny_since: None,
12861    },
12862    Lint {
12863        label: "clippy::await_holding_lock",
12864        description: r##"Checks for calls to `await` while holding a non-async-aware
12865`MutexGuard`."##,
12866        default_severity: Severity::Allow,
12867        warn_since: None,
12868        deny_since: None,
12869    },
12870    Lint {
12871        label: "clippy::await_holding_refcell_ref",
12872        description: r##"Checks for calls to `await` while holding a `RefCell`, `Ref`, or `RefMut`."##,
12873        default_severity: Severity::Allow,
12874        warn_since: None,
12875        deny_since: None,
12876    },
12877    Lint {
12878        label: "clippy::bad_bit_mask",
12879        description: r##"Checks for incompatible bit masks in comparisons.
12880
12881The formula for detecting if an expression of the type `_ <bit_op> m
12882<cmp_op> c` (where `<bit_op>` is one of {`&`, `|`} and `<cmp_op>` is one of
12883{`!=`, `>=`, `>`, `!=`, `>=`, `>`}) can be determined from the following
12884table:
12885
12886|Comparison  |Bit Op|Example      |is always|Formula               |
12887|------------|------|-------------|---------|----------------------|
12888|`==` or `!=`| `&`  |`x & 2 == 3` |`false`  |`c & m != c`          |
12889|`<`  or `>=`| `&`  |`x & 2 < 3`  |`true`   |`m < c`               |
12890|`>`  or `<=`| `&`  |`x & 1 > 1`  |`false`  |`m <= c`              |
12891|`==` or `!=`| `\\|` |`x \\| 1 == 0`|`false`  |`c \\| m != c`         |
12892|`<`  or `>=`| `\\|` |`x \\| 1 < 1` |`false`  |`m >= c`              |
12893|`<=` or `>` | `\\|` |`x \\| 1 > 0` |`true`   |`m > c`               |"##,
12894        default_severity: Severity::Allow,
12895        warn_since: None,
12896        deny_since: None,
12897    },
12898    Lint {
12899        label: "clippy::big_endian_bytes",
12900        description: r##"Checks for the usage of the `to_be_bytes` method and/or the function `from_be_bytes`."##,
12901        default_severity: Severity::Allow,
12902        warn_since: None,
12903        deny_since: None,
12904    },
12905    Lint {
12906        label: "clippy::bind_instead_of_map",
12907        description: r##"Checks for usage of `_.and_then(|x| Some(y))`, `_.and_then(|x| Ok(y))`
12908or `_.or_else(|x| Err(y))`."##,
12909        default_severity: Severity::Allow,
12910        warn_since: None,
12911        deny_since: None,
12912    },
12913    Lint {
12914        label: "clippy::blanket_clippy_restriction_lints",
12915        description: r##"Checks for `warn`/`deny`/`forbid` attributes targeting the whole clippy::restriction category."##,
12916        default_severity: Severity::Allow,
12917        warn_since: None,
12918        deny_since: None,
12919    },
12920    Lint {
12921        label: "clippy::blocks_in_conditions",
12922        description: r##"Checks for `if` and `match` conditions that use blocks containing an
12923expression, statements or conditions that use closures with blocks."##,
12924        default_severity: Severity::Allow,
12925        warn_since: None,
12926        deny_since: None,
12927    },
12928    Lint {
12929        label: "clippy::bool_assert_comparison",
12930        description: r##"This lint warns about boolean comparisons in assert-like macros."##,
12931        default_severity: Severity::Allow,
12932        warn_since: None,
12933        deny_since: None,
12934    },
12935    Lint {
12936        label: "clippy::bool_comparison",
12937        description: r##"Checks for expressions of the form `x == true`,
12938`x != true` and order comparisons such as `x < true` (or vice versa) and
12939suggest using the variable directly."##,
12940        default_severity: Severity::Allow,
12941        warn_since: None,
12942        deny_since: None,
12943    },
12944    Lint {
12945        label: "clippy::bool_to_int_with_if",
12946        description: r##"Instead of using an if statement to convert a bool to an int,
12947this lint suggests using a `from()` function or an `as` coercion."##,
12948        default_severity: Severity::Allow,
12949        warn_since: None,
12950        deny_since: None,
12951    },
12952    Lint {
12953        label: "clippy::borrow_as_ptr",
12954        description: r##"Checks for the usage of `&expr as *const T` or
12955`&mut expr as *mut T`, and suggest using `ptr::addr_of` or
12956`ptr::addr_of_mut` instead."##,
12957        default_severity: Severity::Allow,
12958        warn_since: None,
12959        deny_since: None,
12960    },
12961    Lint {
12962        label: "clippy::borrow_deref_ref",
12963        description: r##"Checks for `&*(&T)`."##,
12964        default_severity: Severity::Allow,
12965        warn_since: None,
12966        deny_since: None,
12967    },
12968    Lint {
12969        label: "clippy::borrow_interior_mutable_const",
12970        description: r##"Checks if `const` items which is interior mutable (e.g.,
12971contains a `Cell`, `Mutex`, `AtomicXxxx`, etc.) has been borrowed directly."##,
12972        default_severity: Severity::Allow,
12973        warn_since: None,
12974        deny_since: None,
12975    },
12976    Lint {
12977        label: "clippy::borrowed_box",
12978        description: r##"Checks for usage of `&Box<T>` anywhere in the code.
12979Check the [Box documentation](https://doc.rust-lang.org/std/boxed/index.html) for more information."##,
12980        default_severity: Severity::Allow,
12981        warn_since: None,
12982        deny_since: None,
12983    },
12984    Lint {
12985        label: "clippy::box_collection",
12986        description: r##"Checks for usage of `Box<T>` where T is a collection such as Vec anywhere in the code.
12987Check the [Box documentation](https://doc.rust-lang.org/std/boxed/index.html) for more information."##,
12988        default_severity: Severity::Allow,
12989        warn_since: None,
12990        deny_since: None,
12991    },
12992    Lint {
12993        label: "clippy::box_default",
12994        description: r##"checks for `Box::new(Default::default())`, which can be written as
12995`Box::default()`."##,
12996        default_severity: Severity::Allow,
12997        warn_since: None,
12998        deny_since: None,
12999    },
13000    Lint {
13001        label: "clippy::boxed_local",
13002        description: r##"Checks for usage of `Box<T>` where an unboxed `T` would
13003work fine."##,
13004        default_severity: Severity::Allow,
13005        warn_since: None,
13006        deny_since: None,
13007    },
13008    Lint {
13009        label: "clippy::branches_sharing_code",
13010        description: r##"Checks if the `if` and `else` block contain shared code that can be
13011moved out of the blocks."##,
13012        default_severity: Severity::Allow,
13013        warn_since: None,
13014        deny_since: None,
13015    },
13016    Lint {
13017        label: "clippy::builtin_type_shadow",
13018        description: r##"Warns if a generic shadows a built-in type."##,
13019        default_severity: Severity::Allow,
13020        warn_since: None,
13021        deny_since: None,
13022    },
13023    Lint {
13024        label: "clippy::byte_char_slices",
13025        description: r##"Checks for hard to read slices of byte characters, that could be more easily expressed as a
13026byte string."##,
13027        default_severity: Severity::Allow,
13028        warn_since: None,
13029        deny_since: None,
13030    },
13031    Lint {
13032        label: "clippy::bytes_count_to_len",
13033        description: r##"It checks for `str::bytes().count()` and suggests replacing it with
13034`str::len()`."##,
13035        default_severity: Severity::Allow,
13036        warn_since: None,
13037        deny_since: None,
13038    },
13039    Lint {
13040        label: "clippy::bytes_nth",
13041        description: r##"Checks for the use of `.bytes().nth()`."##,
13042        default_severity: Severity::Allow,
13043        warn_since: None,
13044        deny_since: None,
13045    },
13046    Lint {
13047        label: "clippy::cargo_common_metadata",
13048        description: r##"Checks to see if all common metadata is defined in
13049`Cargo.toml`. See: https://rust-lang-nursery.github.io/api-guidelines/documentation.html#cargotoml-includes-all-common-metadata-c-metadata"##,
13050        default_severity: Severity::Allow,
13051        warn_since: None,
13052        deny_since: None,
13053    },
13054    Lint {
13055        label: "clippy::case_sensitive_file_extension_comparisons",
13056        description: r##"Checks for calls to `ends_with` with possible file extensions
13057and suggests to use a case-insensitive approach instead."##,
13058        default_severity: Severity::Allow,
13059        warn_since: None,
13060        deny_since: None,
13061    },
13062    Lint {
13063        label: "clippy::cast_abs_to_unsigned",
13064        description: r##"Checks for usage of the `abs()` method that cast the result to unsigned."##,
13065        default_severity: Severity::Allow,
13066        warn_since: None,
13067        deny_since: None,
13068    },
13069    Lint {
13070        label: "clippy::cast_enum_constructor",
13071        description: r##"Checks for casts from an enum tuple constructor to an integer."##,
13072        default_severity: Severity::Allow,
13073        warn_since: None,
13074        deny_since: None,
13075    },
13076    Lint {
13077        label: "clippy::cast_enum_truncation",
13078        description: r##"Checks for casts from an enum type to an integral type that will definitely truncate the
13079value."##,
13080        default_severity: Severity::Allow,
13081        warn_since: None,
13082        deny_since: None,
13083    },
13084    Lint {
13085        label: "clippy::cast_lossless",
13086        description: r##"Checks for casts between numeric types that can be replaced by safe
13087conversion functions."##,
13088        default_severity: Severity::Allow,
13089        warn_since: None,
13090        deny_since: None,
13091    },
13092    Lint {
13093        label: "clippy::cast_nan_to_int",
13094        description: r##"Checks for a known NaN float being cast to an integer"##,
13095        default_severity: Severity::Allow,
13096        warn_since: None,
13097        deny_since: None,
13098    },
13099    Lint {
13100        label: "clippy::cast_possible_truncation",
13101        description: r##"Checks for casts between numeric types that may
13102truncate large values. This is expected behavior, so the cast is `Allow` by
13103default. It suggests user either explicitly ignore the lint,
13104or use `try_from()` and handle the truncation, default, or panic explicitly."##,
13105        default_severity: Severity::Allow,
13106        warn_since: None,
13107        deny_since: None,
13108    },
13109    Lint {
13110        label: "clippy::cast_possible_wrap",
13111        description: r##"Checks for casts from an unsigned type to a signed type of
13112the same size, or possibly smaller due to target-dependent integers.
13113Performing such a cast is a no-op for the compiler (that is, nothing is
13114changed at the bit level), and the binary representation of the value is
13115reinterpreted. This can cause wrapping if the value is too big
13116for the target signed type. However, the cast works as defined, so this lint
13117is `Allow` by default."##,
13118        default_severity: Severity::Allow,
13119        warn_since: None,
13120        deny_since: None,
13121    },
13122    Lint {
13123        label: "clippy::cast_precision_loss",
13124        description: r##"Checks for casts from any numeric type to a float type where
13125the receiving type cannot store all values from the original type without
13126rounding errors. This possible rounding is to be expected, so this lint is
13127`Allow` by default.
13128
13129Basically, this warns on casting any integer with 32 or more bits to `f32`
13130or any 64-bit integer to `f64`."##,
13131        default_severity: Severity::Allow,
13132        warn_since: None,
13133        deny_since: None,
13134    },
13135    Lint {
13136        label: "clippy::cast_ptr_alignment",
13137        description: r##"Checks for casts, using `as` or `pointer::cast`, from a
13138less strictly aligned pointer to a more strictly aligned pointer."##,
13139        default_severity: Severity::Allow,
13140        warn_since: None,
13141        deny_since: None,
13142    },
13143    Lint {
13144        label: "clippy::cast_sign_loss",
13145        description: r##"Checks for casts from a signed to an unsigned numeric
13146type. In this case, negative values wrap around to large positive values,
13147which can be quite surprising in practice. However, since the cast works as
13148defined, this lint is `Allow` by default."##,
13149        default_severity: Severity::Allow,
13150        warn_since: None,
13151        deny_since: None,
13152    },
13153    Lint {
13154        label: "clippy::cast_slice_different_sizes",
13155        description: r##"Checks for `as` casts between raw pointers to slices with differently sized elements."##,
13156        default_severity: Severity::Allow,
13157        warn_since: None,
13158        deny_since: None,
13159    },
13160    Lint {
13161        label: "clippy::cast_slice_from_raw_parts",
13162        description: r##"Checks for a raw slice being cast to a slice pointer"##,
13163        default_severity: Severity::Allow,
13164        warn_since: None,
13165        deny_since: None,
13166    },
13167    Lint {
13168        label: "clippy::cfg_not_test",
13169        description: r##"Checks for usage of `cfg` that excludes code from `test` builds. (i.e., `#[cfg(not(test))]`)"##,
13170        default_severity: Severity::Allow,
13171        warn_since: None,
13172        deny_since: None,
13173    },
13174    Lint {
13175        label: "clippy::char_lit_as_u8",
13176        description: r##"Checks for expressions where a character literal is cast
13177to `u8` and suggests using a byte literal instead."##,
13178        default_severity: Severity::Allow,
13179        warn_since: None,
13180        deny_since: None,
13181    },
13182    Lint {
13183        label: "clippy::chars_last_cmp",
13184        description: r##"Checks for usage of `_.chars().last()` or
13185`_.chars().next_back()` on a `str` to check if it ends with a given char."##,
13186        default_severity: Severity::Allow,
13187        warn_since: None,
13188        deny_since: None,
13189    },
13190    Lint {
13191        label: "clippy::chars_next_cmp",
13192        description: r##"Checks for usage of `.chars().next()` on a `str` to check
13193if it starts with a given char."##,
13194        default_severity: Severity::Allow,
13195        warn_since: None,
13196        deny_since: None,
13197    },
13198    Lint {
13199        label: "clippy::checked_conversions",
13200        description: r##"Checks for explicit bounds checking when casting."##,
13201        default_severity: Severity::Allow,
13202        warn_since: None,
13203        deny_since: None,
13204    },
13205    Lint {
13206        label: "clippy::clear_with_drain",
13207        description: r##"Checks for usage of `.drain(..)` for the sole purpose of clearing a container."##,
13208        default_severity: Severity::Allow,
13209        warn_since: None,
13210        deny_since: None,
13211    },
13212    Lint {
13213        label: "clippy::clone_on_copy",
13214        description: r##"Checks for usage of `.clone()` on a `Copy` type."##,
13215        default_severity: Severity::Allow,
13216        warn_since: None,
13217        deny_since: None,
13218    },
13219    Lint {
13220        label: "clippy::clone_on_ref_ptr",
13221        description: r##"Checks for usage of `.clone()` on a ref-counted pointer,
13222(`Rc`, `Arc`, `rc::Weak`, or `sync::Weak`), and suggests calling Clone via unified
13223function syntax instead (e.g., `Rc::clone(foo)`)."##,
13224        default_severity: Severity::Allow,
13225        warn_since: None,
13226        deny_since: None,
13227    },
13228    Lint {
13229        label: "clippy::cloned_instead_of_copied",
13230        description: r##"Checks for usage of `cloned()` on an `Iterator` or `Option` where
13231`copied()` could be used instead."##,
13232        default_severity: Severity::Allow,
13233        warn_since: None,
13234        deny_since: None,
13235    },
13236    Lint {
13237        label: "clippy::cmp_null",
13238        description: r##"This lint checks for equality comparisons with `ptr::null`"##,
13239        default_severity: Severity::Allow,
13240        warn_since: None,
13241        deny_since: None,
13242    },
13243    Lint {
13244        label: "clippy::cmp_owned",
13245        description: r##"Checks for conversions to owned values just for the sake
13246of a comparison."##,
13247        default_severity: Severity::Allow,
13248        warn_since: None,
13249        deny_since: None,
13250    },
13251    Lint {
13252        label: "clippy::cognitive_complexity",
13253        description: r##"Checks for methods with high cognitive complexity."##,
13254        default_severity: Severity::Allow,
13255        warn_since: None,
13256        deny_since: None,
13257    },
13258    Lint {
13259        label: "clippy::collapsible_else_if",
13260        description: r##"Checks for collapsible `else { if ... }` expressions
13261that can be collapsed to `else if ...`."##,
13262        default_severity: Severity::Allow,
13263        warn_since: None,
13264        deny_since: None,
13265    },
13266    Lint {
13267        label: "clippy::collapsible_if",
13268        description: r##"Checks for nested `if` statements which can be collapsed
13269by `&&`-combining their conditions."##,
13270        default_severity: Severity::Allow,
13271        warn_since: None,
13272        deny_since: None,
13273    },
13274    Lint {
13275        label: "clippy::collapsible_match",
13276        description: r##"Finds nested `match` or `if let` expressions where the patterns may be collapsed together
13277without adding any branches.
13278
13279Note that this lint is not intended to find _all_ cases where nested match patterns can be merged, but only
13280cases where merging would most likely make the code more readable."##,
13281        default_severity: Severity::Allow,
13282        warn_since: None,
13283        deny_since: None,
13284    },
13285    Lint {
13286        label: "clippy::collapsible_str_replace",
13287        description: r##"Checks for consecutive calls to `str::replace` (2 or more)
13288that can be collapsed into a single call."##,
13289        default_severity: Severity::Allow,
13290        warn_since: None,
13291        deny_since: None,
13292    },
13293    Lint {
13294        label: "clippy::collection_is_never_read",
13295        description: r##"Checks for collections that are never queried."##,
13296        default_severity: Severity::Allow,
13297        warn_since: None,
13298        deny_since: None,
13299    },
13300    Lint {
13301        label: "clippy::comparison_chain",
13302        description: r##"Checks comparison chains written with `if` that can be
13303rewritten with `match` and `cmp`."##,
13304        default_severity: Severity::Allow,
13305        warn_since: None,
13306        deny_since: None,
13307    },
13308    Lint {
13309        label: "clippy::comparison_to_empty",
13310        description: r##"Checks for comparing to an empty slice such as `` or `[]`,
13311and suggests using `.is_empty()` where applicable."##,
13312        default_severity: Severity::Allow,
13313        warn_since: None,
13314        deny_since: None,
13315    },
13316    Lint {
13317        label: "clippy::const_is_empty",
13318        description: r##"It identifies calls to `.is_empty()` on constant values."##,
13319        default_severity: Severity::Allow,
13320        warn_since: None,
13321        deny_since: None,
13322    },
13323    Lint {
13324        label: "clippy::copy_iterator",
13325        description: r##"Checks for types that implement `Copy` as well as
13326`Iterator`."##,
13327        default_severity: Severity::Allow,
13328        warn_since: None,
13329        deny_since: None,
13330    },
13331    Lint {
13332        label: "clippy::crate_in_macro_def",
13333        description: r##"Checks for usage of `crate` as opposed to `$crate` in a macro definition."##,
13334        default_severity: Severity::Allow,
13335        warn_since: None,
13336        deny_since: None,
13337    },
13338    Lint {
13339        label: "clippy::create_dir",
13340        description: r##"Checks usage of `std::fs::create_dir` and suggest using `std::fs::create_dir_all` instead."##,
13341        default_severity: Severity::Allow,
13342        warn_since: None,
13343        deny_since: None,
13344    },
13345    Lint {
13346        label: "clippy::crosspointer_transmute",
13347        description: r##"Checks for transmutes between a type `T` and `*T`."##,
13348        default_severity: Severity::Allow,
13349        warn_since: None,
13350        deny_since: None,
13351    },
13352    Lint {
13353        label: "clippy::dbg_macro",
13354        description: r##"Checks for usage of the [`dbg!`](https://doc.rust-lang.org/std/macro.dbg.html) macro."##,
13355        default_severity: Severity::Allow,
13356        warn_since: None,
13357        deny_since: None,
13358    },
13359    Lint {
13360        label: "clippy::debug_assert_with_mut_call",
13361        description: r##"Checks for function/method calls with a mutable
13362parameter in `debug_assert!`, `debug_assert_eq!` and `debug_assert_ne!` macros."##,
13363        default_severity: Severity::Allow,
13364        warn_since: None,
13365        deny_since: None,
13366    },
13367    Lint {
13368        label: "clippy::decimal_literal_representation",
13369        description: r##"Warns if there is a better representation for a numeric literal."##,
13370        default_severity: Severity::Allow,
13371        warn_since: None,
13372        deny_since: None,
13373    },
13374    Lint {
13375        label: "clippy::declare_interior_mutable_const",
13376        description: r##"Checks for declaration of `const` items which is interior
13377mutable (e.g., contains a `Cell`, `Mutex`, `AtomicXxxx`, etc.)."##,
13378        default_severity: Severity::Allow,
13379        warn_since: None,
13380        deny_since: None,
13381    },
13382    Lint {
13383        label: "clippy::default_constructed_unit_structs",
13384        description: r##"Checks for construction on unit struct using `default`."##,
13385        default_severity: Severity::Allow,
13386        warn_since: None,
13387        deny_since: None,
13388    },
13389    Lint {
13390        label: "clippy::default_instead_of_iter_empty",
13391        description: r##"It checks for `std::iter::Empty::default()` and suggests replacing it with
13392`std::iter::empty()`."##,
13393        default_severity: Severity::Allow,
13394        warn_since: None,
13395        deny_since: None,
13396    },
13397    Lint {
13398        label: "clippy::default_numeric_fallback",
13399        description: r##"Checks for usage of unconstrained numeric literals which may cause default numeric fallback in type
13400inference.
13401
13402Default numeric fallback means that if numeric types have not yet been bound to concrete
13403types at the end of type inference, then integer type is bound to `i32`, and similarly
13404floating type is bound to `f64`.
13405
13406See [RFC0212](https://github.com/rust-lang/rfcs/blob/master/text/0212-restore-int-fallback.md) for more information about the fallback."##,
13407        default_severity: Severity::Allow,
13408        warn_since: None,
13409        deny_since: None,
13410    },
13411    Lint {
13412        label: "clippy::default_trait_access",
13413        description: r##"Checks for literal calls to `Default::default()`."##,
13414        default_severity: Severity::Allow,
13415        warn_since: None,
13416        deny_since: None,
13417    },
13418    Lint {
13419        label: "clippy::default_union_representation",
13420        description: r##"Displays a warning when a union is declared with the default representation (without a `#[repr(C)]` attribute)."##,
13421        default_severity: Severity::Allow,
13422        warn_since: None,
13423        deny_since: None,
13424    },
13425    Lint {
13426        label: "clippy::deprecated_cfg_attr",
13427        description: r##"Checks for `#[cfg_attr(rustfmt, rustfmt_skip)]` and suggests to replace it
13428with `#[rustfmt::skip]`."##,
13429        default_severity: Severity::Allow,
13430        warn_since: None,
13431        deny_since: None,
13432    },
13433    Lint {
13434        label: "clippy::deprecated_clippy_cfg_attr",
13435        description: r##"Checks for `#[cfg_attr(feature = cargo-clippy, ...)]` and for
13436`#[cfg(feature = cargo-clippy)]` and suggests to replace it with
13437`#[cfg_attr(clippy, ...)]` or `#[cfg(clippy)]`."##,
13438        default_severity: Severity::Allow,
13439        warn_since: None,
13440        deny_since: None,
13441    },
13442    Lint {
13443        label: "clippy::deprecated_semver",
13444        description: r##"Checks for `#[deprecated]` annotations with a `since`
13445field that is not a valid semantic version. Also allows TBD to signal
13446future deprecation."##,
13447        default_severity: Severity::Allow,
13448        warn_since: None,
13449        deny_since: None,
13450    },
13451    Lint {
13452        label: "clippy::deref_addrof",
13453        description: r##"Checks for usage of `*&` and `*&mut` in expressions."##,
13454        default_severity: Severity::Allow,
13455        warn_since: None,
13456        deny_since: None,
13457    },
13458    Lint {
13459        label: "clippy::deref_by_slicing",
13460        description: r##"Checks for slicing expressions which are equivalent to dereferencing the
13461value."##,
13462        default_severity: Severity::Allow,
13463        warn_since: None,
13464        deny_since: None,
13465    },
13466    Lint {
13467        label: "clippy::derivable_impls",
13468        description: r##"Detects manual `std::default::Default` implementations that are identical to a derived implementation."##,
13469        default_severity: Severity::Allow,
13470        warn_since: None,
13471        deny_since: None,
13472    },
13473    Lint {
13474        label: "clippy::derive_ord_xor_partial_ord",
13475        description: r##"Lints against manual `PartialOrd` and `Ord` implementations for types with a derived `Ord`
13476or `PartialOrd` implementation."##,
13477        default_severity: Severity::Allow,
13478        warn_since: None,
13479        deny_since: None,
13480    },
13481    Lint {
13482        label: "clippy::derive_partial_eq_without_eq",
13483        description: r##"Checks for types that derive `PartialEq` and could implement `Eq`."##,
13484        default_severity: Severity::Allow,
13485        warn_since: None,
13486        deny_since: None,
13487    },
13488    Lint {
13489        label: "clippy::derived_hash_with_manual_eq",
13490        description: r##"Lints against manual `PartialEq` implementations for types with a derived `Hash`
13491implementation."##,
13492        default_severity: Severity::Allow,
13493        warn_since: None,
13494        deny_since: None,
13495    },
13496    Lint {
13497        label: "clippy::disallowed_macros",
13498        description: r##"Denies the configured macros in clippy.toml
13499
13500Note: Even though this lint is warn-by-default, it will only trigger if
13501macros are defined in the clippy.toml file."##,
13502        default_severity: Severity::Allow,
13503        warn_since: None,
13504        deny_since: None,
13505    },
13506    Lint {
13507        label: "clippy::disallowed_methods",
13508        description: r##"Denies the configured methods and functions in clippy.toml
13509
13510Note: Even though this lint is warn-by-default, it will only trigger if
13511methods are defined in the clippy.toml file."##,
13512        default_severity: Severity::Allow,
13513        warn_since: None,
13514        deny_since: None,
13515    },
13516    Lint {
13517        label: "clippy::disallowed_names",
13518        description: r##"Checks for usage of disallowed names for variables, such
13519as `foo`."##,
13520        default_severity: Severity::Allow,
13521        warn_since: None,
13522        deny_since: None,
13523    },
13524    Lint {
13525        label: "clippy::disallowed_script_idents",
13526        description: r##"Checks for usage of unicode scripts other than those explicitly allowed
13527by the lint config.
13528
13529This lint doesn't take into account non-text scripts such as `Unknown` and `Linear_A`.
13530It also ignores the `Common` script type.
13531While configuring, be sure to use official script name [aliases] from
13532[the list of supported scripts][supported_scripts].
13533
13534See also: [`non_ascii_idents`].
13535
13536[aliases]: http://www.unicode.org/reports/tr24/tr24-31.html#Script_Value_Aliases
13537[supported_scripts]: https://www.unicode.org/iso15924/iso15924-codes.html"##,
13538        default_severity: Severity::Allow,
13539        warn_since: None,
13540        deny_since: None,
13541    },
13542    Lint {
13543        label: "clippy::disallowed_types",
13544        description: r##"Denies the configured types in clippy.toml.
13545
13546Note: Even though this lint is warn-by-default, it will only trigger if
13547types are defined in the clippy.toml file."##,
13548        default_severity: Severity::Allow,
13549        warn_since: None,
13550        deny_since: None,
13551    },
13552    Lint {
13553        label: "clippy::diverging_sub_expression",
13554        description: r##"Checks for diverging calls that are not match arms or
13555statements."##,
13556        default_severity: Severity::Allow,
13557        warn_since: None,
13558        deny_since: None,
13559    },
13560    Lint {
13561        label: "clippy::doc_lazy_continuation",
13562        description: r##"In CommonMark Markdown, the language used to write doc comments, a
13563paragraph nested within a list or block quote does not need any line
13564after the first one to be indented or marked. The specification calls
13565this a lazy paragraph continuation."##,
13566        default_severity: Severity::Allow,
13567        warn_since: None,
13568        deny_since: None,
13569    },
13570    Lint {
13571        label: "clippy::doc_link_with_quotes",
13572        description: r##"Detects the syntax `['foo']` in documentation comments (notice quotes instead of backticks)
13573outside of code blocks"##,
13574        default_severity: Severity::Allow,
13575        warn_since: None,
13576        deny_since: None,
13577    },
13578    Lint {
13579        label: "clippy::doc_markdown",
13580        description: r##"Checks for the presence of `_`, `::` or camel-case words
13581outside ticks in documentation."##,
13582        default_severity: Severity::Allow,
13583        warn_since: None,
13584        deny_since: None,
13585    },
13586    Lint {
13587        label: "clippy::double_comparisons",
13588        description: r##"Checks for double comparisons that could be simplified to a single expression."##,
13589        default_severity: Severity::Allow,
13590        warn_since: None,
13591        deny_since: None,
13592    },
13593    Lint {
13594        label: "clippy::double_must_use",
13595        description: r##"Checks for a `#[must_use]` attribute without
13596further information on functions and methods that return a type already
13597marked as `#[must_use]`."##,
13598        default_severity: Severity::Allow,
13599        warn_since: None,
13600        deny_since: None,
13601    },
13602    Lint {
13603        label: "clippy::double_neg",
13604        description: r##"Detects expressions of the form `--x`."##,
13605        default_severity: Severity::Allow,
13606        warn_since: None,
13607        deny_since: None,
13608    },
13609    Lint {
13610        label: "clippy::double_parens",
13611        description: r##"Checks for unnecessary double parentheses."##,
13612        default_severity: Severity::Allow,
13613        warn_since: None,
13614        deny_since: None,
13615    },
13616    Lint {
13617        label: "clippy::drain_collect",
13618        description: r##"Checks for calls to `.drain()` that clear the collection, immediately followed by a call to `.collect()`.
13619
13620> Collection in this context refers to any type with a `drain` method:
13621> `Vec`, `VecDeque`, `BinaryHeap`, `HashSet`,`HashMap`, `String`"##,
13622        default_severity: Severity::Allow,
13623        warn_since: None,
13624        deny_since: None,
13625    },
13626    Lint {
13627        label: "clippy::drop_non_drop",
13628        description: r##"Checks for calls to `std::mem::drop` with a value that does not implement `Drop`."##,
13629        default_severity: Severity::Allow,
13630        warn_since: None,
13631        deny_since: None,
13632    },
13633    Lint {
13634        label: "clippy::duplicate_mod",
13635        description: r##"Checks for files that are included as modules multiple times."##,
13636        default_severity: Severity::Allow,
13637        warn_since: None,
13638        deny_since: None,
13639    },
13640    Lint {
13641        label: "clippy::duplicate_underscore_argument",
13642        description: r##"Checks for function arguments having the similar names
13643differing by an underscore."##,
13644        default_severity: Severity::Allow,
13645        warn_since: None,
13646        deny_since: None,
13647    },
13648    Lint {
13649        label: "clippy::duplicated_attributes",
13650        description: r##"Checks for attributes that appear two or more times."##,
13651        default_severity: Severity::Allow,
13652        warn_since: None,
13653        deny_since: None,
13654    },
13655    Lint {
13656        label: "clippy::duration_subsec",
13657        description: r##"Checks for calculation of subsecond microseconds or milliseconds
13658from other `Duration` methods."##,
13659        default_severity: Severity::Allow,
13660        warn_since: None,
13661        deny_since: None,
13662    },
13663    Lint {
13664        label: "clippy::eager_transmute",
13665        description: r##"Checks for integer validity checks, followed by a transmute that is (incorrectly) evaluated
13666eagerly (e.g. using `bool::then_some`)."##,
13667        default_severity: Severity::Allow,
13668        warn_since: None,
13669        deny_since: None,
13670    },
13671    Lint {
13672        label: "clippy::else_if_without_else",
13673        description: r##"Checks for usage of if expressions with an `else if` branch,
13674but without a final `else` branch."##,
13675        default_severity: Severity::Allow,
13676        warn_since: None,
13677        deny_since: None,
13678    },
13679    Lint {
13680        label: "clippy::empty_docs",
13681        description: r##"Detects documentation that is empty."##,
13682        default_severity: Severity::Allow,
13683        warn_since: None,
13684        deny_since: None,
13685    },
13686    Lint {
13687        label: "clippy::empty_drop",
13688        description: r##"Checks for empty `Drop` implementations."##,
13689        default_severity: Severity::Allow,
13690        warn_since: None,
13691        deny_since: None,
13692    },
13693    Lint {
13694        label: "clippy::empty_enum",
13695        description: r##"Checks for `enum`s with no variants, which therefore are uninhabited types
13696(cannot be instantiated).
13697
13698As of this writing, the `never_type` is still a nightly-only experimental API.
13699Therefore, this lint is only triggered if `#![feature(never_type)]` is enabled."##,
13700        default_severity: Severity::Allow,
13701        warn_since: None,
13702        deny_since: None,
13703    },
13704    Lint {
13705        label: "clippy::empty_enum_variants_with_brackets",
13706        description: r##"Finds enum variants without fields that are declared with empty brackets."##,
13707        default_severity: Severity::Allow,
13708        warn_since: None,
13709        deny_since: None,
13710    },
13711    Lint {
13712        label: "clippy::empty_line_after_doc_comments",
13713        description: r##"Checks for empty lines after doc comments."##,
13714        default_severity: Severity::Allow,
13715        warn_since: None,
13716        deny_since: None,
13717    },
13718    Lint {
13719        label: "clippy::empty_line_after_outer_attr",
13720        description: r##"Checks for empty lines after outer attributes"##,
13721        default_severity: Severity::Allow,
13722        warn_since: None,
13723        deny_since: None,
13724    },
13725    Lint {
13726        label: "clippy::empty_loop",
13727        description: r##"Checks for empty `loop` expressions."##,
13728        default_severity: Severity::Allow,
13729        warn_since: None,
13730        deny_since: None,
13731    },
13732    Lint {
13733        label: "clippy::empty_structs_with_brackets",
13734        description: r##"Finds structs without fields (a so-called empty struct) that are declared with brackets."##,
13735        default_severity: Severity::Allow,
13736        warn_since: None,
13737        deny_since: None,
13738    },
13739    Lint {
13740        label: "clippy::enum_clike_unportable_variant",
13741        description: r##"Checks for C-like enumerations that are
13742`repr(isize/usize)` and have values that don't fit into an `i32`."##,
13743        default_severity: Severity::Allow,
13744        warn_since: None,
13745        deny_since: None,
13746    },
13747    Lint {
13748        label: "clippy::enum_glob_use",
13749        description: r##"Checks for `use Enum::*`."##,
13750        default_severity: Severity::Allow,
13751        warn_since: None,
13752        deny_since: None,
13753    },
13754    Lint {
13755        label: "clippy::enum_variant_names",
13756        description: r##"Detects enumeration variants that are prefixed or suffixed
13757by the same characters."##,
13758        default_severity: Severity::Allow,
13759        warn_since: None,
13760        deny_since: None,
13761    },
13762    Lint {
13763        label: "clippy::eq_op",
13764        description: r##"Checks for equal operands to comparison, logical and
13765bitwise, difference and division binary operators (`==`, `>`, etc., `&&`,
13766`||`, `&`, `|`, `^`, `-` and `/`)."##,
13767        default_severity: Severity::Allow,
13768        warn_since: None,
13769        deny_since: None,
13770    },
13771    Lint {
13772        label: "clippy::equatable_if_let",
13773        description: r##"Checks for pattern matchings that can be expressed using equality."##,
13774        default_severity: Severity::Allow,
13775        warn_since: None,
13776        deny_since: None,
13777    },
13778    Lint {
13779        label: "clippy::erasing_op",
13780        description: r##"Checks for erasing operations, e.g., `x * 0`."##,
13781        default_severity: Severity::Allow,
13782        warn_since: None,
13783        deny_since: None,
13784    },
13785    Lint {
13786        label: "clippy::err_expect",
13787        description: r##"Checks for `.err().expect()` calls on the `Result` type."##,
13788        default_severity: Severity::Allow,
13789        warn_since: None,
13790        deny_since: None,
13791    },
13792    Lint {
13793        label: "clippy::error_impl_error",
13794        description: r##"Checks for types named `Error` that implement `Error`."##,
13795        default_severity: Severity::Allow,
13796        warn_since: None,
13797        deny_since: None,
13798    },
13799    Lint {
13800        label: "clippy::excessive_nesting",
13801        description: r##"Checks for blocks which are nested beyond a certain threshold.
13802
13803Note: Even though this lint is warn-by-default, it will only trigger if a maximum nesting level is defined in the clippy.toml file."##,
13804        default_severity: Severity::Allow,
13805        warn_since: None,
13806        deny_since: None,
13807    },
13808    Lint {
13809        label: "clippy::excessive_precision",
13810        description: r##"Checks for float literals with a precision greater
13811than that supported by the underlying type."##,
13812        default_severity: Severity::Allow,
13813        warn_since: None,
13814        deny_since: None,
13815    },
13816    Lint {
13817        label: "clippy::exhaustive_enums",
13818        description: r##"Warns on any exported `enum`s that are not tagged `#[non_exhaustive]`"##,
13819        default_severity: Severity::Allow,
13820        warn_since: None,
13821        deny_since: None,
13822    },
13823    Lint {
13824        label: "clippy::exhaustive_structs",
13825        description: r##"Warns on any exported `struct`s that are not tagged `#[non_exhaustive]`"##,
13826        default_severity: Severity::Allow,
13827        warn_since: None,
13828        deny_since: None,
13829    },
13830    Lint {
13831        label: "clippy::exit",
13832        description: r##"Detects calls to the `exit()` function which terminates the program."##,
13833        default_severity: Severity::Allow,
13834        warn_since: None,
13835        deny_since: None,
13836    },
13837    Lint {
13838        label: "clippy::expect_fun_call",
13839        description: r##"Checks for calls to `.expect(&format!(...))`, `.expect(foo(..))`,
13840etc., and suggests to use `unwrap_or_else` instead"##,
13841        default_severity: Severity::Allow,
13842        warn_since: None,
13843        deny_since: None,
13844    },
13845    Lint {
13846        label: "clippy::expect_used",
13847        description: r##"Checks for `.expect()` or `.expect_err()` calls on `Result`s and `.expect()` call on `Option`s."##,
13848        default_severity: Severity::Allow,
13849        warn_since: None,
13850        deny_since: None,
13851    },
13852    Lint {
13853        label: "clippy::expl_impl_clone_on_copy",
13854        description: r##"Checks for explicit `Clone` implementations for `Copy`
13855types."##,
13856        default_severity: Severity::Allow,
13857        warn_since: None,
13858        deny_since: None,
13859    },
13860    Lint {
13861        label: "clippy::explicit_auto_deref",
13862        description: r##"Checks for dereferencing expressions which would be covered by auto-deref."##,
13863        default_severity: Severity::Allow,
13864        warn_since: None,
13865        deny_since: None,
13866    },
13867    Lint {
13868        label: "clippy::explicit_counter_loop",
13869        description: r##"Checks `for` loops over slices with an explicit counter
13870and suggests the use of `.enumerate()`."##,
13871        default_severity: Severity::Allow,
13872        warn_since: None,
13873        deny_since: None,
13874    },
13875    Lint {
13876        label: "clippy::explicit_deref_methods",
13877        description: r##"Checks for explicit `deref()` or `deref_mut()` method calls."##,
13878        default_severity: Severity::Allow,
13879        warn_since: None,
13880        deny_since: None,
13881    },
13882    Lint {
13883        label: "clippy::explicit_into_iter_loop",
13884        description: r##"Checks for loops on `y.into_iter()` where `y` will do, and
13885suggests the latter."##,
13886        default_severity: Severity::Allow,
13887        warn_since: None,
13888        deny_since: None,
13889    },
13890    Lint {
13891        label: "clippy::explicit_iter_loop",
13892        description: r##"Checks for loops on `x.iter()` where `&x` will do, and
13893suggests the latter."##,
13894        default_severity: Severity::Allow,
13895        warn_since: None,
13896        deny_since: None,
13897    },
13898    Lint {
13899        label: "clippy::explicit_write",
13900        description: r##"Checks for usage of `write!()` / `writeln()!` which can be
13901replaced with `(e)print!()` / `(e)println!()`"##,
13902        default_severity: Severity::Allow,
13903        warn_since: None,
13904        deny_since: None,
13905    },
13906    Lint {
13907        label: "clippy::extend_from_slice",
13908        description: r##"Nothing. This lint has been deprecated"##,
13909        default_severity: Severity::Allow,
13910        warn_since: None,
13911        deny_since: None,
13912    },
13913    Lint {
13914        label: "clippy::extend_with_drain",
13915        description: r##"Checks for occurrences where one vector gets extended instead of append"##,
13916        default_severity: Severity::Allow,
13917        warn_since: None,
13918        deny_since: None,
13919    },
13920    Lint {
13921        label: "clippy::extra_unused_lifetimes",
13922        description: r##"Checks for lifetimes in generics that are never used
13923anywhere else."##,
13924        default_severity: Severity::Allow,
13925        warn_since: None,
13926        deny_since: None,
13927    },
13928    Lint {
13929        label: "clippy::extra_unused_type_parameters",
13930        description: r##"Checks for type parameters in generics that are never used anywhere else."##,
13931        default_severity: Severity::Allow,
13932        warn_since: None,
13933        deny_since: None,
13934    },
13935    Lint {
13936        label: "clippy::fallible_impl_from",
13937        description: r##"Checks for impls of `From<..>` that contain `panic!()` or `unwrap()`"##,
13938        default_severity: Severity::Allow,
13939        warn_since: None,
13940        deny_since: None,
13941    },
13942    Lint {
13943        label: "clippy::field_reassign_with_default",
13944        description: r##"Checks for immediate reassignment of fields initialized
13945with Default::default()."##,
13946        default_severity: Severity::Allow,
13947        warn_since: None,
13948        deny_since: None,
13949    },
13950    Lint {
13951        label: "clippy::field_scoped_visibility_modifiers",
13952        description: r##"Checks for usage of scoped visibility modifiers, like `pub(crate)`, on fields. These
13953make a field visible within a scope between public and private."##,
13954        default_severity: Severity::Allow,
13955        warn_since: None,
13956        deny_since: None,
13957    },
13958    Lint {
13959        label: "clippy::filetype_is_file",
13960        description: r##"Checks for `FileType::is_file()`."##,
13961        default_severity: Severity::Allow,
13962        warn_since: None,
13963        deny_since: None,
13964    },
13965    Lint {
13966        label: "clippy::filter_map_bool_then",
13967        description: r##"Checks for usage of `bool::then` in `Iterator::filter_map`."##,
13968        default_severity: Severity::Allow,
13969        warn_since: None,
13970        deny_since: None,
13971    },
13972    Lint {
13973        label: "clippy::filter_map_identity",
13974        description: r##"Checks for usage of `filter_map(|x| x)`."##,
13975        default_severity: Severity::Allow,
13976        warn_since: None,
13977        deny_since: None,
13978    },
13979    Lint {
13980        label: "clippy::filter_map_next",
13981        description: r##"Checks for usage of `_.filter_map(_).next()`."##,
13982        default_severity: Severity::Allow,
13983        warn_since: None,
13984        deny_since: None,
13985    },
13986    Lint {
13987        label: "clippy::filter_next",
13988        description: r##"Checks for usage of `_.filter(_).next()`."##,
13989        default_severity: Severity::Allow,
13990        warn_since: None,
13991        deny_since: None,
13992    },
13993    Lint {
13994        label: "clippy::flat_map_identity",
13995        description: r##"Checks for usage of `flat_map(|x| x)`."##,
13996        default_severity: Severity::Allow,
13997        warn_since: None,
13998        deny_since: None,
13999    },
14000    Lint {
14001        label: "clippy::flat_map_option",
14002        description: r##"Checks for usage of `Iterator::flat_map()` where `filter_map()` could be
14003used instead."##,
14004        default_severity: Severity::Allow,
14005        warn_since: None,
14006        deny_since: None,
14007    },
14008    Lint {
14009        label: "clippy::float_arithmetic",
14010        description: r##"Checks for float arithmetic."##,
14011        default_severity: Severity::Allow,
14012        warn_since: None,
14013        deny_since: None,
14014    },
14015    Lint {
14016        label: "clippy::float_cmp",
14017        description: r##"Checks for (in-)equality comparisons on floating-point
14018values (apart from zero), except in functions called `*eq*` (which probably
14019implement equality for a type involving floats)."##,
14020        default_severity: Severity::Allow,
14021        warn_since: None,
14022        deny_since: None,
14023    },
14024    Lint {
14025        label: "clippy::float_cmp_const",
14026        description: r##"Checks for (in-)equality comparisons on constant floating-point
14027values (apart from zero), except in functions called `*eq*` (which probably
14028implement equality for a type involving floats)."##,
14029        default_severity: Severity::Allow,
14030        warn_since: None,
14031        deny_since: None,
14032    },
14033    Lint {
14034        label: "clippy::float_equality_without_abs",
14035        description: r##"Checks for statements of the form `(a - b) < f32::EPSILON` or
14036`(a - b) < f64::EPSILON`. Notes the missing `.abs()`."##,
14037        default_severity: Severity::Allow,
14038        warn_since: None,
14039        deny_since: None,
14040    },
14041    Lint {
14042        label: "clippy::fn_address_comparisons",
14043        description: r##"Checks for comparisons with an address of a function item."##,
14044        default_severity: Severity::Allow,
14045        warn_since: None,
14046        deny_since: None,
14047    },
14048    Lint {
14049        label: "clippy::fn_params_excessive_bools",
14050        description: r##"Checks for excessive use of
14051bools in function definitions."##,
14052        default_severity: Severity::Allow,
14053        warn_since: None,
14054        deny_since: None,
14055    },
14056    Lint {
14057        label: "clippy::fn_to_numeric_cast",
14058        description: r##"Checks for casts of function pointers to something other than `usize`."##,
14059        default_severity: Severity::Allow,
14060        warn_since: None,
14061        deny_since: None,
14062    },
14063    Lint {
14064        label: "clippy::fn_to_numeric_cast_any",
14065        description: r##"Checks for casts of a function pointer to any integer type."##,
14066        default_severity: Severity::Allow,
14067        warn_since: None,
14068        deny_since: None,
14069    },
14070    Lint {
14071        label: "clippy::fn_to_numeric_cast_with_truncation",
14072        description: r##"Checks for casts of a function pointer to a numeric type not wide enough to
14073store an address."##,
14074        default_severity: Severity::Allow,
14075        warn_since: None,
14076        deny_since: None,
14077    },
14078    Lint {
14079        label: "clippy::for_kv_map",
14080        description: r##"Checks for iterating a map (`HashMap` or `BTreeMap`) and
14081ignoring either the keys or values."##,
14082        default_severity: Severity::Allow,
14083        warn_since: None,
14084        deny_since: None,
14085    },
14086    Lint {
14087        label: "clippy::forget_non_drop",
14088        description: r##"Checks for calls to `std::mem::forget` with a value that does not implement `Drop`."##,
14089        default_severity: Severity::Allow,
14090        warn_since: None,
14091        deny_since: None,
14092    },
14093    Lint {
14094        label: "clippy::format_collect",
14095        description: r##"Checks for usage of `.map(|_| format!(..)).collect::<String>()`."##,
14096        default_severity: Severity::Allow,
14097        warn_since: None,
14098        deny_since: None,
14099    },
14100    Lint {
14101        label: "clippy::format_in_format_args",
14102        description: r##"Detects `format!` within the arguments of another macro that does
14103formatting such as `format!` itself, `write!` or `println!`. Suggests
14104inlining the `format!` call."##,
14105        default_severity: Severity::Allow,
14106        warn_since: None,
14107        deny_since: None,
14108    },
14109    Lint {
14110        label: "clippy::format_push_string",
14111        description: r##"Detects cases where the result of a `format!` call is
14112appended to an existing `String`."##,
14113        default_severity: Severity::Allow,
14114        warn_since: None,
14115        deny_since: None,
14116    },
14117    Lint {
14118        label: "clippy::four_forward_slashes",
14119        description: r##"Checks for outer doc comments written with 4 forward slashes (`////`)."##,
14120        default_severity: Severity::Allow,
14121        warn_since: None,
14122        deny_since: None,
14123    },
14124    Lint {
14125        label: "clippy::from_iter_instead_of_collect",
14126        description: r##"Checks for `from_iter()` function calls on types that implement the `FromIterator`
14127trait."##,
14128        default_severity: Severity::Allow,
14129        warn_since: None,
14130        deny_since: None,
14131    },
14132    Lint {
14133        label: "clippy::from_over_into",
14134        description: r##"Searches for implementations of the `Into<..>` trait and suggests to implement `From<..>` instead."##,
14135        default_severity: Severity::Allow,
14136        warn_since: None,
14137        deny_since: None,
14138    },
14139    Lint {
14140        label: "clippy::from_raw_with_void_ptr",
14141        description: r##"Checks if we're passing a `c_void` raw pointer to `{Box,Rc,Arc,Weak}::from_raw(_)`"##,
14142        default_severity: Severity::Allow,
14143        warn_since: None,
14144        deny_since: None,
14145    },
14146    Lint {
14147        label: "clippy::from_str_radix_10",
14148        description: r##"Checks for function invocations of the form `primitive::from_str_radix(s, 10)`"##,
14149        default_severity: Severity::Allow,
14150        warn_since: None,
14151        deny_since: None,
14152    },
14153    Lint {
14154        label: "clippy::future_not_send",
14155        description: r##"This lint requires Future implementations returned from
14156functions and methods to implement the `Send` marker trait. It is mostly
14157used by library authors (public and internal) that target an audience where
14158multithreaded executors are likely to be used for running these Futures."##,
14159        default_severity: Severity::Allow,
14160        warn_since: None,
14161        deny_since: None,
14162    },
14163    Lint {
14164        label: "clippy::get_first",
14165        description: r##"Checks for usage of `x.get(0)` instead of
14166`x.first()` or `x.front()`."##,
14167        default_severity: Severity::Allow,
14168        warn_since: None,
14169        deny_since: None,
14170    },
14171    Lint {
14172        label: "clippy::get_last_with_len",
14173        description: r##"Checks for usage of `x.get(x.len() - 1)` instead of
14174`x.last()`."##,
14175        default_severity: Severity::Allow,
14176        warn_since: None,
14177        deny_since: None,
14178    },
14179    Lint {
14180        label: "clippy::get_unwrap",
14181        description: r##"Checks for usage of `.get().unwrap()` (or
14182`.get_mut().unwrap`) on a standard library type which implements `Index`"##,
14183        default_severity: Severity::Allow,
14184        warn_since: None,
14185        deny_since: None,
14186    },
14187    Lint {
14188        label: "clippy::host_endian_bytes",
14189        description: r##"Checks for the usage of the `to_ne_bytes` method and/or the function `from_ne_bytes`."##,
14190        default_severity: Severity::Allow,
14191        warn_since: None,
14192        deny_since: None,
14193    },
14194    Lint {
14195        label: "clippy::identity_op",
14196        description: r##"Checks for identity operations, e.g., `x + 0`."##,
14197        default_severity: Severity::Allow,
14198        warn_since: None,
14199        deny_since: None,
14200    },
14201    Lint {
14202        label: "clippy::if_let_mutex",
14203        description: r##"Checks for `Mutex::lock` calls in `if let` expression
14204with lock calls in any of the else blocks."##,
14205        default_severity: Severity::Allow,
14206        warn_since: None,
14207        deny_since: None,
14208    },
14209    Lint {
14210        label: "clippy::if_not_else",
14211        description: r##"Checks for usage of `!` or `!=` in an if condition with an
14212else branch."##,
14213        default_severity: Severity::Allow,
14214        warn_since: None,
14215        deny_since: None,
14216    },
14217    Lint {
14218        label: "clippy::if_same_then_else",
14219        description: r##"Checks for `if/else` with the same body as the *then* part
14220and the *else* part."##,
14221        default_severity: Severity::Allow,
14222        warn_since: None,
14223        deny_since: None,
14224    },
14225    Lint {
14226        label: "clippy::if_then_some_else_none",
14227        description: r##"Checks for if-else that could be written using either `bool::then` or `bool::then_some`."##,
14228        default_severity: Severity::Allow,
14229        warn_since: None,
14230        deny_since: None,
14231    },
14232    Lint {
14233        label: "clippy::ifs_same_cond",
14234        description: r##"Checks for consecutive `if`s with the same condition."##,
14235        default_severity: Severity::Allow,
14236        warn_since: None,
14237        deny_since: None,
14238    },
14239    Lint {
14240        label: "clippy::ignored_unit_patterns",
14241        description: r##"Checks for usage of `_` in patterns of type `()`."##,
14242        default_severity: Severity::Allow,
14243        warn_since: None,
14244        deny_since: None,
14245    },
14246    Lint {
14247        label: "clippy::impl_hash_borrow_with_str_and_bytes",
14248        description: r##"This lint is concerned with the semantics of `Borrow` and `Hash` for a
14249type that implements all three of `Hash`, `Borrow<str>` and `Borrow<[u8]>`
14250as it is impossible to satisfy the semantics of Borrow and `Hash` for
14251both `Borrow<str>` and `Borrow<[u8]>`."##,
14252        default_severity: Severity::Allow,
14253        warn_since: None,
14254        deny_since: None,
14255    },
14256    Lint {
14257        label: "clippy::impl_trait_in_params",
14258        description: r##"Lints when `impl Trait` is being used in a function's parameters."##,
14259        default_severity: Severity::Allow,
14260        warn_since: None,
14261        deny_since: None,
14262    },
14263    Lint {
14264        label: "clippy::implicit_clone",
14265        description: r##"Checks for the usage of `_.to_owned()`, `vec.to_vec()`, or similar when calling `_.clone()` would be clearer."##,
14266        default_severity: Severity::Allow,
14267        warn_since: None,
14268        deny_since: None,
14269    },
14270    Lint {
14271        label: "clippy::implicit_hasher",
14272        description: r##"Checks for public `impl` or `fn` missing generalization
14273over different hashers and implicitly defaulting to the default hashing
14274algorithm (`SipHash`)."##,
14275        default_severity: Severity::Allow,
14276        warn_since: None,
14277        deny_since: None,
14278    },
14279    Lint {
14280        label: "clippy::implicit_return",
14281        description: r##"Checks for missing return statements at the end of a block."##,
14282        default_severity: Severity::Allow,
14283        warn_since: None,
14284        deny_since: None,
14285    },
14286    Lint {
14287        label: "clippy::implicit_saturating_add",
14288        description: r##"Checks for implicit saturating addition."##,
14289        default_severity: Severity::Allow,
14290        warn_since: None,
14291        deny_since: None,
14292    },
14293    Lint {
14294        label: "clippy::implicit_saturating_sub",
14295        description: r##"Checks for implicit saturating subtraction."##,
14296        default_severity: Severity::Allow,
14297        warn_since: None,
14298        deny_since: None,
14299    },
14300    Lint {
14301        label: "clippy::implied_bounds_in_impls",
14302        description: r##"Looks for bounds in `impl Trait` in return position that are implied by other bounds.
14303This can happen when a trait is specified that another trait already has as a supertrait
14304(e.g. `fn() -> impl Deref + DerefMut<Target = i32>` has an unnecessary `Deref` bound,
14305because `Deref` is a supertrait of `DerefMut`)"##,
14306        default_severity: Severity::Allow,
14307        warn_since: None,
14308        deny_since: None,
14309    },
14310    Lint {
14311        label: "clippy::impossible_comparisons",
14312        description: r##"Checks for double comparisons that can never succeed"##,
14313        default_severity: Severity::Allow,
14314        warn_since: None,
14315        deny_since: None,
14316    },
14317    Lint {
14318        label: "clippy::imprecise_flops",
14319        description: r##"Looks for floating-point expressions that
14320can be expressed using built-in methods to improve accuracy
14321at the cost of performance."##,
14322        default_severity: Severity::Allow,
14323        warn_since: None,
14324        deny_since: None,
14325    },
14326    Lint {
14327        label: "clippy::incompatible_msrv",
14328        description: r##"This lint checks that no function newer than the defined MSRV (minimum
14329supported rust version) is used in the crate."##,
14330        default_severity: Severity::Allow,
14331        warn_since: None,
14332        deny_since: None,
14333    },
14334    Lint {
14335        label: "clippy::inconsistent_digit_grouping",
14336        description: r##"Warns if an integral or floating-point constant is
14337grouped inconsistently with underscores."##,
14338        default_severity: Severity::Allow,
14339        warn_since: None,
14340        deny_since: None,
14341    },
14342    Lint {
14343        label: "clippy::inconsistent_struct_constructor",
14344        description: r##"Checks for struct constructors where all fields are shorthand and
14345the order of the field init shorthand in the constructor is inconsistent
14346with the order in the struct definition."##,
14347        default_severity: Severity::Allow,
14348        warn_since: None,
14349        deny_since: None,
14350    },
14351    Lint {
14352        label: "clippy::index_refutable_slice",
14353        description: r##"The lint checks for slice bindings in patterns that are only used to
14354access individual slice values."##,
14355        default_severity: Severity::Allow,
14356        warn_since: None,
14357        deny_since: None,
14358    },
14359    Lint {
14360        label: "clippy::indexing_slicing",
14361        description: r##"Checks for usage of indexing or slicing. Arrays are special cases, this lint
14362does report on arrays if we can tell that slicing operations are in bounds and does not
14363lint on constant `usize` indexing on arrays because that is handled by rustc's `const_err` lint."##,
14364        default_severity: Severity::Allow,
14365        warn_since: None,
14366        deny_since: None,
14367    },
14368    Lint {
14369        label: "clippy::ineffective_bit_mask",
14370        description: r##"Checks for bit masks in comparisons which can be removed
14371without changing the outcome. The basic structure can be seen in the
14372following table:
14373
14374|Comparison| Bit Op   |Example     |equals |
14375|----------|----------|------------|-------|
14376|`>` / `<=`|`\\|` / `^`|`x \\| 2 > 3`|`x > 3`|
14377|`<` / `>=`|`\\|` / `^`|`x ^ 1 < 4` |`x < 4`|"##,
14378        default_severity: Severity::Allow,
14379        warn_since: None,
14380        deny_since: None,
14381    },
14382    Lint {
14383        label: "clippy::ineffective_open_options",
14384        description: r##"Checks if both `.write(true)` and `.append(true)` methods are called
14385on a same `OpenOptions`."##,
14386        default_severity: Severity::Allow,
14387        warn_since: None,
14388        deny_since: None,
14389    },
14390    Lint {
14391        label: "clippy::inefficient_to_string",
14392        description: r##"Checks for usage of `.to_string()` on an `&&T` where
14393`T` implements `ToString` directly (like `&&str` or `&&String`)."##,
14394        default_severity: Severity::Allow,
14395        warn_since: None,
14396        deny_since: None,
14397    },
14398    Lint {
14399        label: "clippy::infallible_destructuring_match",
14400        description: r##"Checks for matches being used to destructure a single-variant enum
14401or tuple struct where a `let` will suffice."##,
14402        default_severity: Severity::Allow,
14403        warn_since: None,
14404        deny_since: None,
14405    },
14406    Lint {
14407        label: "clippy::infinite_iter",
14408        description: r##"Checks for iteration that is guaranteed to be infinite."##,
14409        default_severity: Severity::Allow,
14410        warn_since: None,
14411        deny_since: None,
14412    },
14413    Lint {
14414        label: "clippy::infinite_loop",
14415        description: r##"Checks for infinite loops in a function where the return type is not `!`
14416and lint accordingly."##,
14417        default_severity: Severity::Allow,
14418        warn_since: None,
14419        deny_since: None,
14420    },
14421    Lint {
14422        label: "clippy::inherent_to_string",
14423        description: r##"Checks for the definition of inherent methods with a signature of `to_string(&self) -> String`."##,
14424        default_severity: Severity::Allow,
14425        warn_since: None,
14426        deny_since: None,
14427    },
14428    Lint {
14429        label: "clippy::inherent_to_string_shadow_display",
14430        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."##,
14431        default_severity: Severity::Allow,
14432        warn_since: None,
14433        deny_since: None,
14434    },
14435    Lint {
14436        label: "clippy::init_numbered_fields",
14437        description: r##"Checks for tuple structs initialized with field syntax.
14438It will however not lint if a base initializer is present.
14439The lint will also ignore code in macros."##,
14440        default_severity: Severity::Allow,
14441        warn_since: None,
14442        deny_since: None,
14443    },
14444    Lint {
14445        label: "clippy::inline_always",
14446        description: r##"Checks for items annotated with `#[inline(always)]`,
14447unless the annotated function is empty or simply panics."##,
14448        default_severity: Severity::Allow,
14449        warn_since: None,
14450        deny_since: None,
14451    },
14452    Lint {
14453        label: "clippy::inline_asm_x86_att_syntax",
14454        description: r##"Checks for usage of AT&T x86 assembly syntax."##,
14455        default_severity: Severity::Allow,
14456        warn_since: None,
14457        deny_since: None,
14458    },
14459    Lint {
14460        label: "clippy::inline_asm_x86_intel_syntax",
14461        description: r##"Checks for usage of Intel x86 assembly syntax."##,
14462        default_severity: Severity::Allow,
14463        warn_since: None,
14464        deny_since: None,
14465    },
14466    Lint {
14467        label: "clippy::inline_fn_without_body",
14468        description: r##"Checks for `#[inline]` on trait methods without bodies"##,
14469        default_severity: Severity::Allow,
14470        warn_since: None,
14471        deny_since: None,
14472    },
14473    Lint {
14474        label: "clippy::inspect_for_each",
14475        description: r##"Checks for usage of `inspect().for_each()`."##,
14476        default_severity: Severity::Allow,
14477        warn_since: None,
14478        deny_since: None,
14479    },
14480    Lint {
14481        label: "clippy::int_plus_one",
14482        description: r##"Checks for usage of `x >= y + 1` or `x - 1 >= y` (and `<=`) in a block"##,
14483        default_severity: Severity::Allow,
14484        warn_since: None,
14485        deny_since: None,
14486    },
14487    Lint {
14488        label: "clippy::integer_division",
14489        description: r##"Checks for division of integers"##,
14490        default_severity: Severity::Allow,
14491        warn_since: None,
14492        deny_since: None,
14493    },
14494    Lint {
14495        label: "clippy::integer_division_remainder_used",
14496        description: r##"Checks for the usage of division (`/`) and remainder (`%`) operations
14497when performed on any integer types using the default `Div` and `Rem` trait implementations."##,
14498        default_severity: Severity::Allow,
14499        warn_since: None,
14500        deny_since: None,
14501    },
14502    Lint {
14503        label: "clippy::into_iter_on_ref",
14504        description: r##"Checks for `into_iter` calls on references which should be replaced by `iter`
14505or `iter_mut`."##,
14506        default_severity: Severity::Allow,
14507        warn_since: None,
14508        deny_since: None,
14509    },
14510    Lint {
14511        label: "clippy::into_iter_without_iter",
14512        description: r##"This is the opposite of the `iter_without_into_iter` lint.
14513It looks for `IntoIterator for (&|&mut) Type` implementations without an inherent `iter` or `iter_mut` method
14514on the type or on any of the types in its `Deref` chain."##,
14515        default_severity: Severity::Allow,
14516        warn_since: None,
14517        deny_since: None,
14518    },
14519    Lint {
14520        label: "clippy::invalid_null_ptr_usage",
14521        description: r##"This lint checks for invalid usages of `ptr::null`."##,
14522        default_severity: Severity::Allow,
14523        warn_since: None,
14524        deny_since: None,
14525    },
14526    Lint {
14527        label: "clippy::invalid_regex",
14528        description: r##"Checks [regex](https://crates.io/crates/regex) creation
14529(with `Regex::new`, `RegexBuilder::new`, or `RegexSet::new`) for correct
14530regex syntax."##,
14531        default_severity: Severity::Allow,
14532        warn_since: None,
14533        deny_since: None,
14534    },
14535    Lint {
14536        label: "clippy::invalid_upcast_comparisons",
14537        description: r##"Checks for comparisons where the relation is always either
14538true or false, but where one side has been upcast so that the comparison is
14539necessary. Only integer types are checked."##,
14540        default_severity: Severity::Allow,
14541        warn_since: None,
14542        deny_since: None,
14543    },
14544    Lint {
14545        label: "clippy::inverted_saturating_sub",
14546        description: r##"Checks for comparisons between integers, followed by subtracting the greater value from the
14547lower one."##,
14548        default_severity: Severity::Allow,
14549        warn_since: None,
14550        deny_since: None,
14551    },
14552    Lint {
14553        label: "clippy::invisible_characters",
14554        description: r##"Checks for invisible Unicode characters in the code."##,
14555        default_severity: Severity::Allow,
14556        warn_since: None,
14557        deny_since: None,
14558    },
14559    Lint {
14560        label: "clippy::is_digit_ascii_radix",
14561        description: r##"Finds usages of [`char::is_digit`](https://doc.rust-lang.org/stable/std/primitive.char.html#method.is_digit) that
14562can be replaced with [`is_ascii_digit`](https://doc.rust-lang.org/stable/std/primitive.char.html#method.is_ascii_digit) or
14563[`is_ascii_hexdigit`](https://doc.rust-lang.org/stable/std/primitive.char.html#method.is_ascii_hexdigit)."##,
14564        default_severity: Severity::Allow,
14565        warn_since: None,
14566        deny_since: None,
14567    },
14568    Lint {
14569        label: "clippy::items_after_statements",
14570        description: r##"Checks for items declared after some statement in a block."##,
14571        default_severity: Severity::Allow,
14572        warn_since: None,
14573        deny_since: None,
14574    },
14575    Lint {
14576        label: "clippy::items_after_test_module",
14577        description: r##"Triggers if an item is declared after the testing module marked with `#[cfg(test)]`."##,
14578        default_severity: Severity::Allow,
14579        warn_since: None,
14580        deny_since: None,
14581    },
14582    Lint {
14583        label: "clippy::iter_cloned_collect",
14584        description: r##"Checks for the use of `.cloned().collect()` on slice to
14585create a `Vec`."##,
14586        default_severity: Severity::Allow,
14587        warn_since: None,
14588        deny_since: None,
14589    },
14590    Lint {
14591        label: "clippy::iter_count",
14592        description: r##"Checks for the use of `.iter().count()`."##,
14593        default_severity: Severity::Allow,
14594        warn_since: None,
14595        deny_since: None,
14596    },
14597    Lint {
14598        label: "clippy::iter_filter_is_ok",
14599        description: r##"Checks for usage of `.filter(Result::is_ok)` that may be replaced with a `.flatten()` call.
14600This lint will require additional changes to the follow-up calls as it affects the type."##,
14601        default_severity: Severity::Allow,
14602        warn_since: None,
14603        deny_since: None,
14604    },
14605    Lint {
14606        label: "clippy::iter_filter_is_some",
14607        description: r##"Checks for usage of `.filter(Option::is_some)` that may be replaced with a `.flatten()` call.
14608This lint will require additional changes to the follow-up calls as it affects the type."##,
14609        default_severity: Severity::Allow,
14610        warn_since: None,
14611        deny_since: None,
14612    },
14613    Lint {
14614        label: "clippy::iter_kv_map",
14615        description: r##"Checks for iterating a map (`HashMap` or `BTreeMap`) and
14616ignoring either the keys or values."##,
14617        default_severity: Severity::Allow,
14618        warn_since: None,
14619        deny_since: None,
14620    },
14621    Lint {
14622        label: "clippy::iter_next_loop",
14623        description: r##"Checks for loops on `x.next()`."##,
14624        default_severity: Severity::Allow,
14625        warn_since: None,
14626        deny_since: None,
14627    },
14628    Lint {
14629        label: "clippy::iter_next_slice",
14630        description: r##"Checks for usage of `iter().next()` on a Slice or an Array"##,
14631        default_severity: Severity::Allow,
14632        warn_since: None,
14633        deny_since: None,
14634    },
14635    Lint {
14636        label: "clippy::iter_not_returning_iterator",
14637        description: r##"Detects methods named `iter` or `iter_mut` that do not have a return type that implements `Iterator`."##,
14638        default_severity: Severity::Allow,
14639        warn_since: None,
14640        deny_since: None,
14641    },
14642    Lint {
14643        label: "clippy::iter_nth",
14644        description: r##"Checks for usage of `.iter().nth()`/`.iter_mut().nth()` on standard library types that have
14645equivalent `.get()`/`.get_mut()` methods."##,
14646        default_severity: Severity::Allow,
14647        warn_since: None,
14648        deny_since: None,
14649    },
14650    Lint {
14651        label: "clippy::iter_nth_zero",
14652        description: r##"Checks for the use of `iter.nth(0)`."##,
14653        default_severity: Severity::Allow,
14654        warn_since: None,
14655        deny_since: None,
14656    },
14657    Lint {
14658        label: "clippy::iter_on_empty_collections",
14659        description: r##"Checks for calls to `iter`, `iter_mut` or `into_iter` on empty collections"##,
14660        default_severity: Severity::Allow,
14661        warn_since: None,
14662        deny_since: None,
14663    },
14664    Lint {
14665        label: "clippy::iter_on_single_items",
14666        description: r##"Checks for calls to `iter`, `iter_mut` or `into_iter` on collections containing a single item"##,
14667        default_severity: Severity::Allow,
14668        warn_since: None,
14669        deny_since: None,
14670    },
14671    Lint {
14672        label: "clippy::iter_out_of_bounds",
14673        description: r##"Looks for iterator combinator calls such as `.take(x)` or `.skip(x)`
14674where `x` is greater than the amount of items that an iterator will produce."##,
14675        default_severity: Severity::Allow,
14676        warn_since: None,
14677        deny_since: None,
14678    },
14679    Lint {
14680        label: "clippy::iter_over_hash_type",
14681        description: r##"This is a restriction lint which prevents the use of hash types (i.e., `HashSet` and `HashMap`) in for loops."##,
14682        default_severity: Severity::Allow,
14683        warn_since: None,
14684        deny_since: None,
14685    },
14686    Lint {
14687        label: "clippy::iter_overeager_cloned",
14688        description: r##"Checks for usage of `_.cloned().<func>()` where call to `.cloned()` can be postponed."##,
14689        default_severity: Severity::Allow,
14690        warn_since: None,
14691        deny_since: None,
14692    },
14693    Lint {
14694        label: "clippy::iter_skip_next",
14695        description: r##"Checks for usage of `.skip(x).next()` on iterators."##,
14696        default_severity: Severity::Allow,
14697        warn_since: None,
14698        deny_since: None,
14699    },
14700    Lint {
14701        label: "clippy::iter_skip_zero",
14702        description: r##"Checks for usage of `.skip(0)` on iterators."##,
14703        default_severity: Severity::Allow,
14704        warn_since: None,
14705        deny_since: None,
14706    },
14707    Lint {
14708        label: "clippy::iter_with_drain",
14709        description: r##"Checks for usage of `.drain(..)` on `Vec` and `VecDeque` for iteration."##,
14710        default_severity: Severity::Allow,
14711        warn_since: None,
14712        deny_since: None,
14713    },
14714    Lint {
14715        label: "clippy::iter_without_into_iter",
14716        description: r##"Looks for `iter` and `iter_mut` methods without an associated `IntoIterator for (&|&mut) Type` implementation."##,
14717        default_severity: Severity::Allow,
14718        warn_since: None,
14719        deny_since: None,
14720    },
14721    Lint {
14722        label: "clippy::iterator_step_by_zero",
14723        description: r##"Checks for calling `.step_by(0)` on iterators which panics."##,
14724        default_severity: Severity::Allow,
14725        warn_since: None,
14726        deny_since: None,
14727    },
14728    Lint {
14729        label: "clippy::join_absolute_paths",
14730        description: r##"Checks for calls to `Path::join` that start with a path separator (`\\\\` or `/`)."##,
14731        default_severity: Severity::Allow,
14732        warn_since: None,
14733        deny_since: None,
14734    },
14735    Lint {
14736        label: "clippy::just_underscores_and_digits",
14737        description: r##"Checks if you have variables whose name consists of just
14738underscores and digits."##,
14739        default_severity: Severity::Allow,
14740        warn_since: None,
14741        deny_since: None,
14742    },
14743    Lint {
14744        label: "clippy::large_const_arrays",
14745        description: r##"Checks for large `const` arrays that should
14746be defined as `static` instead."##,
14747        default_severity: Severity::Allow,
14748        warn_since: None,
14749        deny_since: None,
14750    },
14751    Lint {
14752        label: "clippy::large_digit_groups",
14753        description: r##"Warns if the digits of an integral or floating-point
14754constant are grouped into groups that
14755are too large."##,
14756        default_severity: Severity::Allow,
14757        warn_since: None,
14758        deny_since: None,
14759    },
14760    Lint {
14761        label: "clippy::large_enum_variant",
14762        description: r##"Checks for large size differences between variants on
14763`enum`s."##,
14764        default_severity: Severity::Allow,
14765        warn_since: None,
14766        deny_since: None,
14767    },
14768    Lint {
14769        label: "clippy::large_futures",
14770        description: r##"It checks for the size of a `Future` created by `async fn` or `async {}`."##,
14771        default_severity: Severity::Allow,
14772        warn_since: None,
14773        deny_since: None,
14774    },
14775    Lint {
14776        label: "clippy::large_include_file",
14777        description: r##"Checks for the inclusion of large files via `include_bytes!()`
14778or `include_str!()`."##,
14779        default_severity: Severity::Allow,
14780        warn_since: None,
14781        deny_since: None,
14782    },
14783    Lint {
14784        label: "clippy::large_stack_arrays",
14785        description: r##"Checks for local arrays that may be too large."##,
14786        default_severity: Severity::Allow,
14787        warn_since: None,
14788        deny_since: None,
14789    },
14790    Lint {
14791        label: "clippy::large_stack_frames",
14792        description: r##"Checks for functions that use a lot of stack space.
14793
14794This often happens when constructing a large type, such as an array with a lot of elements,
14795or constructing *many* smaller-but-still-large structs, or copying around a lot of large types.
14796
14797This lint is a more general version of [`large_stack_arrays`](https://rust-lang.github.io/rust-clippy/master/#large_stack_arrays)
14798that is intended to look at functions as a whole instead of only individual array expressions inside of a function."##,
14799        default_severity: Severity::Allow,
14800        warn_since: None,
14801        deny_since: None,
14802    },
14803    Lint {
14804        label: "clippy::large_types_passed_by_value",
14805        description: r##"Checks for functions taking arguments by value, where
14806the argument type is `Copy` and large enough to be worth considering
14807passing by reference. Does not trigger if the function is being exported,
14808because that might induce API breakage, if the parameter is declared as mutable,
14809or if the argument is a `self`."##,
14810        default_severity: Severity::Allow,
14811        warn_since: None,
14812        deny_since: None,
14813    },
14814    Lint {
14815        label: "clippy::legacy_numeric_constants",
14816        description: r##"Checks for usage of `<integer>::max_value()`, `std::<integer>::MAX`,
14817`std::<float>::EPSILON`, etc."##,
14818        default_severity: Severity::Allow,
14819        warn_since: None,
14820        deny_since: None,
14821    },
14822    Lint {
14823        label: "clippy::len_without_is_empty",
14824        description: r##"Checks for items that implement `.len()` but not
14825`.is_empty()`."##,
14826        default_severity: Severity::Allow,
14827        warn_since: None,
14828        deny_since: None,
14829    },
14830    Lint {
14831        label: "clippy::len_zero",
14832        description: r##"Checks for getting the length of something via `.len()`
14833just to compare to zero, and suggests using `.is_empty()` where applicable."##,
14834        default_severity: Severity::Allow,
14835        warn_since: None,
14836        deny_since: None,
14837    },
14838    Lint {
14839        label: "clippy::let_and_return",
14840        description: r##"Checks for `let`-bindings, which are subsequently
14841returned."##,
14842        default_severity: Severity::Allow,
14843        warn_since: None,
14844        deny_since: None,
14845    },
14846    Lint {
14847        label: "clippy::let_underscore_future",
14848        description: r##"Checks for `let _ = <expr>` where the resulting type of expr implements `Future`"##,
14849        default_severity: Severity::Allow,
14850        warn_since: None,
14851        deny_since: None,
14852    },
14853    Lint {
14854        label: "clippy::let_underscore_lock",
14855        description: r##"Checks for `let _ = sync_lock`. This supports `mutex` and `rwlock` in
14856`parking_lot`. For `std` locks see the `rustc` lint
14857[`let_underscore_lock`](https://doc.rust-lang.org/nightly/rustc/lints/listing/deny-by-default.html#let-underscore-lock)"##,
14858        default_severity: Severity::Allow,
14859        warn_since: None,
14860        deny_since: None,
14861    },
14862    Lint {
14863        label: "clippy::let_underscore_must_use",
14864        description: r##"Checks for `let _ = <expr>` where expr is `#[must_use]`"##,
14865        default_severity: Severity::Allow,
14866        warn_since: None,
14867        deny_since: None,
14868    },
14869    Lint {
14870        label: "clippy::let_underscore_untyped",
14871        description: r##"Checks for `let _ = <expr>` without a type annotation, and suggests to either provide one,
14872or remove the `let` keyword altogether."##,
14873        default_severity: Severity::Allow,
14874        warn_since: None,
14875        deny_since: None,
14876    },
14877    Lint {
14878        label: "clippy::let_unit_value",
14879        description: r##"Checks for binding a unit value."##,
14880        default_severity: Severity::Allow,
14881        warn_since: None,
14882        deny_since: None,
14883    },
14884    Lint {
14885        label: "clippy::let_with_type_underscore",
14886        description: r##"Detects when a variable is declared with an explicit type of `_`."##,
14887        default_severity: Severity::Allow,
14888        warn_since: None,
14889        deny_since: None,
14890    },
14891    Lint {
14892        label: "clippy::lines_filter_map_ok",
14893        description: r##"Checks for usage of `lines.filter_map(Result::ok)` or `lines.flat_map(Result::ok)`
14894when `lines` has type `std::io::Lines`."##,
14895        default_severity: Severity::Allow,
14896        warn_since: None,
14897        deny_since: None,
14898    },
14899    Lint {
14900        label: "clippy::linkedlist",
14901        description: r##"Checks for usage of any `LinkedList`, suggesting to use a
14902`Vec` or a `VecDeque` (formerly called `RingBuf`)."##,
14903        default_severity: Severity::Allow,
14904        warn_since: None,
14905        deny_since: None,
14906    },
14907    Lint {
14908        label: "clippy::lint_groups_priority",
14909        description: r##"Checks for lint groups with the same priority as lints in the `Cargo.toml`
14910[`[lints]` table](https://doc.rust-lang.org/cargo/reference/manifest.html#the-lints-section).
14911
14912This lint will be removed once [cargo#12918](https://github.com/rust-lang/cargo/issues/12918)
14913is resolved."##,
14914        default_severity: Severity::Allow,
14915        warn_since: None,
14916        deny_since: None,
14917    },
14918    Lint {
14919        label: "clippy::little_endian_bytes",
14920        description: r##"Checks for the usage of the `to_le_bytes` method and/or the function `from_le_bytes`."##,
14921        default_severity: Severity::Allow,
14922        warn_since: None,
14923        deny_since: None,
14924    },
14925    Lint {
14926        label: "clippy::lossy_float_literal",
14927        description: r##"Checks for whole number float literals that
14928cannot be represented as the underlying type without loss."##,
14929        default_severity: Severity::Allow,
14930        warn_since: None,
14931        deny_since: None,
14932    },
14933    Lint {
14934        label: "clippy::macro_metavars_in_unsafe",
14935        description: r##"Looks for macros that expand metavariables in an unsafe block."##,
14936        default_severity: Severity::Allow,
14937        warn_since: None,
14938        deny_since: None,
14939    },
14940    Lint {
14941        label: "clippy::macro_use_imports",
14942        description: r##"Checks for `#[macro_use] use...`."##,
14943        default_severity: Severity::Allow,
14944        warn_since: None,
14945        deny_since: None,
14946    },
14947    Lint {
14948        label: "clippy::main_recursion",
14949        description: r##"Checks for recursion using the entrypoint."##,
14950        default_severity: Severity::Allow,
14951        warn_since: None,
14952        deny_since: None,
14953    },
14954    Lint {
14955        label: "clippy::manual_assert",
14956        description: r##"Detects `if`-then-`panic!` that can be replaced with `assert!`."##,
14957        default_severity: Severity::Allow,
14958        warn_since: None,
14959        deny_since: None,
14960    },
14961    Lint {
14962        label: "clippy::manual_async_fn",
14963        description: r##"It checks for manual implementations of `async` functions."##,
14964        default_severity: Severity::Allow,
14965        warn_since: None,
14966        deny_since: None,
14967    },
14968    Lint {
14969        label: "clippy::manual_bits",
14970        description: r##"Checks for usage of `size_of::<T>() * 8` when
14971`T::BITS` is available."##,
14972        default_severity: Severity::Allow,
14973        warn_since: None,
14974        deny_since: None,
14975    },
14976    Lint {
14977        label: "clippy::manual_c_str_literals",
14978        description: r##"Checks for the manual creation of C strings (a string with a `NUL` byte at the end), either
14979through one of the `CStr` constructor functions, or more plainly by calling `.as_ptr()`
14980on a (byte) string literal with a hardcoded `\\0` byte at the end."##,
14981        default_severity: Severity::Allow,
14982        warn_since: None,
14983        deny_since: None,
14984    },
14985    Lint {
14986        label: "clippy::manual_clamp",
14987        description: r##"Identifies good opportunities for a clamp function from std or core, and suggests using it."##,
14988        default_severity: Severity::Allow,
14989        warn_since: None,
14990        deny_since: None,
14991    },
14992    Lint {
14993        label: "clippy::manual_div_ceil",
14994        description: r##"Checks for an expression like `(x + (y - 1)) / y` which is a common manual reimplementation
14995of `x.div_ceil(y)`."##,
14996        default_severity: Severity::Allow,
14997        warn_since: None,
14998        deny_since: None,
14999    },
15000    Lint {
15001        label: "clippy::manual_filter",
15002        description: r##"Checks for usage of `match` which could be implemented using `filter`"##,
15003        default_severity: Severity::Allow,
15004        warn_since: None,
15005        deny_since: None,
15006    },
15007    Lint {
15008        label: "clippy::manual_filter_map",
15009        description: r##"Checks for usage of `_.filter(_).map(_)` that can be written more simply
15010as `filter_map(_)`."##,
15011        default_severity: Severity::Allow,
15012        warn_since: None,
15013        deny_since: None,
15014    },
15015    Lint {
15016        label: "clippy::manual_find",
15017        description: r##"Checks for manual implementations of Iterator::find"##,
15018        default_severity: Severity::Allow,
15019        warn_since: None,
15020        deny_since: None,
15021    },
15022    Lint {
15023        label: "clippy::manual_find_map",
15024        description: r##"Checks for usage of `_.find(_).map(_)` that can be written more simply
15025as `find_map(_)`."##,
15026        default_severity: Severity::Allow,
15027        warn_since: None,
15028        deny_since: None,
15029    },
15030    Lint {
15031        label: "clippy::manual_flatten",
15032        description: r##"Checks for unnecessary `if let` usage in a for loop
15033where only the `Some` or `Ok` variant of the iterator element is used."##,
15034        default_severity: Severity::Allow,
15035        warn_since: None,
15036        deny_since: None,
15037    },
15038    Lint {
15039        label: "clippy::manual_hash_one",
15040        description: r##"Checks for cases where [`BuildHasher::hash_one`] can be used.
15041
15042[`BuildHasher::hash_one`]: https://doc.rust-lang.org/std/hash/trait.BuildHasher.html#method.hash_one"##,
15043        default_severity: Severity::Allow,
15044        warn_since: None,
15045        deny_since: None,
15046    },
15047    Lint {
15048        label: "clippy::manual_inspect",
15049        description: r##"Checks for uses of `map` which return the original item."##,
15050        default_severity: Severity::Allow,
15051        warn_since: None,
15052        deny_since: None,
15053    },
15054    Lint {
15055        label: "clippy::manual_instant_elapsed",
15056        description: r##"Lints subtraction between `Instant::now()` and another `Instant`."##,
15057        default_severity: Severity::Allow,
15058        warn_since: None,
15059        deny_since: None,
15060    },
15061    Lint {
15062        label: "clippy::manual_is_ascii_check",
15063        description: r##"Suggests to use dedicated built-in methods,
15064`is_ascii_(lowercase|uppercase|digit|hexdigit)` for checking on corresponding
15065ascii range"##,
15066        default_severity: Severity::Allow,
15067        warn_since: None,
15068        deny_since: None,
15069    },
15070    Lint {
15071        label: "clippy::manual_is_finite",
15072        description: r##"Checks for manual `is_finite` reimplementations
15073(i.e., `x != <float>::INFINITY && x != <float>::NEG_INFINITY`)."##,
15074        default_severity: Severity::Allow,
15075        warn_since: None,
15076        deny_since: None,
15077    },
15078    Lint {
15079        label: "clippy::manual_is_infinite",
15080        description: r##"Checks for manual `is_infinite` reimplementations
15081(i.e., `x == <float>::INFINITY || x == <float>::NEG_INFINITY`)."##,
15082        default_severity: Severity::Allow,
15083        warn_since: None,
15084        deny_since: None,
15085    },
15086    Lint {
15087        label: "clippy::manual_is_power_of_two",
15088        description: r##"Checks for expressions like `x.count_ones() == 1` or `x & (x - 1) == 0`, with x and unsigned integer, which are manual
15089reimplementations of `x.is_power_of_two()`."##,
15090        default_severity: Severity::Allow,
15091        warn_since: None,
15092        deny_since: None,
15093    },
15094    Lint {
15095        label: "clippy::manual_is_variant_and",
15096        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."##,
15097        default_severity: Severity::Allow,
15098        warn_since: None,
15099        deny_since: None,
15100    },
15101    Lint {
15102        label: "clippy::manual_let_else",
15103        description: r##"Warn of cases where `let...else` could be used"##,
15104        default_severity: Severity::Allow,
15105        warn_since: None,
15106        deny_since: None,
15107    },
15108    Lint {
15109        label: "clippy::manual_main_separator_str",
15110        description: r##"Checks for references on `std::path::MAIN_SEPARATOR.to_string()` used
15111to build a `&str`."##,
15112        default_severity: Severity::Allow,
15113        warn_since: None,
15114        deny_since: None,
15115    },
15116    Lint {
15117        label: "clippy::manual_map",
15118        description: r##"Checks for usage of `match` which could be implemented using `map`"##,
15119        default_severity: Severity::Allow,
15120        warn_since: None,
15121        deny_since: None,
15122    },
15123    Lint {
15124        label: "clippy::manual_memcpy",
15125        description: r##"Checks for for-loops that manually copy items between
15126slices that could be optimized by having a memcpy."##,
15127        default_severity: Severity::Allow,
15128        warn_since: None,
15129        deny_since: None,
15130    },
15131    Lint {
15132        label: "clippy::manual_next_back",
15133        description: r##"Checks for `.rev().next()` on a `DoubleEndedIterator`"##,
15134        default_severity: Severity::Allow,
15135        warn_since: None,
15136        deny_since: None,
15137    },
15138    Lint {
15139        label: "clippy::manual_non_exhaustive",
15140        description: r##"Checks for manual implementations of the non-exhaustive pattern."##,
15141        default_severity: Severity::Allow,
15142        warn_since: None,
15143        deny_since: None,
15144    },
15145    Lint {
15146        label: "clippy::manual_ok_or",
15147        description: r##"Finds patterns that reimplement `Option::ok_or`."##,
15148        default_severity: Severity::Allow,
15149        warn_since: None,
15150        deny_since: None,
15151    },
15152    Lint {
15153        label: "clippy::manual_pattern_char_comparison",
15154        description: r##"Checks for manual `char` comparison in string patterns"##,
15155        default_severity: Severity::Allow,
15156        warn_since: None,
15157        deny_since: None,
15158    },
15159    Lint {
15160        label: "clippy::manual_range_contains",
15161        description: r##"Checks for expressions like `x >= 3 && x < 8` that could
15162be more readably expressed as `(3..8).contains(x)`."##,
15163        default_severity: Severity::Allow,
15164        warn_since: None,
15165        deny_since: None,
15166    },
15167    Lint {
15168        label: "clippy::manual_range_patterns",
15169        description: r##"Looks for combined OR patterns that are all contained in a specific range,
15170e.g. `6 | 4 | 5 | 9 | 7 | 8` can be rewritten as `4..=9`."##,
15171        default_severity: Severity::Allow,
15172        warn_since: None,
15173        deny_since: None,
15174    },
15175    Lint {
15176        label: "clippy::manual_rem_euclid",
15177        description: r##"Checks for an expression like `((x % 4) + 4) % 4` which is a common manual reimplementation
15178of `x.rem_euclid(4)`."##,
15179        default_severity: Severity::Allow,
15180        warn_since: None,
15181        deny_since: None,
15182    },
15183    Lint {
15184        label: "clippy::manual_retain",
15185        description: r##"Checks for code to be replaced by `.retain()`."##,
15186        default_severity: Severity::Allow,
15187        warn_since: None,
15188        deny_since: None,
15189    },
15190    Lint {
15191        label: "clippy::manual_rotate",
15192        description: r##"It detects manual bit rotations that could be rewritten using standard
15193functions `rotate_left` or `rotate_right`."##,
15194        default_severity: Severity::Allow,
15195        warn_since: None,
15196        deny_since: None,
15197    },
15198    Lint {
15199        label: "clippy::manual_saturating_arithmetic",
15200        description: r##"Checks for `.checked_add/sub(x).unwrap_or(MAX/MIN)`."##,
15201        default_severity: Severity::Allow,
15202        warn_since: None,
15203        deny_since: None,
15204    },
15205    Lint {
15206        label: "clippy::manual_slice_size_calculation",
15207        description: r##"When `a` is `&[T]`, detect `a.len() * size_of::<T>()` and suggest `size_of_val(a)`
15208instead."##,
15209        default_severity: Severity::Allow,
15210        warn_since: None,
15211        deny_since: None,
15212    },
15213    Lint {
15214        label: "clippy::manual_split_once",
15215        description: r##"Checks for usage of `str::splitn(2, _)`"##,
15216        default_severity: Severity::Allow,
15217        warn_since: None,
15218        deny_since: None,
15219    },
15220    Lint {
15221        label: "clippy::manual_str_repeat",
15222        description: r##"Checks for manual implementations of `str::repeat`"##,
15223        default_severity: Severity::Allow,
15224        warn_since: None,
15225        deny_since: None,
15226    },
15227    Lint {
15228        label: "clippy::manual_string_new",
15229        description: r##"Checks for usage of `` to create a `String`, such as `.to_string()`, `.to_owned()`,
15230`String::from()` and others."##,
15231        default_severity: Severity::Allow,
15232        warn_since: None,
15233        deny_since: None,
15234    },
15235    Lint {
15236        label: "clippy::manual_strip",
15237        description: r##"Suggests using `strip_{prefix,suffix}` over `str::{starts,ends}_with` and slicing using
15238the pattern's length."##,
15239        default_severity: Severity::Allow,
15240        warn_since: None,
15241        deny_since: None,
15242    },
15243    Lint {
15244        label: "clippy::manual_swap",
15245        description: r##"Checks for manual swapping.
15246
15247Note that the lint will not be emitted in const blocks, as the suggestion would not be applicable."##,
15248        default_severity: Severity::Allow,
15249        warn_since: None,
15250        deny_since: None,
15251    },
15252    Lint {
15253        label: "clippy::manual_try_fold",
15254        description: r##"Checks for usage of `Iterator::fold` with a type that implements `Try`."##,
15255        default_severity: Severity::Allow,
15256        warn_since: None,
15257        deny_since: None,
15258    },
15259    Lint {
15260        label: "clippy::manual_unwrap_or",
15261        description: r##"Finds patterns that reimplement `Option::unwrap_or` or `Result::unwrap_or`."##,
15262        default_severity: Severity::Allow,
15263        warn_since: None,
15264        deny_since: None,
15265    },
15266    Lint {
15267        label: "clippy::manual_unwrap_or_default",
15268        description: r##"Checks if a `match` or `if let` expression can be simplified using
15269`.unwrap_or_default()`."##,
15270        default_severity: Severity::Allow,
15271        warn_since: None,
15272        deny_since: None,
15273    },
15274    Lint {
15275        label: "clippy::manual_while_let_some",
15276        description: r##"Looks for loops that check for emptiness of a `Vec` in the condition and pop an element
15277in the body as a separate operation."##,
15278        default_severity: Severity::Allow,
15279        warn_since: None,
15280        deny_since: None,
15281    },
15282    Lint {
15283        label: "clippy::many_single_char_names",
15284        description: r##"Checks for too many variables whose name consists of a
15285single character."##,
15286        default_severity: Severity::Allow,
15287        warn_since: None,
15288        deny_since: None,
15289    },
15290    Lint {
15291        label: "clippy::map_clone",
15292        description: r##"Checks for usage of `map(|x| x.clone())` or
15293dereferencing closures for `Copy` types, on `Iterator` or `Option`,
15294and suggests `cloned()` or `copied()` instead"##,
15295        default_severity: Severity::Allow,
15296        warn_since: None,
15297        deny_since: None,
15298    },
15299    Lint {
15300        label: "clippy::map_collect_result_unit",
15301        description: r##"Checks for usage of `_.map(_).collect::<Result<(), _>()`."##,
15302        default_severity: Severity::Allow,
15303        warn_since: None,
15304        deny_since: None,
15305    },
15306    Lint {
15307        label: "clippy::map_entry",
15308        description: r##"Checks for usage of `contains_key` + `insert` on `HashMap`
15309or `BTreeMap`."##,
15310        default_severity: Severity::Allow,
15311        warn_since: None,
15312        deny_since: None,
15313    },
15314    Lint {
15315        label: "clippy::map_err_ignore",
15316        description: r##"Checks for instances of `map_err(|_| Some::Enum)`"##,
15317        default_severity: Severity::Allow,
15318        warn_since: None,
15319        deny_since: None,
15320    },
15321    Lint {
15322        label: "clippy::map_flatten",
15323        description: r##"Checks for usage of `_.map(_).flatten(_)` on `Iterator` and `Option`"##,
15324        default_severity: Severity::Allow,
15325        warn_since: None,
15326        deny_since: None,
15327    },
15328    Lint {
15329        label: "clippy::map_identity",
15330        description: r##"Checks for instances of `map(f)` where `f` is the identity function."##,
15331        default_severity: Severity::Allow,
15332        warn_since: None,
15333        deny_since: None,
15334    },
15335    Lint {
15336        label: "clippy::map_unwrap_or",
15337        description: r##"Checks for usage of `option.map(_).unwrap_or(_)` or `option.map(_).unwrap_or_else(_)` or
15338`result.map(_).unwrap_or_else(_)`."##,
15339        default_severity: Severity::Allow,
15340        warn_since: None,
15341        deny_since: None,
15342    },
15343    Lint {
15344        label: "clippy::match_as_ref",
15345        description: r##"Checks for match which is used to add a reference to an
15346`Option` value."##,
15347        default_severity: Severity::Allow,
15348        warn_since: None,
15349        deny_since: None,
15350    },
15351    Lint {
15352        label: "clippy::match_bool",
15353        description: r##"Checks for matches where match expression is a `bool`. It
15354suggests to replace the expression with an `if...else` block."##,
15355        default_severity: Severity::Allow,
15356        warn_since: None,
15357        deny_since: None,
15358    },
15359    Lint {
15360        label: "clippy::match_like_matches_macro",
15361        description: r##"Checks for `match`  or `if let` expressions producing a
15362`bool` that could be written using `matches!`"##,
15363        default_severity: Severity::Allow,
15364        warn_since: None,
15365        deny_since: None,
15366    },
15367    Lint {
15368        label: "clippy::match_on_vec_items",
15369        description: r##"Checks for `match vec[idx]` or `match vec[n..m]`."##,
15370        default_severity: Severity::Allow,
15371        warn_since: None,
15372        deny_since: None,
15373    },
15374    Lint {
15375        label: "clippy::match_overlapping_arm",
15376        description: r##"Checks for overlapping match arms."##,
15377        default_severity: Severity::Allow,
15378        warn_since: None,
15379        deny_since: None,
15380    },
15381    Lint {
15382        label: "clippy::match_ref_pats",
15383        description: r##"Checks for matches where all arms match a reference,
15384suggesting to remove the reference and deref the matched expression
15385instead. It also checks for `if let &foo = bar` blocks."##,
15386        default_severity: Severity::Allow,
15387        warn_since: None,
15388        deny_since: None,
15389    },
15390    Lint {
15391        label: "clippy::match_result_ok",
15392        description: r##"Checks for unnecessary `ok()` in `while let`."##,
15393        default_severity: Severity::Allow,
15394        warn_since: None,
15395        deny_since: None,
15396    },
15397    Lint {
15398        label: "clippy::match_same_arms",
15399        description: r##"Checks for `match` with identical arm bodies.
15400
15401Note: Does not lint on wildcards if the `non_exhaustive_omitted_patterns_lint` feature is
15402enabled and disallowed."##,
15403        default_severity: Severity::Allow,
15404        warn_since: None,
15405        deny_since: None,
15406    },
15407    Lint {
15408        label: "clippy::match_single_binding",
15409        description: r##"Checks for useless match that binds to only one value."##,
15410        default_severity: Severity::Allow,
15411        warn_since: None,
15412        deny_since: None,
15413    },
15414    Lint {
15415        label: "clippy::match_str_case_mismatch",
15416        description: r##"Checks for `match` expressions modifying the case of a string with non-compliant arms"##,
15417        default_severity: Severity::Allow,
15418        warn_since: None,
15419        deny_since: None,
15420    },
15421    Lint {
15422        label: "clippy::match_wild_err_arm",
15423        description: r##"Checks for arm which matches all errors with `Err(_)`
15424and take drastic actions like `panic!`."##,
15425        default_severity: Severity::Allow,
15426        warn_since: None,
15427        deny_since: None,
15428    },
15429    Lint {
15430        label: "clippy::match_wildcard_for_single_variants",
15431        description: r##"Checks for wildcard enum matches for a single variant."##,
15432        default_severity: Severity::Allow,
15433        warn_since: None,
15434        deny_since: None,
15435    },
15436    Lint {
15437        label: "clippy::maybe_infinite_iter",
15438        description: r##"Checks for iteration that may be infinite."##,
15439        default_severity: Severity::Allow,
15440        warn_since: None,
15441        deny_since: None,
15442    },
15443    Lint {
15444        label: "clippy::mem_forget",
15445        description: r##"Checks for usage of `std::mem::forget(t)` where `t` is
15446`Drop` or has a field that implements `Drop`."##,
15447        default_severity: Severity::Allow,
15448        warn_since: None,
15449        deny_since: None,
15450    },
15451    Lint {
15452        label: "clippy::mem_replace_option_with_none",
15453        description: r##"Checks for `mem::replace()` on an `Option` with
15454`None`."##,
15455        default_severity: Severity::Allow,
15456        warn_since: None,
15457        deny_since: None,
15458    },
15459    Lint {
15460        label: "clippy::mem_replace_with_default",
15461        description: r##"Checks for `std::mem::replace` on a value of type
15462`T` with `T::default()`."##,
15463        default_severity: Severity::Allow,
15464        warn_since: None,
15465        deny_since: None,
15466    },
15467    Lint {
15468        label: "clippy::mem_replace_with_uninit",
15469        description: r##"Checks for `mem::replace(&mut _, mem::uninitialized())`
15470and `mem::replace(&mut _, mem::zeroed())`."##,
15471        default_severity: Severity::Allow,
15472        warn_since: None,
15473        deny_since: None,
15474    },
15475    Lint {
15476        label: "clippy::min_ident_chars",
15477        description: r##"Checks for identifiers which consist of a single character (or fewer than the configured threshold).
15478
15479Note: This lint can be very noisy when enabled; it may be desirable to only enable it
15480temporarily."##,
15481        default_severity: Severity::Allow,
15482        warn_since: None,
15483        deny_since: None,
15484    },
15485    Lint {
15486        label: "clippy::min_max",
15487        description: r##"Checks for expressions where `std::cmp::min` and `max` are
15488used to clamp values, but switched so that the result is constant."##,
15489        default_severity: Severity::Allow,
15490        warn_since: None,
15491        deny_since: None,
15492    },
15493    Lint {
15494        label: "clippy::misaligned_transmute",
15495        description: r##"Nothing. This lint has been deprecated"##,
15496        default_severity: Severity::Allow,
15497        warn_since: None,
15498        deny_since: None,
15499    },
15500    Lint {
15501        label: "clippy::mismatching_type_param_order",
15502        description: r##"Checks for type parameters which are positioned inconsistently between
15503a type definition and impl block. Specifically, a parameter in an impl
15504block which has the same name as a parameter in the type def, but is in
15505a different place."##,
15506        default_severity: Severity::Allow,
15507        warn_since: None,
15508        deny_since: None,
15509    },
15510    Lint {
15511        label: "clippy::misnamed_getters",
15512        description: r##"Checks for getter methods that return a field that doesn't correspond
15513to the name of the method, when there is a field's whose name matches that of the method."##,
15514        default_severity: Severity::Allow,
15515        warn_since: None,
15516        deny_since: None,
15517    },
15518    Lint {
15519        label: "clippy::misrefactored_assign_op",
15520        description: r##"Checks for `a op= a op b` or `a op= b op a` patterns."##,
15521        default_severity: Severity::Allow,
15522        warn_since: None,
15523        deny_since: None,
15524    },
15525    Lint {
15526        label: "clippy::missing_assert_message",
15527        description: r##"Checks assertions without a custom panic message."##,
15528        default_severity: Severity::Allow,
15529        warn_since: None,
15530        deny_since: None,
15531    },
15532    Lint {
15533        label: "clippy::missing_asserts_for_indexing",
15534        description: r##"Checks for repeated slice indexing without asserting beforehand that the length
15535is greater than the largest index used to index into the slice."##,
15536        default_severity: Severity::Allow,
15537        warn_since: None,
15538        deny_since: None,
15539    },
15540    Lint {
15541        label: "clippy::missing_const_for_fn",
15542        description: r##"Suggests the use of `const` in functions and methods where possible."##,
15543        default_severity: Severity::Allow,
15544        warn_since: None,
15545        deny_since: None,
15546    },
15547    Lint {
15548        label: "clippy::missing_const_for_thread_local",
15549        description: r##"Suggests to use `const` in `thread_local!` macro if possible."##,
15550        default_severity: Severity::Allow,
15551        warn_since: None,
15552        deny_since: None,
15553    },
15554    Lint {
15555        label: "clippy::missing_docs_in_private_items",
15556        description: r##"Warns if there is missing documentation for any private documentable item."##,
15557        default_severity: Severity::Allow,
15558        warn_since: None,
15559        deny_since: None,
15560    },
15561    Lint {
15562        label: "clippy::missing_enforced_import_renames",
15563        description: r##"Checks for imports that do not rename the item as specified
15564in the `enforced-import-renames` config option.
15565
15566Note: Even though this lint is warn-by-default, it will only trigger if
15567import renames are defined in the `clippy.toml` file."##,
15568        default_severity: Severity::Allow,
15569        warn_since: None,
15570        deny_since: None,
15571    },
15572    Lint {
15573        label: "clippy::missing_errors_doc",
15574        description: r##"Checks the doc comments of publicly visible functions that
15575return a `Result` type and warns if there is no `# Errors` section."##,
15576        default_severity: Severity::Allow,
15577        warn_since: None,
15578        deny_since: None,
15579    },
15580    Lint {
15581        label: "clippy::missing_fields_in_debug",
15582        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."##,
15583        default_severity: Severity::Allow,
15584        warn_since: None,
15585        deny_since: None,
15586    },
15587    Lint {
15588        label: "clippy::missing_inline_in_public_items",
15589        description: r##"It lints if an exported function, method, trait method with default impl,
15590or trait method impl is not `#[inline]`."##,
15591        default_severity: Severity::Allow,
15592        warn_since: None,
15593        deny_since: None,
15594    },
15595    Lint {
15596        label: "clippy::missing_panics_doc",
15597        description: r##"Checks the doc comments of publicly visible functions that
15598may panic and warns if there is no `# Panics` section."##,
15599        default_severity: Severity::Allow,
15600        warn_since: None,
15601        deny_since: None,
15602    },
15603    Lint {
15604        label: "clippy::missing_safety_doc",
15605        description: r##"Checks for the doc comments of publicly visible
15606unsafe functions and warns if there is no `# Safety` section."##,
15607        default_severity: Severity::Allow,
15608        warn_since: None,
15609        deny_since: None,
15610    },
15611    Lint {
15612        label: "clippy::missing_spin_loop",
15613        description: r##"Checks for empty spin loops"##,
15614        default_severity: Severity::Allow,
15615        warn_since: None,
15616        deny_since: None,
15617    },
15618    Lint {
15619        label: "clippy::missing_trait_methods",
15620        description: r##"Checks if a provided method is used implicitly by a trait
15621implementation."##,
15622        default_severity: Severity::Allow,
15623        warn_since: None,
15624        deny_since: None,
15625    },
15626    Lint {
15627        label: "clippy::missing_transmute_annotations",
15628        description: r##"Checks if transmute calls have all generics specified."##,
15629        default_severity: Severity::Allow,
15630        warn_since: None,
15631        deny_since: None,
15632    },
15633    Lint {
15634        label: "clippy::mistyped_literal_suffixes",
15635        description: r##"Warns for mistyped suffix in literals"##,
15636        default_severity: Severity::Allow,
15637        warn_since: None,
15638        deny_since: None,
15639    },
15640    Lint {
15641        label: "clippy::mixed_attributes_style",
15642        description: r##"Checks for items that have the same kind of attributes with mixed styles (inner/outer)."##,
15643        default_severity: Severity::Allow,
15644        warn_since: None,
15645        deny_since: None,
15646    },
15647    Lint {
15648        label: "clippy::mixed_case_hex_literals",
15649        description: r##"Warns on hexadecimal literals with mixed-case letter
15650digits."##,
15651        default_severity: Severity::Allow,
15652        warn_since: None,
15653        deny_since: None,
15654    },
15655    Lint {
15656        label: "clippy::mixed_read_write_in_expression",
15657        description: r##"Checks for a read and a write to the same variable where
15658whether the read occurs before or after the write depends on the evaluation
15659order of sub-expressions."##,
15660        default_severity: Severity::Allow,
15661        warn_since: None,
15662        deny_since: None,
15663    },
15664    Lint {
15665        label: "clippy::mod_module_files",
15666        description: r##"Checks that module layout uses only self named module files; bans `mod.rs` files."##,
15667        default_severity: Severity::Allow,
15668        warn_since: None,
15669        deny_since: None,
15670    },
15671    Lint {
15672        label: "clippy::module_inception",
15673        description: r##"Checks for modules that have the same name as their
15674parent module"##,
15675        default_severity: Severity::Allow,
15676        warn_since: None,
15677        deny_since: None,
15678    },
15679    Lint {
15680        label: "clippy::module_name_repetitions",
15681        description: r##"Detects type names that are prefixed or suffixed by the
15682containing module's name."##,
15683        default_severity: Severity::Allow,
15684        warn_since: None,
15685        deny_since: None,
15686    },
15687    Lint {
15688        label: "clippy::modulo_arithmetic",
15689        description: r##"Checks for modulo arithmetic."##,
15690        default_severity: Severity::Allow,
15691        warn_since: None,
15692        deny_since: None,
15693    },
15694    Lint {
15695        label: "clippy::modulo_one",
15696        description: r##"Checks for getting the remainder of integer division by one or minus
15697one."##,
15698        default_severity: Severity::Allow,
15699        warn_since: None,
15700        deny_since: None,
15701    },
15702    Lint {
15703        label: "clippy::multi_assignments",
15704        description: r##"Checks for nested assignments."##,
15705        default_severity: Severity::Allow,
15706        warn_since: None,
15707        deny_since: None,
15708    },
15709    Lint {
15710        label: "clippy::multiple_bound_locations",
15711        description: r##"Check if a generic is defined both in the bound predicate and in the `where` clause."##,
15712        default_severity: Severity::Allow,
15713        warn_since: None,
15714        deny_since: None,
15715    },
15716    Lint {
15717        label: "clippy::multiple_crate_versions",
15718        description: r##"Checks to see if multiple versions of a crate are being
15719used."##,
15720        default_severity: Severity::Allow,
15721        warn_since: None,
15722        deny_since: None,
15723    },
15724    Lint {
15725        label: "clippy::multiple_inherent_impl",
15726        description: r##"Checks for multiple inherent implementations of a struct"##,
15727        default_severity: Severity::Allow,
15728        warn_since: None,
15729        deny_since: None,
15730    },
15731    Lint {
15732        label: "clippy::multiple_unsafe_ops_per_block",
15733        description: r##"Checks for `unsafe` blocks that contain more than one unsafe operation."##,
15734        default_severity: Severity::Allow,
15735        warn_since: None,
15736        deny_since: None,
15737    },
15738    Lint {
15739        label: "clippy::must_use_candidate",
15740        description: r##"Checks for public functions that have no
15741`#[must_use]` attribute, but return something not already marked
15742must-use, have no mutable arg and mutate no statics."##,
15743        default_severity: Severity::Allow,
15744        warn_since: None,
15745        deny_since: None,
15746    },
15747    Lint {
15748        label: "clippy::must_use_unit",
15749        description: r##"Checks for a `#[must_use]` attribute on
15750unit-returning functions and methods."##,
15751        default_severity: Severity::Allow,
15752        warn_since: None,
15753        deny_since: None,
15754    },
15755    Lint {
15756        label: "clippy::mut_from_ref",
15757        description: r##"This lint checks for functions that take immutable references and return
15758mutable ones. This will not trigger if no unsafe code exists as there
15759are multiple safe functions which will do this transformation
15760
15761To be on the conservative side, if there's at least one mutable
15762reference with the output lifetime, this lint will not trigger."##,
15763        default_severity: Severity::Allow,
15764        warn_since: None,
15765        deny_since: None,
15766    },
15767    Lint {
15768        label: "clippy::mut_mut",
15769        description: r##"Checks for instances of `mut mut` references."##,
15770        default_severity: Severity::Allow,
15771        warn_since: None,
15772        deny_since: None,
15773    },
15774    Lint {
15775        label: "clippy::mut_mutex_lock",
15776        description: r##"Checks for `&mut Mutex::lock` calls"##,
15777        default_severity: Severity::Allow,
15778        warn_since: None,
15779        deny_since: None,
15780    },
15781    Lint {
15782        label: "clippy::mut_range_bound",
15783        description: r##"Checks for loops with a range bound that is a mutable variable."##,
15784        default_severity: Severity::Allow,
15785        warn_since: None,
15786        deny_since: None,
15787    },
15788    Lint {
15789        label: "clippy::mutable_key_type",
15790        description: r##"Checks for sets/maps with mutable key types."##,
15791        default_severity: Severity::Allow,
15792        warn_since: None,
15793        deny_since: None,
15794    },
15795    Lint {
15796        label: "clippy::mutex_atomic",
15797        description: r##"Checks for usage of `Mutex<X>` where an atomic will do."##,
15798        default_severity: Severity::Allow,
15799        warn_since: None,
15800        deny_since: None,
15801    },
15802    Lint {
15803        label: "clippy::mutex_integer",
15804        description: r##"Checks for usage of `Mutex<X>` where `X` is an integral
15805type."##,
15806        default_severity: Severity::Allow,
15807        warn_since: None,
15808        deny_since: None,
15809    },
15810    Lint {
15811        label: "clippy::naive_bytecount",
15812        description: r##"Checks for naive byte counts"##,
15813        default_severity: Severity::Allow,
15814        warn_since: None,
15815        deny_since: None,
15816    },
15817    Lint {
15818        label: "clippy::needless_arbitrary_self_type",
15819        description: r##"The lint checks for `self` in fn parameters that
15820specify the `Self`-type explicitly"##,
15821        default_severity: Severity::Allow,
15822        warn_since: None,
15823        deny_since: None,
15824    },
15825    Lint {
15826        label: "clippy::needless_bitwise_bool",
15827        description: r##"Checks for usage of bitwise and/or operators between booleans, where performance may be improved by using
15828a lazy and."##,
15829        default_severity: Severity::Allow,
15830        warn_since: None,
15831        deny_since: None,
15832    },
15833    Lint {
15834        label: "clippy::needless_bool",
15835        description: r##"Checks for expressions of the form `if c { true } else {
15836false }` (or vice versa) and suggests using the condition directly."##,
15837        default_severity: Severity::Allow,
15838        warn_since: None,
15839        deny_since: None,
15840    },
15841    Lint {
15842        label: "clippy::needless_bool_assign",
15843        description: r##"Checks for expressions of the form `if c { x = true } else { x = false }`
15844(or vice versa) and suggest assigning the variable directly from the
15845condition."##,
15846        default_severity: Severity::Allow,
15847        warn_since: None,
15848        deny_since: None,
15849    },
15850    Lint {
15851        label: "clippy::needless_borrow",
15852        description: r##"Checks for address of operations (`&`) that are going to
15853be dereferenced immediately by the compiler."##,
15854        default_severity: Severity::Allow,
15855        warn_since: None,
15856        deny_since: None,
15857    },
15858    Lint {
15859        label: "clippy::needless_borrowed_reference",
15860        description: r##"Checks for bindings that needlessly destructure a reference and borrow the inner
15861value with `&ref`."##,
15862        default_severity: Severity::Allow,
15863        warn_since: None,
15864        deny_since: None,
15865    },
15866    Lint {
15867        label: "clippy::needless_borrows_for_generic_args",
15868        description: r##"Checks for borrow operations (`&`) that are used as a generic argument to a
15869function when the borrowed value could be used."##,
15870        default_severity: Severity::Allow,
15871        warn_since: None,
15872        deny_since: None,
15873    },
15874    Lint {
15875        label: "clippy::needless_character_iteration",
15876        description: r##"Checks if an iterator is used to check if a string is ascii."##,
15877        default_severity: Severity::Allow,
15878        warn_since: None,
15879        deny_since: None,
15880    },
15881    Lint {
15882        label: "clippy::needless_collect",
15883        description: r##"Checks for functions collecting an iterator when collect
15884is not needed."##,
15885        default_severity: Severity::Allow,
15886        warn_since: None,
15887        deny_since: None,
15888    },
15889    Lint {
15890        label: "clippy::needless_continue",
15891        description: r##"The lint checks for `if`-statements appearing in loops
15892that contain a `continue` statement in either their main blocks or their
15893`else`-blocks, when omitting the `else`-block possibly with some
15894rearrangement of code can make the code easier to understand."##,
15895        default_severity: Severity::Allow,
15896        warn_since: None,
15897        deny_since: None,
15898    },
15899    Lint {
15900        label: "clippy::needless_doctest_main",
15901        description: r##"Checks for `fn main() { .. }` in doctests"##,
15902        default_severity: Severity::Allow,
15903        warn_since: None,
15904        deny_since: None,
15905    },
15906    Lint {
15907        label: "clippy::needless_else",
15908        description: r##"Checks for empty `else` branches."##,
15909        default_severity: Severity::Allow,
15910        warn_since: None,
15911        deny_since: None,
15912    },
15913    Lint {
15914        label: "clippy::needless_for_each",
15915        description: r##"Checks for usage of `for_each` that would be more simply written as a
15916`for` loop."##,
15917        default_severity: Severity::Allow,
15918        warn_since: None,
15919        deny_since: None,
15920    },
15921    Lint {
15922        label: "clippy::needless_if",
15923        description: r##"Checks for empty `if` branches with no else branch."##,
15924        default_severity: Severity::Allow,
15925        warn_since: None,
15926        deny_since: None,
15927    },
15928    Lint {
15929        label: "clippy::needless_late_init",
15930        description: r##"Checks for late initializations that can be replaced by a `let` statement
15931with an initializer."##,
15932        default_severity: Severity::Allow,
15933        warn_since: None,
15934        deny_since: None,
15935    },
15936    Lint {
15937        label: "clippy::needless_lifetimes",
15938        description: r##"Checks for lifetime annotations which can be removed by
15939relying on lifetime elision."##,
15940        default_severity: Severity::Allow,
15941        warn_since: None,
15942        deny_since: None,
15943    },
15944    Lint {
15945        label: "clippy::needless_match",
15946        description: r##"Checks for unnecessary `match` or match-like `if let` returns for `Option` and `Result`
15947when function signatures are the same."##,
15948        default_severity: Severity::Allow,
15949        warn_since: None,
15950        deny_since: None,
15951    },
15952    Lint {
15953        label: "clippy::needless_maybe_sized",
15954        description: r##"Lints `?Sized` bounds applied to type parameters that cannot be unsized"##,
15955        default_severity: Severity::Allow,
15956        warn_since: None,
15957        deny_since: None,
15958    },
15959    Lint {
15960        label: "clippy::needless_option_as_deref",
15961        description: r##"Checks for no-op uses of `Option::{as_deref, as_deref_mut}`,
15962for example, `Option<&T>::as_deref()` returns the same type."##,
15963        default_severity: Severity::Allow,
15964        warn_since: None,
15965        deny_since: None,
15966    },
15967    Lint {
15968        label: "clippy::needless_option_take",
15969        description: r##"Checks for calling `take` function after `as_ref`."##,
15970        default_severity: Severity::Allow,
15971        warn_since: None,
15972        deny_since: None,
15973    },
15974    Lint {
15975        label: "clippy::needless_parens_on_range_literals",
15976        description: r##"The lint checks for parenthesis on literals in range statements that are
15977superfluous."##,
15978        default_severity: Severity::Allow,
15979        warn_since: None,
15980        deny_since: None,
15981    },
15982    Lint {
15983        label: "clippy::needless_pass_by_ref_mut",
15984        description: r##"Check if a `&mut` function argument is actually used mutably.
15985
15986Be careful if the function is publicly reexported as it would break compatibility with
15987users of this function, when the users pass this function as an argument."##,
15988        default_severity: Severity::Allow,
15989        warn_since: None,
15990        deny_since: None,
15991    },
15992    Lint {
15993        label: "clippy::needless_pass_by_value",
15994        description: r##"Checks for functions taking arguments by value, but not
15995consuming them in its
15996body."##,
15997        default_severity: Severity::Allow,
15998        warn_since: None,
15999        deny_since: None,
16000    },
16001    Lint {
16002        label: "clippy::needless_pub_self",
16003        description: r##"Checks for usage of `pub(self)` and `pub(in self)`."##,
16004        default_severity: Severity::Allow,
16005        warn_since: None,
16006        deny_since: None,
16007    },
16008    Lint {
16009        label: "clippy::needless_question_mark",
16010        description: r##"Suggests alternatives for useless applications of `?` in terminating expressions"##,
16011        default_severity: Severity::Allow,
16012        warn_since: None,
16013        deny_since: None,
16014    },
16015    Lint {
16016        label: "clippy::needless_range_loop",
16017        description: r##"Checks for looping over the range of `0..len` of some
16018collection just to get the values by index."##,
16019        default_severity: Severity::Allow,
16020        warn_since: None,
16021        deny_since: None,
16022    },
16023    Lint {
16024        label: "clippy::needless_raw_string_hashes",
16025        description: r##"Checks for raw string literals with an unnecessary amount of hashes around them."##,
16026        default_severity: Severity::Allow,
16027        warn_since: None,
16028        deny_since: None,
16029    },
16030    Lint {
16031        label: "clippy::needless_raw_strings",
16032        description: r##"Checks for raw string literals where a string literal can be used instead."##,
16033        default_severity: Severity::Allow,
16034        warn_since: None,
16035        deny_since: None,
16036    },
16037    Lint {
16038        label: "clippy::needless_return",
16039        description: r##"Checks for return statements at the end of a block."##,
16040        default_severity: Severity::Allow,
16041        warn_since: None,
16042        deny_since: None,
16043    },
16044    Lint {
16045        label: "clippy::needless_return_with_question_mark",
16046        description: r##"Checks for return statements on `Err` paired with the `?` operator."##,
16047        default_severity: Severity::Allow,
16048        warn_since: None,
16049        deny_since: None,
16050    },
16051    Lint {
16052        label: "clippy::needless_splitn",
16053        description: r##"Checks for usage of `str::splitn` (or `str::rsplitn`) where using `str::split` would be the same."##,
16054        default_severity: Severity::Allow,
16055        warn_since: None,
16056        deny_since: None,
16057    },
16058    Lint {
16059        label: "clippy::needless_update",
16060        description: r##"Checks for needlessly including a base struct on update
16061when all fields are changed anyway.
16062
16063This lint is not applied to structs marked with
16064[non_exhaustive](https://doc.rust-lang.org/reference/attributes/type_system.html)."##,
16065        default_severity: Severity::Allow,
16066        warn_since: None,
16067        deny_since: None,
16068    },
16069    Lint {
16070        label: "clippy::neg_cmp_op_on_partial_ord",
16071        description: r##"Checks for the usage of negated comparison operators on types which only implement
16072`PartialOrd` (e.g., `f64`)."##,
16073        default_severity: Severity::Allow,
16074        warn_since: None,
16075        deny_since: None,
16076    },
16077    Lint {
16078        label: "clippy::neg_multiply",
16079        description: r##"Checks for multiplication by -1 as a form of negation."##,
16080        default_severity: Severity::Allow,
16081        warn_since: None,
16082        deny_since: None,
16083    },
16084    Lint {
16085        label: "clippy::negative_feature_names",
16086        description: r##"Checks for negative feature names with prefix `no-` or `not-`"##,
16087        default_severity: Severity::Allow,
16088        warn_since: None,
16089        deny_since: None,
16090    },
16091    Lint {
16092        label: "clippy::never_loop",
16093        description: r##"Checks for loops that will always `break`, `return` or
16094`continue` an outer loop."##,
16095        default_severity: Severity::Allow,
16096        warn_since: None,
16097        deny_since: None,
16098    },
16099    Lint {
16100        label: "clippy::new_ret_no_self",
16101        description: r##"Checks for `new` not returning a type that contains `Self`."##,
16102        default_severity: Severity::Allow,
16103        warn_since: None,
16104        deny_since: None,
16105    },
16106    Lint {
16107        label: "clippy::new_without_default",
16108        description: r##"Checks for public types with a `pub fn new() -> Self` method and no
16109implementation of
16110[`Default`](https://doc.rust-lang.org/std/default/trait.Default.html)."##,
16111        default_severity: Severity::Allow,
16112        warn_since: None,
16113        deny_since: None,
16114    },
16115    Lint {
16116        label: "clippy::no_effect",
16117        description: r##"Checks for statements which have no effect."##,
16118        default_severity: Severity::Allow,
16119        warn_since: None,
16120        deny_since: None,
16121    },
16122    Lint {
16123        label: "clippy::no_effect_replace",
16124        description: r##"Checks for `replace` statements which have no effect."##,
16125        default_severity: Severity::Allow,
16126        warn_since: None,
16127        deny_since: None,
16128    },
16129    Lint {
16130        label: "clippy::no_effect_underscore_binding",
16131        description: r##"Checks for binding to underscore prefixed variable without side-effects."##,
16132        default_severity: Severity::Allow,
16133        warn_since: None,
16134        deny_since: None,
16135    },
16136    Lint {
16137        label: "clippy::no_mangle_with_rust_abi",
16138        description: r##"Checks for Rust ABI functions with the `#[no_mangle]` attribute."##,
16139        default_severity: Severity::Allow,
16140        warn_since: None,
16141        deny_since: None,
16142    },
16143    Lint {
16144        label: "clippy::non_ascii_literal",
16145        description: r##"Checks for non-ASCII characters in string and char literals."##,
16146        default_severity: Severity::Allow,
16147        warn_since: None,
16148        deny_since: None,
16149    },
16150    Lint {
16151        label: "clippy::non_canonical_clone_impl",
16152        description: r##"Checks for non-canonical implementations of `Clone` when `Copy` is already implemented."##,
16153        default_severity: Severity::Allow,
16154        warn_since: None,
16155        deny_since: None,
16156    },
16157    Lint {
16158        label: "clippy::non_canonical_partial_ord_impl",
16159        description: r##"Checks for non-canonical implementations of `PartialOrd` when `Ord` is already implemented."##,
16160        default_severity: Severity::Allow,
16161        warn_since: None,
16162        deny_since: None,
16163    },
16164    Lint {
16165        label: "clippy::non_minimal_cfg",
16166        description: r##"Checks for `any` and `all` combinators in `cfg` with only one condition."##,
16167        default_severity: Severity::Allow,
16168        warn_since: None,
16169        deny_since: None,
16170    },
16171    Lint {
16172        label: "clippy::non_octal_unix_permissions",
16173        description: r##"Checks for non-octal values used to set Unix file permissions."##,
16174        default_severity: Severity::Allow,
16175        warn_since: None,
16176        deny_since: None,
16177    },
16178    Lint {
16179        label: "clippy::non_send_fields_in_send_ty",
16180        description: r##"This lint warns about a `Send` implementation for a type that
16181contains fields that are not safe to be sent across threads.
16182It tries to detect fields that can cause a soundness issue
16183when sent to another thread (e.g., `Rc`) while allowing `!Send` fields
16184that are expected to exist in a `Send` type, such as raw pointers."##,
16185        default_severity: Severity::Allow,
16186        warn_since: None,
16187        deny_since: None,
16188    },
16189    Lint {
16190        label: "clippy::non_zero_suggestions",
16191        description: r##"Checks for conversions from `NonZero` types to regular integer types,
16192and suggests using `NonZero` types for the target as well."##,
16193        default_severity: Severity::Allow,
16194        warn_since: None,
16195        deny_since: None,
16196    },
16197    Lint {
16198        label: "clippy::nonminimal_bool",
16199        description: r##"Checks for boolean expressions that can be written more
16200concisely."##,
16201        default_severity: Severity::Allow,
16202        warn_since: None,
16203        deny_since: None,
16204    },
16205    Lint {
16206        label: "clippy::nonsensical_open_options",
16207        description: r##"Checks for duplicate open options as well as combinations
16208that make no sense."##,
16209        default_severity: Severity::Allow,
16210        warn_since: None,
16211        deny_since: None,
16212    },
16213    Lint {
16214        label: "clippy::nonstandard_macro_braces",
16215        description: r##"Checks that common macros are used with consistent bracing."##,
16216        default_severity: Severity::Allow,
16217        warn_since: None,
16218        deny_since: None,
16219    },
16220    Lint {
16221        label: "clippy::not_unsafe_ptr_arg_deref",
16222        description: r##"Checks for public functions that dereference raw pointer
16223arguments but are not marked `unsafe`."##,
16224        default_severity: Severity::Allow,
16225        warn_since: None,
16226        deny_since: None,
16227    },
16228    Lint {
16229        label: "clippy::obfuscated_if_else",
16230        description: r##"Checks for usage of `.then_some(..).unwrap_or(..)`"##,
16231        default_severity: Severity::Allow,
16232        warn_since: None,
16233        deny_since: None,
16234    },
16235    Lint {
16236        label: "clippy::octal_escapes",
16237        description: r##"Checks for `\\0` escapes in string and byte literals that look like octal
16238character escapes in C."##,
16239        default_severity: Severity::Allow,
16240        warn_since: None,
16241        deny_since: None,
16242    },
16243    Lint {
16244        label: "clippy::ok_expect",
16245        description: r##"Checks for usage of `ok().expect(..)`."##,
16246        default_severity: Severity::Allow,
16247        warn_since: None,
16248        deny_since: None,
16249    },
16250    Lint {
16251        label: "clippy::only_used_in_recursion",
16252        description: r##"Checks for arguments that are only used in recursion with no side-effects."##,
16253        default_severity: Severity::Allow,
16254        warn_since: None,
16255        deny_since: None,
16256    },
16257    Lint {
16258        label: "clippy::op_ref",
16259        description: r##"Checks for arguments to `==` which have their address
16260taken to satisfy a bound
16261and suggests to dereference the other argument instead"##,
16262        default_severity: Severity::Allow,
16263        warn_since: None,
16264        deny_since: None,
16265    },
16266    Lint {
16267        label: "clippy::option_as_ref_cloned",
16268        description: r##"Checks for usage of `.as_ref().cloned()` and `.as_mut().cloned()` on `Option`s"##,
16269        default_severity: Severity::Allow,
16270        warn_since: None,
16271        deny_since: None,
16272    },
16273    Lint {
16274        label: "clippy::option_as_ref_deref",
16275        description: r##"Checks for usage of `_.as_ref().map(Deref::deref)` or its aliases (such as String::as_str)."##,
16276        default_severity: Severity::Allow,
16277        warn_since: None,
16278        deny_since: None,
16279    },
16280    Lint {
16281        label: "clippy::option_env_unwrap",
16282        description: r##"Checks for usage of `option_env!(...).unwrap()` and
16283suggests usage of the `env!` macro."##,
16284        default_severity: Severity::Allow,
16285        warn_since: None,
16286        deny_since: None,
16287    },
16288    Lint {
16289        label: "clippy::option_filter_map",
16290        description: r##"Checks for iterators of `Option`s using `.filter(Option::is_some).map(Option::unwrap)` that may
16291be replaced with a `.flatten()` call."##,
16292        default_severity: Severity::Allow,
16293        warn_since: None,
16294        deny_since: None,
16295    },
16296    Lint {
16297        label: "clippy::option_if_let_else",
16298        description: r##"Lints usage of `if let Some(v) = ... { y } else { x }` and
16299`match .. { Some(v) => y, None/_ => x }` which are more
16300idiomatically done with `Option::map_or` (if the else bit is a pure
16301expression) or `Option::map_or_else` (if the else bit is an impure
16302expression)."##,
16303        default_severity: Severity::Allow,
16304        warn_since: None,
16305        deny_since: None,
16306    },
16307    Lint {
16308        label: "clippy::option_map_or_err_ok",
16309        description: r##"Checks for usage of `_.map_or(Err(_), Ok)`."##,
16310        default_severity: Severity::Allow,
16311        warn_since: None,
16312        deny_since: None,
16313    },
16314    Lint {
16315        label: "clippy::option_map_or_none",
16316        description: r##"Checks for usage of `_.map_or(None, _)`."##,
16317        default_severity: Severity::Allow,
16318        warn_since: None,
16319        deny_since: None,
16320    },
16321    Lint {
16322        label: "clippy::option_map_unit_fn",
16323        description: r##"Checks for usage of `option.map(f)` where f is a function
16324or closure that returns the unit type `()`."##,
16325        default_severity: Severity::Allow,
16326        warn_since: None,
16327        deny_since: None,
16328    },
16329    Lint {
16330        label: "clippy::option_option",
16331        description: r##"Checks for usage of `Option<Option<_>>` in function signatures and type
16332definitions"##,
16333        default_severity: Severity::Allow,
16334        warn_since: None,
16335        deny_since: None,
16336    },
16337    Lint {
16338        label: "clippy::or_fun_call",
16339        description: r##"Checks for calls to `.or(foo(..))`, `.unwrap_or(foo(..))`,
16340`.or_insert(foo(..))` etc., and suggests to use `.or_else(|| foo(..))`,
16341`.unwrap_or_else(|| foo(..))`, `.unwrap_or_default()` or `.or_default()`
16342etc. instead."##,
16343        default_severity: Severity::Allow,
16344        warn_since: None,
16345        deny_since: None,
16346    },
16347    Lint {
16348        label: "clippy::or_then_unwrap",
16349        description: r##"Checks for `.or(…).unwrap()` calls to Options and Results."##,
16350        default_severity: Severity::Allow,
16351        warn_since: None,
16352        deny_since: None,
16353    },
16354    Lint {
16355        label: "clippy::out_of_bounds_indexing",
16356        description: r##"Checks for out of bounds array indexing with a constant
16357index."##,
16358        default_severity: Severity::Allow,
16359        warn_since: None,
16360        deny_since: None,
16361    },
16362    Lint {
16363        label: "clippy::overly_complex_bool_expr",
16364        description: r##"Checks for boolean expressions that contain terminals that
16365can be eliminated."##,
16366        default_severity: Severity::Allow,
16367        warn_since: None,
16368        deny_since: None,
16369    },
16370    Lint {
16371        label: "clippy::panic",
16372        description: r##"Checks for usage of `panic!`."##,
16373        default_severity: Severity::Allow,
16374        warn_since: None,
16375        deny_since: None,
16376    },
16377    Lint {
16378        label: "clippy::panic_in_result_fn",
16379        description: r##"Checks for usage of `panic!` or assertions in a function whose return type is `Result`."##,
16380        default_severity: Severity::Allow,
16381        warn_since: None,
16382        deny_since: None,
16383    },
16384    Lint {
16385        label: "clippy::panicking_overflow_checks",
16386        description: r##"Detects C-style underflow/overflow checks."##,
16387        default_severity: Severity::Allow,
16388        warn_since: None,
16389        deny_since: None,
16390    },
16391    Lint {
16392        label: "clippy::panicking_unwrap",
16393        description: r##"Checks for calls of `unwrap[_err]()` that will always fail."##,
16394        default_severity: Severity::Allow,
16395        warn_since: None,
16396        deny_since: None,
16397    },
16398    Lint {
16399        label: "clippy::partial_pub_fields",
16400        description: r##"Checks whether some but not all fields of a `struct` are public.
16401
16402Either make all fields of a type public, or make none of them public"##,
16403        default_severity: Severity::Allow,
16404        warn_since: None,
16405        deny_since: None,
16406    },
16407    Lint {
16408        label: "clippy::partialeq_ne_impl",
16409        description: r##"Checks for manual re-implementations of `PartialEq::ne`."##,
16410        default_severity: Severity::Allow,
16411        warn_since: None,
16412        deny_since: None,
16413    },
16414    Lint {
16415        label: "clippy::partialeq_to_none",
16416        description: r##"Checks for binary comparisons to a literal `Option::None`."##,
16417        default_severity: Severity::Allow,
16418        warn_since: None,
16419        deny_since: None,
16420    },
16421    Lint {
16422        label: "clippy::path_buf_push_overwrite",
16423        description: r##"* Checks for [push](https://doc.rust-lang.org/std/path/struct.PathBuf.html#method.push)
16424calls on `PathBuf` that can cause overwrites."##,
16425        default_severity: Severity::Allow,
16426        warn_since: None,
16427        deny_since: None,
16428    },
16429    Lint {
16430        label: "clippy::path_ends_with_ext",
16431        description: r##"Looks for calls to `Path::ends_with` calls where the argument looks like a file extension.
16432
16433By default, Clippy has a short list of known filenames that start with a dot
16434but aren't necessarily file extensions (e.g. the `.git` folder), which are allowed by default.
16435The `allowed-dotfiles` configuration can be used to allow additional
16436file extensions that Clippy should not lint."##,
16437        default_severity: Severity::Allow,
16438        warn_since: None,
16439        deny_since: None,
16440    },
16441    Lint {
16442        label: "clippy::pathbuf_init_then_push",
16443        description: r##"Checks for calls to `push` immediately after creating a new `PathBuf`."##,
16444        default_severity: Severity::Allow,
16445        warn_since: None,
16446        deny_since: None,
16447    },
16448    Lint {
16449        label: "clippy::pattern_type_mismatch",
16450        description: r##"Checks for patterns that aren't exact representations of the types
16451they are applied to.
16452
16453To satisfy this lint, you will have to adjust either the expression that is matched
16454against or the pattern itself, as well as the bindings that are introduced by the
16455adjusted patterns. For matching you will have to either dereference the expression
16456with the `*` operator, or amend the patterns to explicitly match against `&<pattern>`
16457or `&mut <pattern>` depending on the reference mutability. For the bindings you need
16458to use the inverse. You can leave them as plain bindings if you wish for the value
16459to be copied, but you must use `ref mut <variable>` or `ref <variable>` to construct
16460a reference into the matched structure.
16461
16462If you are looking for a way to learn about ownership semantics in more detail, it
16463is recommended to look at IDE options available to you to highlight types, lifetimes
16464and reference semantics in your code. The available tooling would expose these things
16465in a general way even outside of the various pattern matching mechanics. Of course
16466this lint can still be used to highlight areas of interest and ensure a good understanding
16467of ownership semantics."##,
16468        default_severity: Severity::Allow,
16469        warn_since: None,
16470        deny_since: None,
16471    },
16472    Lint {
16473        label: "clippy::permissions_set_readonly_false",
16474        description: r##"Checks for calls to `std::fs::Permissions.set_readonly` with argument `false`."##,
16475        default_severity: Severity::Allow,
16476        warn_since: None,
16477        deny_since: None,
16478    },
16479    Lint {
16480        label: "clippy::pointers_in_nomem_asm_block",
16481        description: r##"Checks if any pointer is being passed to an asm! block with `nomem` option."##,
16482        default_severity: Severity::Allow,
16483        warn_since: None,
16484        deny_since: None,
16485    },
16486    Lint {
16487        label: "clippy::possible_missing_comma",
16488        description: r##"Checks for possible missing comma in an array. It lints if
16489an array element is a binary operator expression and it lies on two lines."##,
16490        default_severity: Severity::Allow,
16491        warn_since: None,
16492        deny_since: None,
16493    },
16494    Lint {
16495        label: "clippy::precedence",
16496        description: r##"Checks for operations where precedence may be unclear
16497and suggests to add parentheses. Currently it catches the following:
16498* mixed usage of arithmetic and bit shifting/combining operators without
16499parentheses"##,
16500        default_severity: Severity::Allow,
16501        warn_since: None,
16502        deny_since: None,
16503    },
16504    Lint {
16505        label: "clippy::print_in_format_impl",
16506        description: r##"Checks for usage of `println`, `print`, `eprintln` or `eprint` in an
16507implementation of a formatting trait."##,
16508        default_severity: Severity::Allow,
16509        warn_since: None,
16510        deny_since: None,
16511    },
16512    Lint {
16513        label: "clippy::print_literal",
16514        description: r##"This lint warns about the use of literals as `print!`/`println!` args."##,
16515        default_severity: Severity::Allow,
16516        warn_since: None,
16517        deny_since: None,
16518    },
16519    Lint {
16520        label: "clippy::print_stderr",
16521        description: r##"Checks for printing on *stderr*. The purpose of this lint
16522is to catch debugging remnants."##,
16523        default_severity: Severity::Allow,
16524        warn_since: None,
16525        deny_since: None,
16526    },
16527    Lint {
16528        label: "clippy::print_stdout",
16529        description: r##"Checks for printing on *stdout*. The purpose of this lint
16530is to catch debugging remnants."##,
16531        default_severity: Severity::Allow,
16532        warn_since: None,
16533        deny_since: None,
16534    },
16535    Lint {
16536        label: "clippy::print_with_newline",
16537        description: r##"This lint warns when you use `print!()` with a format
16538string that ends in a newline."##,
16539        default_severity: Severity::Allow,
16540        warn_since: None,
16541        deny_since: None,
16542    },
16543    Lint {
16544        label: "clippy::println_empty_string",
16545        description: r##"This lint warns when you use `println!()` to
16546print a newline."##,
16547        default_severity: Severity::Allow,
16548        warn_since: None,
16549        deny_since: None,
16550    },
16551    Lint {
16552        label: "clippy::ptr_arg",
16553        description: r##"This lint checks for function arguments of type `&String`, `&Vec`,
16554`&PathBuf`, and `Cow<_>`. It will also suggest you replace `.clone()` calls
16555with the appropriate `.to_owned()`/`to_string()` calls."##,
16556        default_severity: Severity::Allow,
16557        warn_since: None,
16558        deny_since: None,
16559    },
16560    Lint {
16561        label: "clippy::ptr_as_ptr",
16562        description: r##"Checks for `as` casts between raw pointers that don't change their
16563constness, namely `*const T` to `*const U` and `*mut T` to `*mut U`."##,
16564        default_severity: Severity::Allow,
16565        warn_since: None,
16566        deny_since: None,
16567    },
16568    Lint {
16569        label: "clippy::ptr_cast_constness",
16570        description: r##"Checks for `as` casts between raw pointers that change their constness, namely `*const T` to
16571`*mut T` and `*mut T` to `*const T`."##,
16572        default_severity: Severity::Allow,
16573        warn_since: None,
16574        deny_since: None,
16575    },
16576    Lint {
16577        label: "clippy::ptr_eq",
16578        description: r##"Use `std::ptr::eq` when applicable"##,
16579        default_severity: Severity::Allow,
16580        warn_since: None,
16581        deny_since: None,
16582    },
16583    Lint {
16584        label: "clippy::ptr_offset_with_cast",
16585        description: r##"Checks for usage of the `offset` pointer method with a `usize` casted to an
16586`isize`."##,
16587        default_severity: Severity::Allow,
16588        warn_since: None,
16589        deny_since: None,
16590    },
16591    Lint {
16592        label: "clippy::pub_enum_variant_names",
16593        description: r##"Nothing. This lint has been deprecated"##,
16594        default_severity: Severity::Allow,
16595        warn_since: None,
16596        deny_since: None,
16597    },
16598    Lint {
16599        label: "clippy::pub_underscore_fields",
16600        description: r##"Checks whether any field of the struct is prefixed with an `_` (underscore) and also marked
16601`pub` (public)"##,
16602        default_severity: Severity::Allow,
16603        warn_since: None,
16604        deny_since: None,
16605    },
16606    Lint {
16607        label: "clippy::pub_use",
16608        description: r##"Restricts the usage of `pub use ...`"##,
16609        default_severity: Severity::Allow,
16610        warn_since: None,
16611        deny_since: None,
16612    },
16613    Lint {
16614        label: "clippy::pub_with_shorthand",
16615        description: r##"Checks for usage of `pub(<loc>)` with `in`."##,
16616        default_severity: Severity::Allow,
16617        warn_since: None,
16618        deny_since: None,
16619    },
16620    Lint {
16621        label: "clippy::pub_without_shorthand",
16622        description: r##"Checks for usage of `pub(<loc>)` without `in`.
16623
16624Note: As you cannot write a module's path in `pub(<loc>)`, this will only trigger on
16625`pub(super)` and the like."##,
16626        default_severity: Severity::Allow,
16627        warn_since: None,
16628        deny_since: None,
16629    },
16630    Lint {
16631        label: "clippy::question_mark",
16632        description: r##"Checks for expressions that could be replaced by the question mark operator."##,
16633        default_severity: Severity::Allow,
16634        warn_since: None,
16635        deny_since: None,
16636    },
16637    Lint {
16638        label: "clippy::question_mark_used",
16639        description: r##"Checks for expressions that use the question mark operator and rejects them."##,
16640        default_severity: Severity::Allow,
16641        warn_since: None,
16642        deny_since: None,
16643    },
16644    Lint {
16645        label: "clippy::range_minus_one",
16646        description: r##"Checks for inclusive ranges where 1 is subtracted from
16647the upper bound, e.g., `x..=(y-1)`."##,
16648        default_severity: Severity::Allow,
16649        warn_since: None,
16650        deny_since: None,
16651    },
16652    Lint {
16653        label: "clippy::range_plus_one",
16654        description: r##"Checks for exclusive ranges where 1 is added to the
16655upper bound, e.g., `x..(y+1)`."##,
16656        default_severity: Severity::Allow,
16657        warn_since: None,
16658        deny_since: None,
16659    },
16660    Lint {
16661        label: "clippy::range_step_by_zero",
16662        description: r##"Nothing. This lint has been deprecated"##,
16663        default_severity: Severity::Allow,
16664        warn_since: None,
16665        deny_since: None,
16666    },
16667    Lint {
16668        label: "clippy::range_zip_with_len",
16669        description: r##"Checks for zipping a collection with the range of
16670`0.._.len()`."##,
16671        default_severity: Severity::Allow,
16672        warn_since: None,
16673        deny_since: None,
16674    },
16675    Lint {
16676        label: "clippy::rc_buffer",
16677        description: r##"Checks for `Rc<T>` and `Arc<T>` when `T` is a mutable buffer type such as `String` or `Vec`."##,
16678        default_severity: Severity::Allow,
16679        warn_since: None,
16680        deny_since: None,
16681    },
16682    Lint {
16683        label: "clippy::rc_clone_in_vec_init",
16684        description: r##"Checks for reference-counted pointers (`Arc`, `Rc`, `rc::Weak`, and `sync::Weak`)
16685in `vec![elem; len]`"##,
16686        default_severity: Severity::Allow,
16687        warn_since: None,
16688        deny_since: None,
16689    },
16690    Lint {
16691        label: "clippy::rc_mutex",
16692        description: r##"Checks for `Rc<Mutex<T>>`."##,
16693        default_severity: Severity::Allow,
16694        warn_since: None,
16695        deny_since: None,
16696    },
16697    Lint {
16698        label: "clippy::read_line_without_trim",
16699        description: r##"Looks for calls to [`Stdin::read_line`] to read a line from the standard input
16700into a string, then later attempting to use that string for an operation that will never
16701work for strings with a trailing newline character in it (e.g. parsing into a `i32`)."##,
16702        default_severity: Severity::Allow,
16703        warn_since: None,
16704        deny_since: None,
16705    },
16706    Lint {
16707        label: "clippy::read_zero_byte_vec",
16708        description: r##"This lint catches reads into a zero-length `Vec`.
16709Especially in the case of a call to `with_capacity`, this lint warns that read
16710gets the number of bytes from the `Vec`'s length, not its capacity."##,
16711        default_severity: Severity::Allow,
16712        warn_since: None,
16713        deny_since: None,
16714    },
16715    Lint {
16716        label: "clippy::readonly_write_lock",
16717        description: r##"Looks for calls to `RwLock::write` where the lock is only used for reading."##,
16718        default_severity: Severity::Allow,
16719        warn_since: None,
16720        deny_since: None,
16721    },
16722    Lint {
16723        label: "clippy::recursive_format_impl",
16724        description: r##"Checks for format trait implementations (e.g. `Display`) with a recursive call to itself
16725which uses `self` as a parameter.
16726This is typically done indirectly with the `write!` macro or with `to_string()`."##,
16727        default_severity: Severity::Allow,
16728        warn_since: None,
16729        deny_since: None,
16730    },
16731    Lint {
16732        label: "clippy::redundant_allocation",
16733        description: r##"Checks for usage of redundant allocations anywhere in the code."##,
16734        default_severity: Severity::Allow,
16735        warn_since: None,
16736        deny_since: None,
16737    },
16738    Lint {
16739        label: "clippy::redundant_as_str",
16740        description: r##"Checks for usage of `as_str()` on a `String` chained with a method available on the `String` itself."##,
16741        default_severity: Severity::Allow,
16742        warn_since: None,
16743        deny_since: None,
16744    },
16745    Lint {
16746        label: "clippy::redundant_async_block",
16747        description: r##"Checks for `async` block that only returns `await` on a future."##,
16748        default_severity: Severity::Allow,
16749        warn_since: None,
16750        deny_since: None,
16751    },
16752    Lint {
16753        label: "clippy::redundant_at_rest_pattern",
16754        description: r##"Checks for `[all @ ..]` patterns."##,
16755        default_severity: Severity::Allow,
16756        warn_since: None,
16757        deny_since: None,
16758    },
16759    Lint {
16760        label: "clippy::redundant_clone",
16761        description: r##"Checks for a redundant `clone()` (and its relatives) which clones an owned
16762value that is going to be dropped without further use."##,
16763        default_severity: Severity::Allow,
16764        warn_since: None,
16765        deny_since: None,
16766    },
16767    Lint {
16768        label: "clippy::redundant_closure",
16769        description: r##"Checks for closures which just call another function where
16770the function can be called directly. `unsafe` functions, calls where types
16771get adjusted or where the callee is marked `#[track_caller]` are ignored."##,
16772        default_severity: Severity::Allow,
16773        warn_since: None,
16774        deny_since: None,
16775    },
16776    Lint {
16777        label: "clippy::redundant_closure_call",
16778        description: r##"Detects closures called in the same expression where they
16779are defined."##,
16780        default_severity: Severity::Allow,
16781        warn_since: None,
16782        deny_since: None,
16783    },
16784    Lint {
16785        label: "clippy::redundant_closure_for_method_calls",
16786        description: r##"Checks for closures which only invoke a method on the closure
16787argument and can be replaced by referencing the method directly."##,
16788        default_severity: Severity::Allow,
16789        warn_since: None,
16790        deny_since: None,
16791    },
16792    Lint {
16793        label: "clippy::redundant_comparisons",
16794        description: r##"Checks for ineffective double comparisons against constants."##,
16795        default_severity: Severity::Allow,
16796        warn_since: None,
16797        deny_since: None,
16798    },
16799    Lint {
16800        label: "clippy::redundant_else",
16801        description: r##"Checks for `else` blocks that can be removed without changing semantics."##,
16802        default_severity: Severity::Allow,
16803        warn_since: None,
16804        deny_since: None,
16805    },
16806    Lint {
16807        label: "clippy::redundant_feature_names",
16808        description: r##"Checks for feature names with prefix `use-`, `with-` or suffix `-support`"##,
16809        default_severity: Severity::Allow,
16810        warn_since: None,
16811        deny_since: None,
16812    },
16813    Lint {
16814        label: "clippy::redundant_field_names",
16815        description: r##"Checks for fields in struct literals where shorthands
16816could be used."##,
16817        default_severity: Severity::Allow,
16818        warn_since: None,
16819        deny_since: None,
16820    },
16821    Lint {
16822        label: "clippy::redundant_guards",
16823        description: r##"Checks for unnecessary guards in match expressions."##,
16824        default_severity: Severity::Allow,
16825        warn_since: None,
16826        deny_since: None,
16827    },
16828    Lint {
16829        label: "clippy::redundant_locals",
16830        description: r##"Checks for redundant redefinitions of local bindings."##,
16831        default_severity: Severity::Allow,
16832        warn_since: None,
16833        deny_since: None,
16834    },
16835    Lint {
16836        label: "clippy::redundant_pattern",
16837        description: r##"Checks for patterns in the form `name @ _`."##,
16838        default_severity: Severity::Allow,
16839        warn_since: None,
16840        deny_since: None,
16841    },
16842    Lint {
16843        label: "clippy::redundant_pattern_matching",
16844        description: r##"Lint for redundant pattern matching over `Result`, `Option`,
16845`std::task::Poll`, `std::net::IpAddr` or `bool`s"##,
16846        default_severity: Severity::Allow,
16847        warn_since: None,
16848        deny_since: None,
16849    },
16850    Lint {
16851        label: "clippy::redundant_pub_crate",
16852        description: r##"Checks for items declared `pub(crate)` that are not crate visible because they
16853are inside a private module."##,
16854        default_severity: Severity::Allow,
16855        warn_since: None,
16856        deny_since: None,
16857    },
16858    Lint {
16859        label: "clippy::redundant_slicing",
16860        description: r##"Checks for redundant slicing expressions which use the full range, and
16861do not change the type."##,
16862        default_severity: Severity::Allow,
16863        warn_since: None,
16864        deny_since: None,
16865    },
16866    Lint {
16867        label: "clippy::redundant_static_lifetimes",
16868        description: r##"Checks for constants and statics with an explicit `'static` lifetime."##,
16869        default_severity: Severity::Allow,
16870        warn_since: None,
16871        deny_since: None,
16872    },
16873    Lint {
16874        label: "clippy::redundant_type_annotations",
16875        description: r##"Warns about needless / redundant type annotations."##,
16876        default_severity: Severity::Allow,
16877        warn_since: None,
16878        deny_since: None,
16879    },
16880    Lint {
16881        label: "clippy::ref_as_ptr",
16882        description: r##"Checks for casts of references to pointer using `as`
16883and suggests `std::ptr::from_ref` and `std::ptr::from_mut` instead."##,
16884        default_severity: Severity::Allow,
16885        warn_since: None,
16886        deny_since: None,
16887    },
16888    Lint {
16889        label: "clippy::ref_binding_to_reference",
16890        description: r##"Checks for `ref` bindings which create a reference to a reference."##,
16891        default_severity: Severity::Allow,
16892        warn_since: None,
16893        deny_since: None,
16894    },
16895    Lint {
16896        label: "clippy::ref_option",
16897        description: r##"Warns when a function signature uses `&Option<T>` instead of `Option<&T>`."##,
16898        default_severity: Severity::Allow,
16899        warn_since: None,
16900        deny_since: None,
16901    },
16902    Lint {
16903        label: "clippy::ref_option_ref",
16904        description: r##"Checks for usage of `&Option<&T>`."##,
16905        default_severity: Severity::Allow,
16906        warn_since: None,
16907        deny_since: None,
16908    },
16909    Lint {
16910        label: "clippy::ref_patterns",
16911        description: r##"Checks for usages of the `ref` keyword."##,
16912        default_severity: Severity::Allow,
16913        warn_since: None,
16914        deny_since: None,
16915    },
16916    Lint {
16917        label: "clippy::regex_macro",
16918        description: r##"Nothing. This lint has been deprecated"##,
16919        default_severity: Severity::Allow,
16920        warn_since: None,
16921        deny_since: None,
16922    },
16923    Lint {
16924        label: "clippy::renamed_function_params",
16925        description: r##"Lints when the name of function parameters from trait impl is
16926different than its default implementation."##,
16927        default_severity: Severity::Allow,
16928        warn_since: None,
16929        deny_since: None,
16930    },
16931    Lint {
16932        label: "clippy::repeat_once",
16933        description: r##"Checks for usage of `.repeat(1)` and suggest the following method for each types.
16934- `.to_string()` for `str`
16935- `.clone()` for `String`
16936- `.to_vec()` for `slice`
16937
16938The lint will evaluate constant expressions and values as arguments of `.repeat(..)` and emit a message if
16939they are equivalent to `1`. (Related discussion in [rust-clippy#7306](https://github.com/rust-lang/rust-clippy/issues/7306))"##,
16940        default_severity: Severity::Allow,
16941        warn_since: None,
16942        deny_since: None,
16943    },
16944    Lint {
16945        label: "clippy::repeat_vec_with_capacity",
16946        description: r##"Looks for patterns such as `vec![Vec::with_capacity(x); n]` or `iter::repeat(Vec::with_capacity(x))`."##,
16947        default_severity: Severity::Allow,
16948        warn_since: None,
16949        deny_since: None,
16950    },
16951    Lint {
16952        label: "clippy::replace_consts",
16953        description: r##"Nothing. This lint has been deprecated"##,
16954        default_severity: Severity::Allow,
16955        warn_since: None,
16956        deny_since: None,
16957    },
16958    Lint {
16959        label: "clippy::reserve_after_initialization",
16960        description: r##"Informs the user about a more concise way to create a vector with a known capacity."##,
16961        default_severity: Severity::Allow,
16962        warn_since: None,
16963        deny_since: None,
16964    },
16965    Lint {
16966        label: "clippy::rest_pat_in_fully_bound_structs",
16967        description: r##"Checks for unnecessary '..' pattern binding on struct when all fields are explicitly matched."##,
16968        default_severity: Severity::Allow,
16969        warn_since: None,
16970        deny_since: None,
16971    },
16972    Lint {
16973        label: "clippy::result_filter_map",
16974        description: r##"Checks for iterators of `Result`s using `.filter(Result::is_ok).map(Result::unwrap)` that may
16975be replaced with a `.flatten()` call."##,
16976        default_severity: Severity::Allow,
16977        warn_since: None,
16978        deny_since: None,
16979    },
16980    Lint {
16981        label: "clippy::result_large_err",
16982        description: r##"Checks for functions that return `Result` with an unusually large
16983`Err`-variant."##,
16984        default_severity: Severity::Allow,
16985        warn_since: None,
16986        deny_since: None,
16987    },
16988    Lint {
16989        label: "clippy::result_map_or_into_option",
16990        description: r##"Checks for usage of `_.map_or(None, Some)`."##,
16991        default_severity: Severity::Allow,
16992        warn_since: None,
16993        deny_since: None,
16994    },
16995    Lint {
16996        label: "clippy::result_map_unit_fn",
16997        description: r##"Checks for usage of `result.map(f)` where f is a function
16998or closure that returns the unit type `()`."##,
16999        default_severity: Severity::Allow,
17000        warn_since: None,
17001        deny_since: None,
17002    },
17003    Lint {
17004        label: "clippy::result_unit_err",
17005        description: r##"Checks for public functions that return a `Result`
17006with an `Err` type of `()`. It suggests using a custom type that
17007implements `std::error::Error`."##,
17008        default_severity: Severity::Allow,
17009        warn_since: None,
17010        deny_since: None,
17011    },
17012    Lint {
17013        label: "clippy::return_self_not_must_use",
17014        description: r##"This lint warns when a method returning `Self` doesn't have the `#[must_use]` attribute."##,
17015        default_severity: Severity::Allow,
17016        warn_since: None,
17017        deny_since: None,
17018    },
17019    Lint {
17020        label: "clippy::reversed_empty_ranges",
17021        description: r##"Checks for range expressions `x..y` where both `x` and `y`
17022are constant and `x` is greater to `y`. Also triggers if `x` is equal to `y` when they are conditions to a `for` loop."##,
17023        default_severity: Severity::Allow,
17024        warn_since: None,
17025        deny_since: None,
17026    },
17027    Lint {
17028        label: "clippy::same_functions_in_if_condition",
17029        description: r##"Checks for consecutive `if`s with the same function call."##,
17030        default_severity: Severity::Allow,
17031        warn_since: None,
17032        deny_since: None,
17033    },
17034    Lint {
17035        label: "clippy::same_item_push",
17036        description: r##"Checks whether a for loop is being used to push a constant
17037value into a Vec."##,
17038        default_severity: Severity::Allow,
17039        warn_since: None,
17040        deny_since: None,
17041    },
17042    Lint {
17043        label: "clippy::same_name_method",
17044        description: r##"It lints if a struct has two methods with the same name:
17045one from a trait, another not from a trait."##,
17046        default_severity: Severity::Allow,
17047        warn_since: None,
17048        deny_since: None,
17049    },
17050    Lint {
17051        label: "clippy::search_is_some",
17052        description: r##"Checks for an iterator or string search (such as `find()`,
17053`position()`, or `rposition()`) followed by a call to `is_some()` or `is_none()`."##,
17054        default_severity: Severity::Allow,
17055        warn_since: None,
17056        deny_since: None,
17057    },
17058    Lint {
17059        label: "clippy::seek_from_current",
17060        description: r##"Checks if the `seek` method of the `Seek` trait is called with `SeekFrom::Current(0)`,
17061and if it is, suggests using `stream_position` instead."##,
17062        default_severity: Severity::Allow,
17063        warn_since: None,
17064        deny_since: None,
17065    },
17066    Lint {
17067        label: "clippy::seek_to_start_instead_of_rewind",
17068        description: r##"Checks for jumps to the start of a stream that implements `Seek`
17069and uses the `seek` method providing `Start` as parameter."##,
17070        default_severity: Severity::Allow,
17071        warn_since: None,
17072        deny_since: None,
17073    },
17074    Lint {
17075        label: "clippy::self_assignment",
17076        description: r##"Checks for explicit self-assignments."##,
17077        default_severity: Severity::Allow,
17078        warn_since: None,
17079        deny_since: None,
17080    },
17081    Lint {
17082        label: "clippy::self_named_constructors",
17083        description: r##"Warns when constructors have the same name as their types."##,
17084        default_severity: Severity::Allow,
17085        warn_since: None,
17086        deny_since: None,
17087    },
17088    Lint {
17089        label: "clippy::self_named_module_files",
17090        description: r##"Checks that module layout uses only `mod.rs` files."##,
17091        default_severity: Severity::Allow,
17092        warn_since: None,
17093        deny_since: None,
17094    },
17095    Lint {
17096        label: "clippy::semicolon_if_nothing_returned",
17097        description: r##"Looks for blocks of expressions and fires if the last expression returns
17098`()` but is not followed by a semicolon."##,
17099        default_severity: Severity::Allow,
17100        warn_since: None,
17101        deny_since: None,
17102    },
17103    Lint {
17104        label: "clippy::semicolon_inside_block",
17105        description: r##"Suggests moving the semicolon after a block to the inside of the block, after its last
17106expression."##,
17107        default_severity: Severity::Allow,
17108        warn_since: None,
17109        deny_since: None,
17110    },
17111    Lint {
17112        label: "clippy::semicolon_outside_block",
17113        description: r##"Suggests moving the semicolon from a block's final expression outside of the block."##,
17114        default_severity: Severity::Allow,
17115        warn_since: None,
17116        deny_since: None,
17117    },
17118    Lint {
17119        label: "clippy::separated_literal_suffix",
17120        description: r##"Warns if literal suffixes are separated by an underscore.
17121To enforce separated literal suffix style,
17122see the `unseparated_literal_suffix` lint."##,
17123        default_severity: Severity::Allow,
17124        warn_since: None,
17125        deny_since: None,
17126    },
17127    Lint {
17128        label: "clippy::serde_api_misuse",
17129        description: r##"Checks for misuses of the serde API."##,
17130        default_severity: Severity::Allow,
17131        warn_since: None,
17132        deny_since: None,
17133    },
17134    Lint {
17135        label: "clippy::set_contains_or_insert",
17136        description: r##"Checks for usage of `contains` to see if a value is not present
17137in a set like `HashSet` or `BTreeSet`, followed by an `insert`."##,
17138        default_severity: Severity::Allow,
17139        warn_since: None,
17140        deny_since: None,
17141    },
17142    Lint {
17143        label: "clippy::shadow_reuse",
17144        description: r##"Checks for bindings that shadow other bindings already in
17145scope, while reusing the original value."##,
17146        default_severity: Severity::Allow,
17147        warn_since: None,
17148        deny_since: None,
17149    },
17150    Lint {
17151        label: "clippy::shadow_same",
17152        description: r##"Checks for bindings that shadow other bindings already in
17153scope, while just changing reference level or mutability."##,
17154        default_severity: Severity::Allow,
17155        warn_since: None,
17156        deny_since: None,
17157    },
17158    Lint {
17159        label: "clippy::shadow_unrelated",
17160        description: r##"Checks for bindings that shadow other bindings already in
17161scope, either without an initialization or with one that does not even use
17162the original value."##,
17163        default_severity: Severity::Allow,
17164        warn_since: None,
17165        deny_since: None,
17166    },
17167    Lint {
17168        label: "clippy::short_circuit_statement",
17169        description: r##"Checks for the use of short circuit boolean conditions as
17170a
17171statement."##,
17172        default_severity: Severity::Allow,
17173        warn_since: None,
17174        deny_since: None,
17175    },
17176    Lint {
17177        label: "clippy::should_assert_eq",
17178        description: r##"Nothing. This lint has been deprecated"##,
17179        default_severity: Severity::Allow,
17180        warn_since: None,
17181        deny_since: None,
17182    },
17183    Lint {
17184        label: "clippy::should_implement_trait",
17185        description: r##"Checks for methods that should live in a trait
17186implementation of a `std` trait (see [llogiq's blog
17187post](http://llogiq.github.io/2015/07/30/traits.html) for further
17188information) instead of an inherent implementation."##,
17189        default_severity: Severity::Allow,
17190        warn_since: None,
17191        deny_since: None,
17192    },
17193    Lint {
17194        label: "clippy::should_panic_without_expect",
17195        description: r##"Checks for `#[should_panic]` attributes without specifying the expected panic message."##,
17196        default_severity: Severity::Allow,
17197        warn_since: None,
17198        deny_since: None,
17199    },
17200    Lint {
17201        label: "clippy::significant_drop_in_scrutinee",
17202        description: r##"Checks for temporaries returned from function calls in a match scrutinee that have the
17203`clippy::has_significant_drop` attribute."##,
17204        default_severity: Severity::Allow,
17205        warn_since: None,
17206        deny_since: None,
17207    },
17208    Lint {
17209        label: "clippy::significant_drop_tightening",
17210        description: r##"Searches for elements marked with `#[clippy::has_significant_drop]` that could be early
17211dropped but are in fact dropped at the end of their scopes. In other words, enforces the
17212tightening of their possible lifetimes."##,
17213        default_severity: Severity::Allow,
17214        warn_since: None,
17215        deny_since: None,
17216    },
17217    Lint {
17218        label: "clippy::similar_names",
17219        description: r##"Checks for names that are very similar and thus confusing.
17220
17221Note: this lint looks for similar names throughout each
17222scope. To allow it, you need to allow it on the scope
17223level, not on the name that is reported."##,
17224        default_severity: Severity::Allow,
17225        warn_since: None,
17226        deny_since: None,
17227    },
17228    Lint {
17229        label: "clippy::single_call_fn",
17230        description: r##"Checks for functions that are only used once. Does not lint tests."##,
17231        default_severity: Severity::Allow,
17232        warn_since: None,
17233        deny_since: None,
17234    },
17235    Lint {
17236        label: "clippy::single_char_add_str",
17237        description: r##"Warns when using `push_str`/`insert_str` with a single-character string literal
17238where `push`/`insert` with a `char` would work fine."##,
17239        default_severity: Severity::Allow,
17240        warn_since: None,
17241        deny_since: None,
17242    },
17243    Lint {
17244        label: "clippy::single_char_lifetime_names",
17245        description: r##"Checks for lifetimes with names which are one character
17246long."##,
17247        default_severity: Severity::Allow,
17248        warn_since: None,
17249        deny_since: None,
17250    },
17251    Lint {
17252        label: "clippy::single_char_pattern",
17253        description: r##"Checks for string methods that receive a single-character
17254`str` as an argument, e.g., `_.split(x)`."##,
17255        default_severity: Severity::Allow,
17256        warn_since: None,
17257        deny_since: None,
17258    },
17259    Lint {
17260        label: "clippy::single_component_path_imports",
17261        description: r##"Checking for imports with single component use path."##,
17262        default_severity: Severity::Allow,
17263        warn_since: None,
17264        deny_since: None,
17265    },
17266    Lint {
17267        label: "clippy::single_element_loop",
17268        description: r##"Checks whether a for loop has a single element."##,
17269        default_severity: Severity::Allow,
17270        warn_since: None,
17271        deny_since: None,
17272    },
17273    Lint {
17274        label: "clippy::single_match",
17275        description: r##"Checks for matches with a single arm where an `if let`
17276will usually suffice.
17277
17278This intentionally does not lint if there are comments
17279inside of the other arm, so as to allow the user to document
17280why having another explicit pattern with an empty body is necessary,
17281or because the comments need to be preserved for other reasons."##,
17282        default_severity: Severity::Allow,
17283        warn_since: None,
17284        deny_since: None,
17285    },
17286    Lint {
17287        label: "clippy::single_match_else",
17288        description: r##"Checks for matches with two arms where an `if let else` will
17289usually suffice."##,
17290        default_severity: Severity::Allow,
17291        warn_since: None,
17292        deny_since: None,
17293    },
17294    Lint {
17295        label: "clippy::single_range_in_vec_init",
17296        description: r##"Checks for `Vec` or array initializations that contain only one range."##,
17297        default_severity: Severity::Allow,
17298        warn_since: None,
17299        deny_since: None,
17300    },
17301    Lint {
17302        label: "clippy::size_of_in_element_count",
17303        description: r##"Detects expressions where
17304`size_of::<T>` or `size_of_val::<T>` is used as a
17305count of elements of type `T`"##,
17306        default_severity: Severity::Allow,
17307        warn_since: None,
17308        deny_since: None,
17309    },
17310    Lint {
17311        label: "clippy::size_of_ref",
17312        description: r##"Checks for calls to `size_of_val()` where the argument is
17313a reference to a reference."##,
17314        default_severity: Severity::Allow,
17315        warn_since: None,
17316        deny_since: None,
17317    },
17318    Lint {
17319        label: "clippy::skip_while_next",
17320        description: r##"Checks for usage of `_.skip_while(condition).next()`."##,
17321        default_severity: Severity::Allow,
17322        warn_since: None,
17323        deny_since: None,
17324    },
17325    Lint {
17326        label: "clippy::slow_vector_initialization",
17327        description: r##"Checks slow zero-filled vector initialization"##,
17328        default_severity: Severity::Allow,
17329        warn_since: None,
17330        deny_since: None,
17331    },
17332    Lint {
17333        label: "clippy::stable_sort_primitive",
17334        description: r##"When sorting primitive values (integers, bools, chars, as well
17335as arrays, slices, and tuples of such items), it is typically better to
17336use an unstable sort than a stable sort."##,
17337        default_severity: Severity::Allow,
17338        warn_since: None,
17339        deny_since: None,
17340    },
17341    Lint {
17342        label: "clippy::std_instead_of_alloc",
17343        description: r##"Finds items imported through `std` when available through `alloc`."##,
17344        default_severity: Severity::Allow,
17345        warn_since: None,
17346        deny_since: None,
17347    },
17348    Lint {
17349        label: "clippy::std_instead_of_core",
17350        description: r##"Finds items imported through `std` when available through `core`."##,
17351        default_severity: Severity::Allow,
17352        warn_since: None,
17353        deny_since: None,
17354    },
17355    Lint {
17356        label: "clippy::str_split_at_newline",
17357        description: r##"Checks for usages of `str.trim().split(\
17358)` and `str.trim().split(\\
17359)`."##,
17360        default_severity: Severity::Allow,
17361        warn_since: None,
17362        deny_since: None,
17363    },
17364    Lint {
17365        label: "clippy::str_to_string",
17366        description: r##"This lint checks for `.to_string()` method calls on values of type `&str`."##,
17367        default_severity: Severity::Allow,
17368        warn_since: None,
17369        deny_since: None,
17370    },
17371    Lint {
17372        label: "clippy::string_add",
17373        description: r##"Checks for all instances of `x + _` where `x` is of type
17374`String`, but only if [`string_add_assign`](#string_add_assign) does *not*
17375match."##,
17376        default_severity: Severity::Allow,
17377        warn_since: None,
17378        deny_since: None,
17379    },
17380    Lint {
17381        label: "clippy::string_add_assign",
17382        description: r##"Checks for string appends of the form `x = x + y` (without
17383`let`!)."##,
17384        default_severity: Severity::Allow,
17385        warn_since: None,
17386        deny_since: None,
17387    },
17388    Lint {
17389        label: "clippy::string_extend_chars",
17390        description: r##"Checks for the use of `.extend(s.chars())` where s is a
17391`&str` or `String`."##,
17392        default_severity: Severity::Allow,
17393        warn_since: None,
17394        deny_since: None,
17395    },
17396    Lint {
17397        label: "clippy::string_from_utf8_as_bytes",
17398        description: r##"Check if the string is transformed to byte array and casted back to string."##,
17399        default_severity: Severity::Allow,
17400        warn_since: None,
17401        deny_since: None,
17402    },
17403    Lint {
17404        label: "clippy::string_lit_as_bytes",
17405        description: r##"Checks for the `as_bytes` method called on string literals
17406that contain only ASCII characters."##,
17407        default_severity: Severity::Allow,
17408        warn_since: None,
17409        deny_since: None,
17410    },
17411    Lint {
17412        label: "clippy::string_lit_chars_any",
17413        description: r##"Checks for `<string_lit>.chars().any(|i| i == c)`."##,
17414        default_severity: Severity::Allow,
17415        warn_since: None,
17416        deny_since: None,
17417    },
17418    Lint {
17419        label: "clippy::string_slice",
17420        description: r##"Checks for slice operations on strings"##,
17421        default_severity: Severity::Allow,
17422        warn_since: None,
17423        deny_since: None,
17424    },
17425    Lint {
17426        label: "clippy::string_to_string",
17427        description: r##"This lint checks for `.to_string()` method calls on values of type `String`."##,
17428        default_severity: Severity::Allow,
17429        warn_since: None,
17430        deny_since: None,
17431    },
17432    Lint {
17433        label: "clippy::strlen_on_c_strings",
17434        description: r##"Checks for usage of `libc::strlen` on a `CString` or `CStr` value,
17435and suggest calling `as_bytes().len()` or `to_bytes().len()` respectively instead."##,
17436        default_severity: Severity::Allow,
17437        warn_since: None,
17438        deny_since: None,
17439    },
17440    Lint {
17441        label: "clippy::struct_excessive_bools",
17442        description: r##"Checks for excessive
17443use of bools in structs."##,
17444        default_severity: Severity::Allow,
17445        warn_since: None,
17446        deny_since: None,
17447    },
17448    Lint {
17449        label: "clippy::struct_field_names",
17450        description: r##"Detects struct fields that are prefixed or suffixed
17451by the same characters or the name of the struct itself."##,
17452        default_severity: Severity::Allow,
17453        warn_since: None,
17454        deny_since: None,
17455    },
17456    Lint {
17457        label: "clippy::suboptimal_flops",
17458        description: r##"Looks for floating-point expressions that
17459can be expressed using built-in methods to improve both
17460accuracy and performance."##,
17461        default_severity: Severity::Allow,
17462        warn_since: None,
17463        deny_since: None,
17464    },
17465    Lint {
17466        label: "clippy::suspicious_arithmetic_impl",
17467        description: r##"Lints for suspicious operations in impls of arithmetic operators, e.g.
17468subtracting elements in an Add impl."##,
17469        default_severity: Severity::Allow,
17470        warn_since: None,
17471        deny_since: None,
17472    },
17473    Lint {
17474        label: "clippy::suspicious_assignment_formatting",
17475        description: r##"Checks for usage of the non-existent `=*`, `=!` and `=-`
17476operators."##,
17477        default_severity: Severity::Allow,
17478        warn_since: None,
17479        deny_since: None,
17480    },
17481    Lint {
17482        label: "clippy::suspicious_command_arg_space",
17483        description: r##"Checks for `Command::arg()` invocations that look like they
17484should be multiple arguments instead, such as `arg(-t ext2)`."##,
17485        default_severity: Severity::Allow,
17486        warn_since: None,
17487        deny_since: None,
17488    },
17489    Lint {
17490        label: "clippy::suspicious_doc_comments",
17491        description: r##"Detects the use of outer doc comments (`///`, `/**`) followed by a bang (`!`): `///!`"##,
17492        default_severity: Severity::Allow,
17493        warn_since: None,
17494        deny_since: None,
17495    },
17496    Lint {
17497        label: "clippy::suspicious_else_formatting",
17498        description: r##"Checks for formatting of `else`. It lints if the `else`
17499is followed immediately by a newline or the `else` seems to be missing."##,
17500        default_severity: Severity::Allow,
17501        warn_since: None,
17502        deny_since: None,
17503    },
17504    Lint {
17505        label: "clippy::suspicious_map",
17506        description: r##"Checks for calls to `map` followed by a `count`."##,
17507        default_severity: Severity::Allow,
17508        warn_since: None,
17509        deny_since: None,
17510    },
17511    Lint {
17512        label: "clippy::suspicious_op_assign_impl",
17513        description: r##"Lints for suspicious operations in impls of OpAssign, e.g.
17514subtracting elements in an AddAssign impl."##,
17515        default_severity: Severity::Allow,
17516        warn_since: None,
17517        deny_since: None,
17518    },
17519    Lint {
17520        label: "clippy::suspicious_open_options",
17521        description: r##"Checks for the suspicious use of `OpenOptions::create()`
17522without an explicit `OpenOptions::truncate()`."##,
17523        default_severity: Severity::Allow,
17524        warn_since: None,
17525        deny_since: None,
17526    },
17527    Lint {
17528        label: "clippy::suspicious_operation_groupings",
17529        description: r##"Checks for unlikely usages of binary operators that are almost
17530certainly typos and/or copy/paste errors, given the other usages
17531of binary operators nearby."##,
17532        default_severity: Severity::Allow,
17533        warn_since: None,
17534        deny_since: None,
17535    },
17536    Lint {
17537        label: "clippy::suspicious_splitn",
17538        description: r##"Checks for calls to [`splitn`]
17539(https://doc.rust-lang.org/std/primitive.str.html#method.splitn) and
17540related functions with either zero or one splits."##,
17541        default_severity: Severity::Allow,
17542        warn_since: None,
17543        deny_since: None,
17544    },
17545    Lint {
17546        label: "clippy::suspicious_to_owned",
17547        description: r##"Checks for the usage of `_.to_owned()`, on a `Cow<'_, _>`."##,
17548        default_severity: Severity::Allow,
17549        warn_since: None,
17550        deny_since: None,
17551    },
17552    Lint {
17553        label: "clippy::suspicious_unary_op_formatting",
17554        description: r##"Checks the formatting of a unary operator on the right hand side
17555of a binary operator. It lints if there is no space between the binary and unary operators,
17556but there is a space between the unary and its operand."##,
17557        default_severity: Severity::Allow,
17558        warn_since: None,
17559        deny_since: None,
17560    },
17561    Lint {
17562        label: "clippy::suspicious_xor_used_as_pow",
17563        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."##,
17564        default_severity: Severity::Allow,
17565        warn_since: None,
17566        deny_since: None,
17567    },
17568    Lint {
17569        label: "clippy::swap_ptr_to_ref",
17570        description: r##"Checks for calls to `core::mem::swap` where either parameter is derived from a pointer"##,
17571        default_severity: Severity::Allow,
17572        warn_since: None,
17573        deny_since: None,
17574    },
17575    Lint {
17576        label: "clippy::tabs_in_doc_comments",
17577        description: r##"Checks doc comments for usage of tab characters."##,
17578        default_severity: Severity::Allow,
17579        warn_since: None,
17580        deny_since: None,
17581    },
17582    Lint {
17583        label: "clippy::temporary_assignment",
17584        description: r##"Checks for construction of a structure or tuple just to
17585assign a value in it."##,
17586        default_severity: Severity::Allow,
17587        warn_since: None,
17588        deny_since: None,
17589    },
17590    Lint {
17591        label: "clippy::test_attr_in_doctest",
17592        description: r##"Checks for `#[test]` in doctests unless they are marked with
17593either `ignore`, `no_run` or `compile_fail`."##,
17594        default_severity: Severity::Allow,
17595        warn_since: None,
17596        deny_since: None,
17597    },
17598    Lint {
17599        label: "clippy::tests_outside_test_module",
17600        description: r##"Triggers when a testing function (marked with the `#[test]` attribute) isn't inside a testing module
17601(marked with `#[cfg(test)]`)."##,
17602        default_severity: Severity::Allow,
17603        warn_since: None,
17604        deny_since: None,
17605    },
17606    Lint {
17607        label: "clippy::to_digit_is_some",
17608        description: r##"Checks for `.to_digit(..).is_some()` on `char`s."##,
17609        default_severity: Severity::Allow,
17610        warn_since: None,
17611        deny_since: None,
17612    },
17613    Lint {
17614        label: "clippy::to_string_in_format_args",
17615        description: r##"Checks for [`ToString::to_string`](https://doc.rust-lang.org/std/string/trait.ToString.html#tymethod.to_string)
17616applied to a type that implements [`Display`](https://doc.rust-lang.org/std/fmt/trait.Display.html)
17617in a macro that does formatting."##,
17618        default_severity: Severity::Allow,
17619        warn_since: None,
17620        deny_since: None,
17621    },
17622    Lint {
17623        label: "clippy::to_string_trait_impl",
17624        description: r##"Checks for direct implementations of `ToString`."##,
17625        default_severity: Severity::Allow,
17626        warn_since: None,
17627        deny_since: None,
17628    },
17629    Lint {
17630        label: "clippy::todo",
17631        description: r##"Checks for usage of `todo!`."##,
17632        default_severity: Severity::Allow,
17633        warn_since: None,
17634        deny_since: None,
17635    },
17636    Lint {
17637        label: "clippy::too_long_first_doc_paragraph",
17638        description: r##"Checks if the first line in the documentation of items listed in module page is too long."##,
17639        default_severity: Severity::Allow,
17640        warn_since: None,
17641        deny_since: None,
17642    },
17643    Lint {
17644        label: "clippy::too_many_arguments",
17645        description: r##"Checks for functions with too many parameters."##,
17646        default_severity: Severity::Allow,
17647        warn_since: None,
17648        deny_since: None,
17649    },
17650    Lint {
17651        label: "clippy::too_many_lines",
17652        description: r##"Checks for functions with a large amount of lines."##,
17653        default_severity: Severity::Allow,
17654        warn_since: None,
17655        deny_since: None,
17656    },
17657    Lint {
17658        label: "clippy::toplevel_ref_arg",
17659        description: r##"Checks for function arguments and let bindings denoted as
17660`ref`."##,
17661        default_severity: Severity::Allow,
17662        warn_since: None,
17663        deny_since: None,
17664    },
17665    Lint {
17666        label: "clippy::trailing_empty_array",
17667        description: r##"Displays a warning when a struct with a trailing zero-sized array is declared without a `repr` attribute."##,
17668        default_severity: Severity::Allow,
17669        warn_since: None,
17670        deny_since: None,
17671    },
17672    Lint {
17673        label: "clippy::trait_duplication_in_bounds",
17674        description: r##"Checks for cases where generics or trait objects are being used and multiple
17675syntax specifications for trait bounds are used simultaneously."##,
17676        default_severity: Severity::Allow,
17677        warn_since: None,
17678        deny_since: None,
17679    },
17680    Lint {
17681        label: "clippy::transmute_bytes_to_str",
17682        description: r##"Checks for transmutes from a `&[u8]` to a `&str`."##,
17683        default_severity: Severity::Allow,
17684        warn_since: None,
17685        deny_since: None,
17686    },
17687    Lint {
17688        label: "clippy::transmute_float_to_int",
17689        description: r##"Checks for transmutes from a float to an integer."##,
17690        default_severity: Severity::Allow,
17691        warn_since: None,
17692        deny_since: None,
17693    },
17694    Lint {
17695        label: "clippy::transmute_int_to_bool",
17696        description: r##"Checks for transmutes from an integer to a `bool`."##,
17697        default_severity: Severity::Allow,
17698        warn_since: None,
17699        deny_since: None,
17700    },
17701    Lint {
17702        label: "clippy::transmute_int_to_char",
17703        description: r##"Checks for transmutes from an integer to a `char`."##,
17704        default_severity: Severity::Allow,
17705        warn_since: None,
17706        deny_since: None,
17707    },
17708    Lint {
17709        label: "clippy::transmute_int_to_float",
17710        description: r##"Checks for transmutes from an integer to a float."##,
17711        default_severity: Severity::Allow,
17712        warn_since: None,
17713        deny_since: None,
17714    },
17715    Lint {
17716        label: "clippy::transmute_int_to_non_zero",
17717        description: r##"Checks for transmutes from `T` to `NonZero<T>`, and suggests the `new_unchecked`
17718method instead."##,
17719        default_severity: Severity::Allow,
17720        warn_since: None,
17721        deny_since: None,
17722    },
17723    Lint {
17724        label: "clippy::transmute_null_to_fn",
17725        description: r##"Checks for null function pointer creation through transmute."##,
17726        default_severity: Severity::Allow,
17727        warn_since: None,
17728        deny_since: None,
17729    },
17730    Lint {
17731        label: "clippy::transmute_num_to_bytes",
17732        description: r##"Checks for transmutes from a number to an array of `u8`"##,
17733        default_severity: Severity::Allow,
17734        warn_since: None,
17735        deny_since: None,
17736    },
17737    Lint {
17738        label: "clippy::transmute_ptr_to_ptr",
17739        description: r##"Checks for transmutes from a pointer to a pointer, or
17740from a reference to a reference."##,
17741        default_severity: Severity::Allow,
17742        warn_since: None,
17743        deny_since: None,
17744    },
17745    Lint {
17746        label: "clippy::transmute_ptr_to_ref",
17747        description: r##"Checks for transmutes from a pointer to a reference."##,
17748        default_severity: Severity::Allow,
17749        warn_since: None,
17750        deny_since: None,
17751    },
17752    Lint {
17753        label: "clippy::transmute_undefined_repr",
17754        description: r##"Checks for transmutes between types which do not have a representation defined relative to
17755each other."##,
17756        default_severity: Severity::Allow,
17757        warn_since: None,
17758        deny_since: None,
17759    },
17760    Lint {
17761        label: "clippy::transmutes_expressible_as_ptr_casts",
17762        description: r##"Checks for transmutes that could be a pointer cast."##,
17763        default_severity: Severity::Allow,
17764        warn_since: None,
17765        deny_since: None,
17766    },
17767    Lint {
17768        label: "clippy::transmuting_null",
17769        description: r##"Checks for transmute calls which would receive a null pointer."##,
17770        default_severity: Severity::Allow,
17771        warn_since: None,
17772        deny_since: None,
17773    },
17774    Lint {
17775        label: "clippy::trim_split_whitespace",
17776        description: r##"Warns about calling `str::trim` (or variants) before `str::split_whitespace`."##,
17777        default_severity: Severity::Allow,
17778        warn_since: None,
17779        deny_since: None,
17780    },
17781    Lint {
17782        label: "clippy::trivial_regex",
17783        description: r##"Checks for trivial [regex](https://crates.io/crates/regex)
17784creation (with `Regex::new`, `RegexBuilder::new`, or `RegexSet::new`)."##,
17785        default_severity: Severity::Allow,
17786        warn_since: None,
17787        deny_since: None,
17788    },
17789    Lint {
17790        label: "clippy::trivially_copy_pass_by_ref",
17791        description: r##"Checks for functions taking arguments by reference, where
17792the argument type is `Copy` and small enough to be more efficient to always
17793pass by value."##,
17794        default_severity: Severity::Allow,
17795        warn_since: None,
17796        deny_since: None,
17797    },
17798    Lint {
17799        label: "clippy::try_err",
17800        description: r##"Checks for usage of `Err(x)?`."##,
17801        default_severity: Severity::Allow,
17802        warn_since: None,
17803        deny_since: None,
17804    },
17805    Lint {
17806        label: "clippy::tuple_array_conversions",
17807        description: r##"Checks for tuple<=>array conversions that are not done with `.into()`."##,
17808        default_severity: Severity::Allow,
17809        warn_since: None,
17810        deny_since: None,
17811    },
17812    Lint {
17813        label: "clippy::type_complexity",
17814        description: r##"Checks for types used in structs, parameters and `let`
17815declarations above a certain complexity threshold."##,
17816        default_severity: Severity::Allow,
17817        warn_since: None,
17818        deny_since: None,
17819    },
17820    Lint {
17821        label: "clippy::type_id_on_box",
17822        description: r##"Looks for calls to `.type_id()` on a `Box<dyn _>`."##,
17823        default_severity: Severity::Allow,
17824        warn_since: None,
17825        deny_since: None,
17826    },
17827    Lint {
17828        label: "clippy::type_repetition_in_bounds",
17829        description: r##"This lint warns about unnecessary type repetitions in trait bounds"##,
17830        default_severity: Severity::Allow,
17831        warn_since: None,
17832        deny_since: None,
17833    },
17834    Lint {
17835        label: "clippy::unchecked_duration_subtraction",
17836        description: r##"Lints subtraction between an `Instant` and a `Duration`."##,
17837        default_severity: Severity::Allow,
17838        warn_since: None,
17839        deny_since: None,
17840    },
17841    Lint {
17842        label: "clippy::unconditional_recursion",
17843        description: r##"Checks that there isn't an infinite recursion in trait
17844implementations."##,
17845        default_severity: Severity::Allow,
17846        warn_since: None,
17847        deny_since: None,
17848    },
17849    Lint {
17850        label: "clippy::undocumented_unsafe_blocks",
17851        description: r##"Checks for `unsafe` blocks and impls without a `// SAFETY: ` comment
17852explaining why the unsafe operations performed inside
17853the block are safe.
17854
17855Note the comment must appear on the line(s) preceding the unsafe block
17856with nothing appearing in between. The following is ok:
17857```rust
17858foo(
17859    // SAFETY:
17860    // This is a valid safety comment
17861    unsafe { *x }
17862)
17863```
17864But neither of these are:
17865```rust
17866// SAFETY:
17867// This is not a valid safety comment
17868foo(
17869    /* SAFETY: Neither is this */ unsafe { *x },
17870);
17871```"##,
17872        default_severity: Severity::Allow,
17873        warn_since: None,
17874        deny_since: None,
17875    },
17876    Lint {
17877        label: "clippy::unicode_not_nfc",
17878        description: r##"Checks for string literals that contain Unicode in a form
17879that is not equal to its
17880[NFC-recomposition](http://www.unicode.org/reports/tr15/#Norm_Forms)."##,
17881        default_severity: Severity::Allow,
17882        warn_since: None,
17883        deny_since: None,
17884    },
17885    Lint {
17886        label: "clippy::unimplemented",
17887        description: r##"Checks for usage of `unimplemented!`."##,
17888        default_severity: Severity::Allow,
17889        warn_since: None,
17890        deny_since: None,
17891    },
17892    Lint {
17893        label: "clippy::uninhabited_references",
17894        description: r##"It detects references to uninhabited types, such as `!` and
17895warns when those are either dereferenced or returned from a function."##,
17896        default_severity: Severity::Allow,
17897        warn_since: None,
17898        deny_since: None,
17899    },
17900    Lint {
17901        label: "clippy::uninit_assumed_init",
17902        description: r##"Checks for `MaybeUninit::uninit().assume_init()`."##,
17903        default_severity: Severity::Allow,
17904        warn_since: None,
17905        deny_since: None,
17906    },
17907    Lint {
17908        label: "clippy::uninit_vec",
17909        description: r##"Checks for `set_len()` call that creates `Vec` with uninitialized elements.
17910This is commonly caused by calling `set_len()` right after allocating or
17911reserving a buffer with `new()`, `default()`, `with_capacity()`, or `reserve()`."##,
17912        default_severity: Severity::Allow,
17913        warn_since: None,
17914        deny_since: None,
17915    },
17916    Lint {
17917        label: "clippy::uninlined_format_args",
17918        description: r##"Detect when a variable is not inlined in a format string,
17919and suggests to inline it."##,
17920        default_severity: Severity::Allow,
17921        warn_since: None,
17922        deny_since: None,
17923    },
17924    Lint {
17925        label: "clippy::unit_arg",
17926        description: r##"Checks for passing a unit value as an argument to a function without using a
17927unit literal (`()`)."##,
17928        default_severity: Severity::Allow,
17929        warn_since: None,
17930        deny_since: None,
17931    },
17932    Lint {
17933        label: "clippy::unit_cmp",
17934        description: r##"Checks for comparisons to unit. This includes all binary
17935comparisons (like `==` and `<`) and asserts."##,
17936        default_severity: Severity::Allow,
17937        warn_since: None,
17938        deny_since: None,
17939    },
17940    Lint {
17941        label: "clippy::unit_hash",
17942        description: r##"Detects `().hash(_)`."##,
17943        default_severity: Severity::Allow,
17944        warn_since: None,
17945        deny_since: None,
17946    },
17947    Lint {
17948        label: "clippy::unit_return_expecting_ord",
17949        description: r##"Checks for functions that expect closures of type
17950Fn(...) -> Ord where the implemented closure returns the unit type.
17951The lint also suggests to remove the semi-colon at the end of the statement if present."##,
17952        default_severity: Severity::Allow,
17953        warn_since: None,
17954        deny_since: None,
17955    },
17956    Lint {
17957        label: "clippy::unnecessary_box_returns",
17958        description: r##"Checks for a return type containing a `Box<T>` where `T` implements `Sized`
17959
17960The lint ignores `Box<T>` where `T` is larger than `unnecessary_box_size`,
17961as returning a large `T` directly may be detrimental to performance."##,
17962        default_severity: Severity::Allow,
17963        warn_since: None,
17964        deny_since: None,
17965    },
17966    Lint {
17967        label: "clippy::unnecessary_cast",
17968        description: r##"Checks for casts to the same type, casts of int literals to integer
17969types, casts of float literals to float types, and casts between raw
17970pointers that don't change type or constness."##,
17971        default_severity: Severity::Allow,
17972        warn_since: None,
17973        deny_since: None,
17974    },
17975    Lint {
17976        label: "clippy::unnecessary_clippy_cfg",
17977        description: r##"Checks for `#[cfg_attr(clippy, allow(clippy::lint))]`
17978and suggests to replace it with `#[allow(clippy::lint)]`."##,
17979        default_severity: Severity::Allow,
17980        warn_since: None,
17981        deny_since: None,
17982    },
17983    Lint {
17984        label: "clippy::unnecessary_fallible_conversions",
17985        description: r##"Checks for calls to `TryInto::try_into` and `TryFrom::try_from` when their infallible counterparts
17986could be used."##,
17987        default_severity: Severity::Allow,
17988        warn_since: None,
17989        deny_since: None,
17990    },
17991    Lint {
17992        label: "clippy::unnecessary_filter_map",
17993        description: r##"Checks for `filter_map` calls that could be replaced by `filter` or `map`.
17994More specifically it checks if the closure provided is only performing one of the
17995filter or map operations and suggests the appropriate option."##,
17996        default_severity: Severity::Allow,
17997        warn_since: None,
17998        deny_since: None,
17999    },
18000    Lint {
18001        label: "clippy::unnecessary_find_map",
18002        description: r##"Checks for `find_map` calls that could be replaced by `find` or `map`. More
18003specifically it checks if the closure provided is only performing one of the
18004find or map operations and suggests the appropriate option."##,
18005        default_severity: Severity::Allow,
18006        warn_since: None,
18007        deny_since: None,
18008    },
18009    Lint {
18010        label: "clippy::unnecessary_first_then_check",
18011        description: r##"Checks the usage of `.first().is_some()` or `.first().is_none()` to check if a slice is
18012empty."##,
18013        default_severity: Severity::Allow,
18014        warn_since: None,
18015        deny_since: None,
18016    },
18017    Lint {
18018        label: "clippy::unnecessary_fold",
18019        description: r##"Checks for usage of `fold` when a more succinct alternative exists.
18020Specifically, this checks for `fold`s which could be replaced by `any`, `all`,
18021`sum` or `product`."##,
18022        default_severity: Severity::Allow,
18023        warn_since: None,
18024        deny_since: None,
18025    },
18026    Lint {
18027        label: "clippy::unnecessary_get_then_check",
18028        description: r##"Checks the usage of `.get().is_some()` or `.get().is_none()` on std map types."##,
18029        default_severity: Severity::Allow,
18030        warn_since: None,
18031        deny_since: None,
18032    },
18033    Lint {
18034        label: "clippy::unnecessary_join",
18035        description: r##"Checks for usage of `.collect::<Vec<String>>().join()` on iterators."##,
18036        default_severity: Severity::Allow,
18037        warn_since: None,
18038        deny_since: None,
18039    },
18040    Lint {
18041        label: "clippy::unnecessary_lazy_evaluations",
18042        description: r##"As the counterpart to `or_fun_call`, this lint looks for unnecessary
18043lazily evaluated closures on `Option` and `Result`.
18044
18045This lint suggests changing the following functions, when eager evaluation results in
18046simpler code:
18047 - `unwrap_or_else` to `unwrap_or`
18048 - `and_then` to `and`
18049 - `or_else` to `or`
18050 - `get_or_insert_with` to `get_or_insert`
18051 - `ok_or_else` to `ok_or`
18052 - `then` to `then_some` (for msrv >= 1.62.0)"##,
18053        default_severity: Severity::Allow,
18054        warn_since: None,
18055        deny_since: None,
18056    },
18057    Lint {
18058        label: "clippy::unnecessary_literal_unwrap",
18059        description: r##"Checks for `.unwrap()` related calls on `Result`s and `Option`s that are constructed."##,
18060        default_severity: Severity::Allow,
18061        warn_since: None,
18062        deny_since: None,
18063    },
18064    Lint {
18065        label: "clippy::unnecessary_map_on_constructor",
18066        description: r##"Suggests removing the use of a `map()` (or `map_err()`) method when an `Option` or `Result`
18067is being constructed."##,
18068        default_severity: Severity::Allow,
18069        warn_since: None,
18070        deny_since: None,
18071    },
18072    Lint {
18073        label: "clippy::unnecessary_min_or_max",
18074        description: r##"Checks for unnecessary calls to `min()` or `max()` in the following cases
18075- Either both side is constant
18076- One side is clearly larger than the other, like i32::MIN and an i32 variable"##,
18077        default_severity: Severity::Allow,
18078        warn_since: None,
18079        deny_since: None,
18080    },
18081    Lint {
18082        label: "clippy::unnecessary_mut_passed",
18083        description: r##"Detects passing a mutable reference to a function that only
18084requires an immutable reference."##,
18085        default_severity: Severity::Allow,
18086        warn_since: None,
18087        deny_since: None,
18088    },
18089    Lint {
18090        label: "clippy::unnecessary_operation",
18091        description: r##"Checks for expression statements that can be reduced to a
18092sub-expression."##,
18093        default_severity: Severity::Allow,
18094        warn_since: None,
18095        deny_since: None,
18096    },
18097    Lint {
18098        label: "clippy::unnecessary_owned_empty_strings",
18099        description: r##"Detects cases of owned empty strings being passed as an argument to a function expecting `&str`"##,
18100        default_severity: Severity::Allow,
18101        warn_since: None,
18102        deny_since: None,
18103    },
18104    Lint {
18105        label: "clippy::unnecessary_result_map_or_else",
18106        description: r##"Checks for usage of `.map_or_else()` map closure for `Result` type."##,
18107        default_severity: Severity::Allow,
18108        warn_since: None,
18109        deny_since: None,
18110    },
18111    Lint {
18112        label: "clippy::unnecessary_safety_comment",
18113        description: r##"Checks for `// SAFETY: ` comments on safe code."##,
18114        default_severity: Severity::Allow,
18115        warn_since: None,
18116        deny_since: None,
18117    },
18118    Lint {
18119        label: "clippy::unnecessary_safety_doc",
18120        description: r##"Checks for the doc comments of publicly visible
18121safe functions and traits and warns if there is a `# Safety` section."##,
18122        default_severity: Severity::Allow,
18123        warn_since: None,
18124        deny_since: None,
18125    },
18126    Lint {
18127        label: "clippy::unnecessary_self_imports",
18128        description: r##"Checks for imports ending in `::{self}`."##,
18129        default_severity: Severity::Allow,
18130        warn_since: None,
18131        deny_since: None,
18132    },
18133    Lint {
18134        label: "clippy::unnecessary_sort_by",
18135        description: r##"Checks for usage of `Vec::sort_by` passing in a closure
18136which compares the two arguments, either directly or indirectly."##,
18137        default_severity: Severity::Allow,
18138        warn_since: None,
18139        deny_since: None,
18140    },
18141    Lint {
18142        label: "clippy::unnecessary_struct_initialization",
18143        description: r##"Checks for initialization of an identical `struct` from another instance
18144of the type, either by copying a base without setting any field or by
18145moving all fields individually."##,
18146        default_severity: Severity::Allow,
18147        warn_since: None,
18148        deny_since: None,
18149    },
18150    Lint {
18151        label: "clippy::unnecessary_to_owned",
18152        description: r##"Checks for unnecessary calls to [`ToOwned::to_owned`](https://doc.rust-lang.org/std/borrow/trait.ToOwned.html#tymethod.to_owned)
18153and other `to_owned`-like functions."##,
18154        default_severity: Severity::Allow,
18155        warn_since: None,
18156        deny_since: None,
18157    },
18158    Lint {
18159        label: "clippy::unnecessary_unwrap",
18160        description: r##"Checks for calls of `unwrap[_err]()` that cannot fail."##,
18161        default_severity: Severity::Allow,
18162        warn_since: None,
18163        deny_since: None,
18164    },
18165    Lint {
18166        label: "clippy::unnecessary_wraps",
18167        description: r##"Checks for private functions that only return `Ok` or `Some`."##,
18168        default_severity: Severity::Allow,
18169        warn_since: None,
18170        deny_since: None,
18171    },
18172    Lint {
18173        label: "clippy::unneeded_field_pattern",
18174        description: r##"Checks for structure field patterns bound to wildcards."##,
18175        default_severity: Severity::Allow,
18176        warn_since: None,
18177        deny_since: None,
18178    },
18179    Lint {
18180        label: "clippy::unneeded_wildcard_pattern",
18181        description: r##"Checks for tuple patterns with a wildcard
18182pattern (`_`) is next to a rest pattern (`..`).
18183
18184_NOTE_: While `_, ..` means there is at least one element left, `..`
18185means there are 0 or more elements left. This can make a difference
18186when refactoring, but shouldn't result in errors in the refactored code,
18187since the wildcard pattern isn't used anyway."##,
18188        default_severity: Severity::Allow,
18189        warn_since: None,
18190        deny_since: None,
18191    },
18192    Lint {
18193        label: "clippy::unnested_or_patterns",
18194        description: r##"Checks for unnested or-patterns, e.g., `Some(0) | Some(2)` and
18195suggests replacing the pattern with a nested one, `Some(0 | 2)`.
18196
18197Another way to think of this is that it rewrites patterns in
18198*disjunctive normal form (DNF)* into *conjunctive normal form (CNF)*."##,
18199        default_severity: Severity::Allow,
18200        warn_since: None,
18201        deny_since: None,
18202    },
18203    Lint {
18204        label: "clippy::unreachable",
18205        description: r##"Checks for usage of `unreachable!`."##,
18206        default_severity: Severity::Allow,
18207        warn_since: None,
18208        deny_since: None,
18209    },
18210    Lint {
18211        label: "clippy::unreadable_literal",
18212        description: r##"Warns if a long integral or floating-point constant does
18213not contain underscores."##,
18214        default_severity: Severity::Allow,
18215        warn_since: None,
18216        deny_since: None,
18217    },
18218    Lint {
18219        label: "clippy::unsafe_derive_deserialize",
18220        description: r##"Checks for deriving `serde::Deserialize` on a type that
18221has methods using `unsafe`."##,
18222        default_severity: Severity::Allow,
18223        warn_since: None,
18224        deny_since: None,
18225    },
18226    Lint {
18227        label: "clippy::unsafe_removed_from_name",
18228        description: r##"Checks for imports that remove unsafe from an item's
18229name."##,
18230        default_severity: Severity::Allow,
18231        warn_since: None,
18232        deny_since: None,
18233    },
18234    Lint {
18235        label: "clippy::unsafe_vector_initialization",
18236        description: r##"Nothing. This lint has been deprecated"##,
18237        default_severity: Severity::Allow,
18238        warn_since: None,
18239        deny_since: None,
18240    },
18241    Lint {
18242        label: "clippy::unseparated_literal_suffix",
18243        description: r##"Warns if literal suffixes are not separated by an
18244underscore.
18245To enforce unseparated literal suffix style,
18246see the `separated_literal_suffix` lint."##,
18247        default_severity: Severity::Allow,
18248        warn_since: None,
18249        deny_since: None,
18250    },
18251    Lint {
18252        label: "clippy::unsound_collection_transmute",
18253        description: r##"Checks for transmutes between collections whose
18254types have different ABI, size or alignment."##,
18255        default_severity: Severity::Allow,
18256        warn_since: None,
18257        deny_since: None,
18258    },
18259    Lint {
18260        label: "clippy::unstable_as_mut_slice",
18261        description: r##"Nothing. This lint has been deprecated"##,
18262        default_severity: Severity::Allow,
18263        warn_since: None,
18264        deny_since: None,
18265    },
18266    Lint {
18267        label: "clippy::unstable_as_slice",
18268        description: r##"Nothing. This lint has been deprecated"##,
18269        default_severity: Severity::Allow,
18270        warn_since: None,
18271        deny_since: None,
18272    },
18273    Lint {
18274        label: "clippy::unused_async",
18275        description: r##"Checks for functions that are declared `async` but have no `.await`s inside of them."##,
18276        default_severity: Severity::Allow,
18277        warn_since: None,
18278        deny_since: None,
18279    },
18280    Lint {
18281        label: "clippy::unused_collect",
18282        description: r##"Nothing. This lint has been deprecated"##,
18283        default_severity: Severity::Allow,
18284        warn_since: None,
18285        deny_since: None,
18286    },
18287    Lint {
18288        label: "clippy::unused_enumerate_index",
18289        description: r##"Checks for uses of the `enumerate` method where the index is unused (`_`)"##,
18290        default_severity: Severity::Allow,
18291        warn_since: None,
18292        deny_since: None,
18293    },
18294    Lint {
18295        label: "clippy::unused_format_specs",
18296        description: r##"Detects [formatting parameters] that have no effect on the output of
18297`format!()`, `println!()` or similar macros."##,
18298        default_severity: Severity::Allow,
18299        warn_since: None,
18300        deny_since: None,
18301    },
18302    Lint {
18303        label: "clippy::unused_io_amount",
18304        description: r##"Checks for unused written/read amount."##,
18305        default_severity: Severity::Allow,
18306        warn_since: None,
18307        deny_since: None,
18308    },
18309    Lint {
18310        label: "clippy::unused_peekable",
18311        description: r##"Checks for the creation of a `peekable` iterator that is never `.peek()`ed"##,
18312        default_severity: Severity::Allow,
18313        warn_since: None,
18314        deny_since: None,
18315    },
18316    Lint {
18317        label: "clippy::unused_result_ok",
18318        description: r##"Checks for calls to `Result::ok()` without using the returned `Option`."##,
18319        default_severity: Severity::Allow,
18320        warn_since: None,
18321        deny_since: None,
18322    },
18323    Lint {
18324        label: "clippy::unused_rounding",
18325        description: r##"Detects cases where a whole-number literal float is being rounded, using
18326the `floor`, `ceil`, or `round` methods."##,
18327        default_severity: Severity::Allow,
18328        warn_since: None,
18329        deny_since: None,
18330    },
18331    Lint {
18332        label: "clippy::unused_self",
18333        description: r##"Checks methods that contain a `self` argument but don't use it"##,
18334        default_severity: Severity::Allow,
18335        warn_since: None,
18336        deny_since: None,
18337    },
18338    Lint {
18339        label: "clippy::unused_trait_names",
18340        description: r##"Checks for `use Trait` where the Trait is only used for its methods and not referenced by a path directly."##,
18341        default_severity: Severity::Allow,
18342        warn_since: None,
18343        deny_since: None,
18344    },
18345    Lint {
18346        label: "clippy::unused_unit",
18347        description: r##"Checks for unit (`()`) expressions that can be removed."##,
18348        default_severity: Severity::Allow,
18349        warn_since: None,
18350        deny_since: None,
18351    },
18352    Lint {
18353        label: "clippy::unusual_byte_groupings",
18354        description: r##"Warns if hexadecimal or binary literals are not grouped
18355by nibble or byte."##,
18356        default_severity: Severity::Allow,
18357        warn_since: None,
18358        deny_since: None,
18359    },
18360    Lint {
18361        label: "clippy::unwrap_in_result",
18362        description: r##"Checks for functions of type `Result` that contain `expect()` or `unwrap()`"##,
18363        default_severity: Severity::Allow,
18364        warn_since: None,
18365        deny_since: None,
18366    },
18367    Lint {
18368        label: "clippy::unwrap_or_default",
18369        description: r##"Checks for usages of the following functions with an argument that constructs a default value
18370(e.g., `Default::default` or `String::new`):
18371- `unwrap_or`
18372- `unwrap_or_else`
18373- `or_insert`
18374- `or_insert_with`"##,
18375        default_severity: Severity::Allow,
18376        warn_since: None,
18377        deny_since: None,
18378    },
18379    Lint {
18380        label: "clippy::unwrap_used",
18381        description: r##"Checks for `.unwrap()` or `.unwrap_err()` calls on `Result`s and `.unwrap()` call on `Option`s."##,
18382        default_severity: Severity::Allow,
18383        warn_since: None,
18384        deny_since: None,
18385    },
18386    Lint {
18387        label: "clippy::upper_case_acronyms",
18388        description: r##"Checks for fully capitalized names and optionally names containing a capitalized acronym."##,
18389        default_severity: Severity::Allow,
18390        warn_since: None,
18391        deny_since: None,
18392    },
18393    Lint {
18394        label: "clippy::use_debug",
18395        description: r##"Checks for usage of `Debug` formatting. The purpose of this
18396lint is to catch debugging remnants."##,
18397        default_severity: Severity::Allow,
18398        warn_since: None,
18399        deny_since: None,
18400    },
18401    Lint {
18402        label: "clippy::use_self",
18403        description: r##"Checks for unnecessary repetition of structure name when a
18404replacement with `Self` is applicable."##,
18405        default_severity: Severity::Allow,
18406        warn_since: None,
18407        deny_since: None,
18408    },
18409    Lint {
18410        label: "clippy::used_underscore_binding",
18411        description: r##"Checks for the use of bindings with a single leading
18412underscore."##,
18413        default_severity: Severity::Allow,
18414        warn_since: None,
18415        deny_since: None,
18416    },
18417    Lint {
18418        label: "clippy::used_underscore_items",
18419        description: r##"Checks for the use of item with a single leading
18420underscore."##,
18421        default_severity: Severity::Allow,
18422        warn_since: None,
18423        deny_since: None,
18424    },
18425    Lint {
18426        label: "clippy::useless_asref",
18427        description: r##"Checks for usage of `.as_ref()` or `.as_mut()` where the
18428types before and after the call are the same."##,
18429        default_severity: Severity::Allow,
18430        warn_since: None,
18431        deny_since: None,
18432    },
18433    Lint {
18434        label: "clippy::useless_attribute",
18435        description: r##"Checks for `extern crate` and `use` items annotated with
18436lint attributes.
18437
18438This lint permits lint attributes for lints emitted on the items themself.
18439For `use` items these lints are:
18440* ambiguous_glob_reexports
18441* dead_code
18442* deprecated
18443* hidden_glob_reexports
18444* unreachable_pub
18445* unused
18446* unused_braces
18447* unused_import_braces
18448* clippy::disallowed_types
18449* clippy::enum_glob_use
18450* clippy::macro_use_imports
18451* clippy::module_name_repetitions
18452* clippy::redundant_pub_crate
18453* clippy::single_component_path_imports
18454* clippy::unsafe_removed_from_name
18455* clippy::wildcard_imports
18456
18457For `extern crate` items these lints are:
18458* `unused_imports` on items with `#[macro_use]`"##,
18459        default_severity: Severity::Allow,
18460        warn_since: None,
18461        deny_since: None,
18462    },
18463    Lint {
18464        label: "clippy::useless_conversion",
18465        description: r##"Checks for `Into`, `TryInto`, `From`, `TryFrom`, or `IntoIter` calls
18466which uselessly convert to the same type."##,
18467        default_severity: Severity::Allow,
18468        warn_since: None,
18469        deny_since: None,
18470    },
18471    Lint {
18472        label: "clippy::useless_format",
18473        description: r##"Checks for the use of `format!(string literal with no
18474argument)` and `format!({}, foo)` where `foo` is a string."##,
18475        default_severity: Severity::Allow,
18476        warn_since: None,
18477        deny_since: None,
18478    },
18479    Lint {
18480        label: "clippy::useless_let_if_seq",
18481        description: r##"Checks for variable declarations immediately followed by a
18482conditional affectation."##,
18483        default_severity: Severity::Allow,
18484        warn_since: None,
18485        deny_since: None,
18486    },
18487    Lint {
18488        label: "clippy::useless_transmute",
18489        description: r##"Checks for transmutes to the original type of the object
18490and transmutes that could be a cast."##,
18491        default_severity: Severity::Allow,
18492        warn_since: None,
18493        deny_since: None,
18494    },
18495    Lint {
18496        label: "clippy::useless_vec",
18497        description: r##"Checks for usage of `vec![..]` when using `[..]` would
18498be possible."##,
18499        default_severity: Severity::Allow,
18500        warn_since: None,
18501        deny_since: None,
18502    },
18503    Lint {
18504        label: "clippy::vec_box",
18505        description: r##"Checks for usage of `Vec<Box<T>>` where T: Sized anywhere in the code.
18506Check the [Box documentation](https://doc.rust-lang.org/std/boxed/index.html) for more information."##,
18507        default_severity: Severity::Allow,
18508        warn_since: None,
18509        deny_since: None,
18510    },
18511    Lint {
18512        label: "clippy::vec_init_then_push",
18513        description: r##"Checks for calls to `push` immediately after creating a new `Vec`.
18514
18515If the `Vec` is created using `with_capacity` this will only lint if the capacity is a
18516constant and the number of pushes is greater than or equal to the initial capacity.
18517
18518If the `Vec` is extended after the initial sequence of pushes and it was default initialized
18519then this will only lint after there were at least four pushes. This number may change in
18520the future."##,
18521        default_severity: Severity::Allow,
18522        warn_since: None,
18523        deny_since: None,
18524    },
18525    Lint {
18526        label: "clippy::vec_resize_to_zero",
18527        description: r##"Finds occurrences of `Vec::resize(0, an_int)`"##,
18528        default_severity: Severity::Allow,
18529        warn_since: None,
18530        deny_since: None,
18531    },
18532    Lint {
18533        label: "clippy::verbose_bit_mask",
18534        description: r##"Checks for bit masks that can be replaced by a call
18535to `trailing_zeros`"##,
18536        default_severity: Severity::Allow,
18537        warn_since: None,
18538        deny_since: None,
18539    },
18540    Lint {
18541        label: "clippy::verbose_file_reads",
18542        description: r##"Checks for usage of File::read_to_end and File::read_to_string."##,
18543        default_severity: Severity::Allow,
18544        warn_since: None,
18545        deny_since: None,
18546    },
18547    Lint {
18548        label: "clippy::waker_clone_wake",
18549        description: r##"Checks for usage of `waker.clone().wake()`"##,
18550        default_severity: Severity::Allow,
18551        warn_since: None,
18552        deny_since: None,
18553    },
18554    Lint {
18555        label: "clippy::while_float",
18556        description: r##"Checks for while loops comparing floating point values."##,
18557        default_severity: Severity::Allow,
18558        warn_since: None,
18559        deny_since: None,
18560    },
18561    Lint {
18562        label: "clippy::while_immutable_condition",
18563        description: r##"Checks whether variables used within while loop condition
18564can be (and are) mutated in the body."##,
18565        default_severity: Severity::Allow,
18566        warn_since: None,
18567        deny_since: None,
18568    },
18569    Lint {
18570        label: "clippy::while_let_loop",
18571        description: r##"Detects `loop + match` combinations that are easier
18572written as a `while let` loop."##,
18573        default_severity: Severity::Allow,
18574        warn_since: None,
18575        deny_since: None,
18576    },
18577    Lint {
18578        label: "clippy::while_let_on_iterator",
18579        description: r##"Checks for `while let` expressions on iterators."##,
18580        default_severity: Severity::Allow,
18581        warn_since: None,
18582        deny_since: None,
18583    },
18584    Lint {
18585        label: "clippy::wildcard_dependencies",
18586        description: r##"Checks for wildcard dependencies in the `Cargo.toml`."##,
18587        default_severity: Severity::Allow,
18588        warn_since: None,
18589        deny_since: None,
18590    },
18591    Lint {
18592        label: "clippy::wildcard_enum_match_arm",
18593        description: r##"Checks for wildcard enum matches using `_`."##,
18594        default_severity: Severity::Allow,
18595        warn_since: None,
18596        deny_since: None,
18597    },
18598    Lint {
18599        label: "clippy::wildcard_imports",
18600        description: r##"Checks for wildcard imports `use _::*`."##,
18601        default_severity: Severity::Allow,
18602        warn_since: None,
18603        deny_since: None,
18604    },
18605    Lint {
18606        label: "clippy::wildcard_in_or_patterns",
18607        description: r##"Checks for wildcard pattern used with others patterns in same match arm."##,
18608        default_severity: Severity::Allow,
18609        warn_since: None,
18610        deny_since: None,
18611    },
18612    Lint {
18613        label: "clippy::write_literal",
18614        description: r##"This lint warns about the use of literals as `write!`/`writeln!` args."##,
18615        default_severity: Severity::Allow,
18616        warn_since: None,
18617        deny_since: None,
18618    },
18619    Lint {
18620        label: "clippy::write_with_newline",
18621        description: r##"This lint warns when you use `write!()` with a format
18622string that
18623ends in a newline."##,
18624        default_severity: Severity::Allow,
18625        warn_since: None,
18626        deny_since: None,
18627    },
18628    Lint {
18629        label: "clippy::writeln_empty_string",
18630        description: r##"This lint warns when you use `writeln!(buf, )` to
18631print a newline."##,
18632        default_severity: Severity::Allow,
18633        warn_since: None,
18634        deny_since: None,
18635    },
18636    Lint {
18637        label: "clippy::wrong_pub_self_convention",
18638        description: r##"Nothing. This lint has been deprecated"##,
18639        default_severity: Severity::Allow,
18640        warn_since: None,
18641        deny_since: None,
18642    },
18643    Lint {
18644        label: "clippy::wrong_self_convention",
18645        description: r##"Checks for methods with certain name prefixes or suffixes, and which
18646do not adhere to standard conventions regarding how `self` is taken.
18647The actual rules are:
18648
18649|Prefix |Postfix     |`self` taken                   | `self` type  |
18650|-------|------------|-------------------------------|--------------|
18651|`as_`  | none       |`&self` or `&mut self`         | any          |
18652|`from_`| none       | none                          | any          |
18653|`into_`| none       |`self`                         | any          |
18654|`is_`  | none       |`&mut self` or `&self` or none | any          |
18655|`to_`  | `_mut`     |`&mut self`                    | any          |
18656|`to_`  | not `_mut` |`self`                         | `Copy`       |
18657|`to_`  | not `_mut` |`&self`                        | not `Copy`   |
18658
18659Note: Clippy doesn't trigger methods with `to_` prefix in:
18660- Traits definition.
18661Clippy can not tell if a type that implements a trait is `Copy` or not.
18662- Traits implementation, when `&self` is taken.
18663The method signature is controlled by the trait and often `&self` is required for all types that implement the trait
18664(see e.g. the `std::string::ToString` trait).
18665
18666Clippy allows `Pin<&Self>` and `Pin<&mut Self>` if `&self` and `&mut self` is required.
18667
18668Please find more info here:
18669https://rust-lang.github.io/api-guidelines/naming.html#ad-hoc-conversions-follow-as_-to_-into_-conventions-c-conv"##,
18670        default_severity: Severity::Allow,
18671        warn_since: None,
18672        deny_since: None,
18673    },
18674    Lint {
18675        label: "clippy::wrong_transmute",
18676        description: r##"Checks for transmutes that can't ever be correct on any
18677architecture."##,
18678        default_severity: Severity::Allow,
18679        warn_since: None,
18680        deny_since: None,
18681    },
18682    Lint {
18683        label: "clippy::zero_divided_by_zero",
18684        description: r##"Checks for `0.0 / 0.0`."##,
18685        default_severity: Severity::Allow,
18686        warn_since: None,
18687        deny_since: None,
18688    },
18689    Lint {
18690        label: "clippy::zero_prefixed_literal",
18691        description: r##"Warns if an integral constant literal starts with `0`."##,
18692        default_severity: Severity::Allow,
18693        warn_since: None,
18694        deny_since: None,
18695    },
18696    Lint {
18697        label: "clippy::zero_ptr",
18698        description: r##"Catch casts from `0` to some pointer type"##,
18699        default_severity: Severity::Allow,
18700        warn_since: None,
18701        deny_since: None,
18702    },
18703    Lint {
18704        label: "clippy::zero_repeat_side_effects",
18705        description: r##"Checks for array or vec initializations which call a function or method,
18706but which have a repeat count of zero."##,
18707        default_severity: Severity::Allow,
18708        warn_since: None,
18709        deny_since: None,
18710    },
18711    Lint {
18712        label: "clippy::zero_sized_map_values",
18713        description: r##"Checks for maps with zero-sized value types anywhere in the code."##,
18714        default_severity: Severity::Allow,
18715        warn_since: None,
18716        deny_since: None,
18717    },
18718    Lint {
18719        label: "clippy::zombie_processes",
18720        description: r##"Looks for code that spawns a process but never calls `wait()` on the child."##,
18721        default_severity: Severity::Allow,
18722        warn_since: None,
18723        deny_since: None,
18724    },
18725    Lint {
18726        label: "clippy::zst_offset",
18727        description: r##"Checks for `offset(_)`, `wrapping_`{`add`, `sub`}, etc. on raw pointers to
18728zero-sized types"##,
18729        default_severity: Severity::Allow,
18730        warn_since: None,
18731        deny_since: None,
18732    },
18733];
18734pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
18735    LintGroup {
18736        lint: Lint {
18737            label: "clippy::cargo",
18738            description: r##"lint group for: clippy::cargo_common_metadata, clippy::multiple_crate_versions, clippy::negative_feature_names, clippy::redundant_feature_names, clippy::wildcard_dependencies"##,
18739            default_severity: Severity::Allow,
18740            warn_since: None,
18741            deny_since: None,
18742        },
18743        children: &[
18744            "clippy::cargo_common_metadata",
18745            "clippy::multiple_crate_versions",
18746            "clippy::negative_feature_names",
18747            "clippy::redundant_feature_names",
18748            "clippy::wildcard_dependencies",
18749        ],
18750    },
18751    LintGroup {
18752        lint: Lint {
18753            label: "clippy::complexity",
18754            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"##,
18755            default_severity: Severity::Allow,
18756            warn_since: None,
18757            deny_since: None,
18758        },
18759        children: &[
18760            "clippy::bind_instead_of_map",
18761            "clippy::bool_comparison",
18762            "clippy::borrow_deref_ref",
18763            "clippy::borrowed_box",
18764            "clippy::bytes_count_to_len",
18765            "clippy::char_lit_as_u8",
18766            "clippy::clone_on_copy",
18767            "clippy::crosspointer_transmute",
18768            "clippy::default_constructed_unit_structs",
18769            "clippy::deprecated_cfg_attr",
18770            "clippy::deref_addrof",
18771            "clippy::derivable_impls",
18772            "clippy::diverging_sub_expression",
18773            "clippy::double_comparisons",
18774            "clippy::double_parens",
18775            "clippy::duration_subsec",
18776            "clippy::excessive_nesting",
18777            "clippy::explicit_auto_deref",
18778            "clippy::explicit_counter_loop",
18779            "clippy::explicit_write",
18780            "clippy::extra_unused_lifetimes",
18781            "clippy::extra_unused_type_parameters",
18782            "clippy::filter_map_identity",
18783            "clippy::filter_next",
18784            "clippy::flat_map_identity",
18785            "clippy::get_last_with_len",
18786            "clippy::identity_op",
18787            "clippy::implied_bounds_in_impls",
18788            "clippy::inspect_for_each",
18789            "clippy::int_plus_one",
18790            "clippy::iter_count",
18791            "clippy::iter_kv_map",
18792            "clippy::let_with_type_underscore",
18793            "clippy::manual_c_str_literals",
18794            "clippy::manual_clamp",
18795            "clippy::manual_div_ceil",
18796            "clippy::manual_filter",
18797            "clippy::manual_filter_map",
18798            "clippy::manual_find",
18799            "clippy::manual_find_map",
18800            "clippy::manual_flatten",
18801            "clippy::manual_hash_one",
18802            "clippy::manual_inspect",
18803            "clippy::manual_is_power_of_two",
18804            "clippy::manual_main_separator_str",
18805            "clippy::manual_range_patterns",
18806            "clippy::manual_rem_euclid",
18807            "clippy::manual_slice_size_calculation",
18808            "clippy::manual_split_once",
18809            "clippy::manual_strip",
18810            "clippy::manual_swap",
18811            "clippy::manual_unwrap_or",
18812            "clippy::map_flatten",
18813            "clippy::map_identity",
18814            "clippy::match_as_ref",
18815            "clippy::match_single_binding",
18816            "clippy::needless_arbitrary_self_type",
18817            "clippy::needless_bool",
18818            "clippy::needless_bool_assign",
18819            "clippy::needless_borrowed_reference",
18820            "clippy::needless_if",
18821            "clippy::needless_lifetimes",
18822            "clippy::needless_match",
18823            "clippy::needless_option_as_deref",
18824            "clippy::needless_option_take",
18825            "clippy::needless_question_mark",
18826            "clippy::needless_splitn",
18827            "clippy::needless_update",
18828            "clippy::neg_cmp_op_on_partial_ord",
18829            "clippy::no_effect",
18830            "clippy::nonminimal_bool",
18831            "clippy::only_used_in_recursion",
18832            "clippy::option_as_ref_deref",
18833            "clippy::option_filter_map",
18834            "clippy::option_map_unit_fn",
18835            "clippy::or_then_unwrap",
18836            "clippy::partialeq_ne_impl",
18837            "clippy::precedence",
18838            "clippy::ptr_offset_with_cast",
18839            "clippy::range_zip_with_len",
18840            "clippy::redundant_as_str",
18841            "clippy::redundant_async_block",
18842            "clippy::redundant_at_rest_pattern",
18843            "clippy::redundant_closure_call",
18844            "clippy::redundant_guards",
18845            "clippy::redundant_slicing",
18846            "clippy::repeat_once",
18847            "clippy::reserve_after_initialization",
18848            "clippy::result_filter_map",
18849            "clippy::result_map_unit_fn",
18850            "clippy::search_is_some",
18851            "clippy::seek_from_current",
18852            "clippy::seek_to_start_instead_of_rewind",
18853            "clippy::short_circuit_statement",
18854            "clippy::single_element_loop",
18855            "clippy::skip_while_next",
18856            "clippy::string_from_utf8_as_bytes",
18857            "clippy::strlen_on_c_strings",
18858            "clippy::temporary_assignment",
18859            "clippy::too_many_arguments",
18860            "clippy::transmute_bytes_to_str",
18861            "clippy::transmute_float_to_int",
18862            "clippy::transmute_int_to_bool",
18863            "clippy::transmute_int_to_char",
18864            "clippy::transmute_int_to_float",
18865            "clippy::transmute_int_to_non_zero",
18866            "clippy::transmute_num_to_bytes",
18867            "clippy::transmute_ptr_to_ref",
18868            "clippy::transmutes_expressible_as_ptr_casts",
18869            "clippy::type_complexity",
18870            "clippy::unit_arg",
18871            "clippy::unnecessary_cast",
18872            "clippy::unnecessary_filter_map",
18873            "clippy::unnecessary_find_map",
18874            "clippy::unnecessary_first_then_check",
18875            "clippy::unnecessary_literal_unwrap",
18876            "clippy::unnecessary_map_on_constructor",
18877            "clippy::unnecessary_min_or_max",
18878            "clippy::unnecessary_operation",
18879            "clippy::unnecessary_sort_by",
18880            "clippy::unnecessary_unwrap",
18881            "clippy::unneeded_wildcard_pattern",
18882            "clippy::unused_format_specs",
18883            "clippy::useless_asref",
18884            "clippy::useless_conversion",
18885            "clippy::useless_format",
18886            "clippy::useless_transmute",
18887            "clippy::vec_box",
18888            "clippy::while_let_loop",
18889            "clippy::wildcard_in_or_patterns",
18890            "clippy::zero_divided_by_zero",
18891            "clippy::zero_prefixed_literal",
18892        ],
18893    },
18894    LintGroup {
18895        lint: Lint {
18896            label: "clippy::correctness",
18897            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"##,
18898            default_severity: Severity::Allow,
18899            warn_since: None,
18900            deny_since: None,
18901        },
18902        children: &[
18903            "clippy::absurd_extreme_comparisons",
18904            "clippy::almost_swapped",
18905            "clippy::approx_constant",
18906            "clippy::async_yields_async",
18907            "clippy::bad_bit_mask",
18908            "clippy::cast_slice_different_sizes",
18909            "clippy::deprecated_semver",
18910            "clippy::derive_ord_xor_partial_ord",
18911            "clippy::derived_hash_with_manual_eq",
18912            "clippy::eager_transmute",
18913            "clippy::enum_clike_unportable_variant",
18914            "clippy::eq_op",
18915            "clippy::erasing_op",
18916            "clippy::fn_address_comparisons",
18917            "clippy::if_let_mutex",
18918            "clippy::ifs_same_cond",
18919            "clippy::impl_hash_borrow_with_str_and_bytes",
18920            "clippy::impossible_comparisons",
18921            "clippy::ineffective_bit_mask",
18922            "clippy::infinite_iter",
18923            "clippy::inherent_to_string_shadow_display",
18924            "clippy::inline_fn_without_body",
18925            "clippy::invalid_null_ptr_usage",
18926            "clippy::invalid_regex",
18927            "clippy::inverted_saturating_sub",
18928            "clippy::invisible_characters",
18929            "clippy::iter_next_loop",
18930            "clippy::iter_skip_zero",
18931            "clippy::iterator_step_by_zero",
18932            "clippy::let_underscore_lock",
18933            "clippy::lint_groups_priority",
18934            "clippy::match_str_case_mismatch",
18935            "clippy::mem_replace_with_uninit",
18936            "clippy::min_max",
18937            "clippy::mistyped_literal_suffixes",
18938            "clippy::modulo_one",
18939            "clippy::mut_from_ref",
18940            "clippy::never_loop",
18941            "clippy::non_octal_unix_permissions",
18942            "clippy::nonsensical_open_options",
18943            "clippy::not_unsafe_ptr_arg_deref",
18944            "clippy::option_env_unwrap",
18945            "clippy::out_of_bounds_indexing",
18946            "clippy::overly_complex_bool_expr",
18947            "clippy::panicking_overflow_checks",
18948            "clippy::panicking_unwrap",
18949            "clippy::possible_missing_comma",
18950            "clippy::read_line_without_trim",
18951            "clippy::recursive_format_impl",
18952            "clippy::redundant_comparisons",
18953            "clippy::redundant_locals",
18954            "clippy::reversed_empty_ranges",
18955            "clippy::self_assignment",
18956            "clippy::serde_api_misuse",
18957            "clippy::size_of_in_element_count",
18958            "clippy::suspicious_splitn",
18959            "clippy::transmute_null_to_fn",
18960            "clippy::transmuting_null",
18961            "clippy::uninit_assumed_init",
18962            "clippy::uninit_vec",
18963            "clippy::unit_cmp",
18964            "clippy::unit_hash",
18965            "clippy::unit_return_expecting_ord",
18966            "clippy::unsound_collection_transmute",
18967            "clippy::unused_io_amount",
18968            "clippy::useless_attribute",
18969            "clippy::vec_resize_to_zero",
18970            "clippy::while_immutable_condition",
18971            "clippy::wrong_transmute",
18972            "clippy::zst_offset",
18973        ],
18974    },
18975    LintGroup {
18976        lint: Lint {
18977            label: "clippy::deprecated",
18978            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"##,
18979            default_severity: Severity::Allow,
18980            warn_since: None,
18981            deny_since: None,
18982        },
18983        children: &[
18984            "clippy::assign_ops",
18985            "clippy::extend_from_slice",
18986            "clippy::misaligned_transmute",
18987            "clippy::pub_enum_variant_names",
18988            "clippy::range_step_by_zero",
18989            "clippy::regex_macro",
18990            "clippy::replace_consts",
18991            "clippy::should_assert_eq",
18992            "clippy::unsafe_vector_initialization",
18993            "clippy::unstable_as_mut_slice",
18994            "clippy::unstable_as_slice",
18995            "clippy::unused_collect",
18996            "clippy::wrong_pub_self_convention",
18997        ],
18998    },
18999    LintGroup {
19000        lint: Lint {
19001            label: "clippy::nursery",
19002            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"##,
19003            default_severity: Severity::Allow,
19004            warn_since: None,
19005            deny_since: None,
19006        },
19007        children: &[
19008            "clippy::as_ptr_cast_mut",
19009            "clippy::branches_sharing_code",
19010            "clippy::clear_with_drain",
19011            "clippy::cognitive_complexity",
19012            "clippy::collection_is_never_read",
19013            "clippy::debug_assert_with_mut_call",
19014            "clippy::derive_partial_eq_without_eq",
19015            "clippy::equatable_if_let",
19016            "clippy::fallible_impl_from",
19017            "clippy::future_not_send",
19018            "clippy::imprecise_flops",
19019            "clippy::iter_on_empty_collections",
19020            "clippy::iter_on_single_items",
19021            "clippy::iter_with_drain",
19022            "clippy::large_stack_frames",
19023            "clippy::missing_const_for_fn",
19024            "clippy::mutex_integer",
19025            "clippy::needless_collect",
19026            "clippy::needless_pass_by_ref_mut",
19027            "clippy::non_send_fields_in_send_ty",
19028            "clippy::nonstandard_macro_braces",
19029            "clippy::option_if_let_else",
19030            "clippy::or_fun_call",
19031            "clippy::path_buf_push_overwrite",
19032            "clippy::read_zero_byte_vec",
19033            "clippy::redundant_clone",
19034            "clippy::redundant_pub_crate",
19035            "clippy::set_contains_or_insert",
19036            "clippy::significant_drop_in_scrutinee",
19037            "clippy::significant_drop_tightening",
19038            "clippy::string_lit_as_bytes",
19039            "clippy::suboptimal_flops",
19040            "clippy::suspicious_operation_groupings",
19041            "clippy::trailing_empty_array",
19042            "clippy::trait_duplication_in_bounds",
19043            "clippy::transmute_undefined_repr",
19044            "clippy::trivial_regex",
19045            "clippy::tuple_array_conversions",
19046            "clippy::type_repetition_in_bounds",
19047            "clippy::uninhabited_references",
19048            "clippy::unnecessary_struct_initialization",
19049            "clippy::unused_peekable",
19050            "clippy::unused_rounding",
19051            "clippy::use_self",
19052            "clippy::useless_let_if_seq",
19053            "clippy::while_float",
19054        ],
19055    },
19056    LintGroup {
19057        lint: Lint {
19058            label: "clippy::pedantic",
19059            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"##,
19060            default_severity: Severity::Allow,
19061            warn_since: None,
19062            deny_since: None,
19063        },
19064        children: &[
19065            "clippy::assigning_clones",
19066            "clippy::bool_to_int_with_if",
19067            "clippy::borrow_as_ptr",
19068            "clippy::case_sensitive_file_extension_comparisons",
19069            "clippy::cast_lossless",
19070            "clippy::cast_possible_truncation",
19071            "clippy::cast_possible_wrap",
19072            "clippy::cast_precision_loss",
19073            "clippy::cast_ptr_alignment",
19074            "clippy::cast_sign_loss",
19075            "clippy::checked_conversions",
19076            "clippy::cloned_instead_of_copied",
19077            "clippy::copy_iterator",
19078            "clippy::default_trait_access",
19079            "clippy::doc_link_with_quotes",
19080            "clippy::doc_markdown",
19081            "clippy::empty_enum",
19082            "clippy::enum_glob_use",
19083            "clippy::expl_impl_clone_on_copy",
19084            "clippy::explicit_deref_methods",
19085            "clippy::explicit_into_iter_loop",
19086            "clippy::explicit_iter_loop",
19087            "clippy::filter_map_next",
19088            "clippy::flat_map_option",
19089            "clippy::float_cmp",
19090            "clippy::fn_params_excessive_bools",
19091            "clippy::from_iter_instead_of_collect",
19092            "clippy::if_not_else",
19093            "clippy::ignored_unit_patterns",
19094            "clippy::implicit_clone",
19095            "clippy::implicit_hasher",
19096            "clippy::inconsistent_struct_constructor",
19097            "clippy::index_refutable_slice",
19098            "clippy::inefficient_to_string",
19099            "clippy::inline_always",
19100            "clippy::into_iter_without_iter",
19101            "clippy::invalid_upcast_comparisons",
19102            "clippy::items_after_statements",
19103            "clippy::iter_filter_is_ok",
19104            "clippy::iter_filter_is_some",
19105            "clippy::iter_not_returning_iterator",
19106            "clippy::iter_without_into_iter",
19107            "clippy::large_digit_groups",
19108            "clippy::large_futures",
19109            "clippy::large_stack_arrays",
19110            "clippy::large_types_passed_by_value",
19111            "clippy::linkedlist",
19112            "clippy::macro_use_imports",
19113            "clippy::manual_assert",
19114            "clippy::manual_instant_elapsed",
19115            "clippy::manual_is_variant_and",
19116            "clippy::manual_let_else",
19117            "clippy::manual_ok_or",
19118            "clippy::manual_string_new",
19119            "clippy::many_single_char_names",
19120            "clippy::map_unwrap_or",
19121            "clippy::match_bool",
19122            "clippy::match_on_vec_items",
19123            "clippy::match_same_arms",
19124            "clippy::match_wild_err_arm",
19125            "clippy::match_wildcard_for_single_variants",
19126            "clippy::maybe_infinite_iter",
19127            "clippy::mismatching_type_param_order",
19128            "clippy::missing_errors_doc",
19129            "clippy::missing_fields_in_debug",
19130            "clippy::missing_panics_doc",
19131            "clippy::module_name_repetitions",
19132            "clippy::must_use_candidate",
19133            "clippy::mut_mut",
19134            "clippy::naive_bytecount",
19135            "clippy::needless_bitwise_bool",
19136            "clippy::needless_continue",
19137            "clippy::needless_for_each",
19138            "clippy::needless_pass_by_value",
19139            "clippy::needless_raw_string_hashes",
19140            "clippy::no_effect_underscore_binding",
19141            "clippy::no_mangle_with_rust_abi",
19142            "clippy::option_as_ref_cloned",
19143            "clippy::option_option",
19144            "clippy::ptr_as_ptr",
19145            "clippy::ptr_cast_constness",
19146            "clippy::pub_underscore_fields",
19147            "clippy::range_minus_one",
19148            "clippy::range_plus_one",
19149            "clippy::redundant_closure_for_method_calls",
19150            "clippy::redundant_else",
19151            "clippy::ref_as_ptr",
19152            "clippy::ref_binding_to_reference",
19153            "clippy::ref_option",
19154            "clippy::ref_option_ref",
19155            "clippy::return_self_not_must_use",
19156            "clippy::same_functions_in_if_condition",
19157            "clippy::semicolon_if_nothing_returned",
19158            "clippy::should_panic_without_expect",
19159            "clippy::similar_names",
19160            "clippy::single_char_pattern",
19161            "clippy::single_match_else",
19162            "clippy::stable_sort_primitive",
19163            "clippy::str_split_at_newline",
19164            "clippy::string_add_assign",
19165            "clippy::struct_excessive_bools",
19166            "clippy::struct_field_names",
19167            "clippy::too_many_lines",
19168            "clippy::transmute_ptr_to_ptr",
19169            "clippy::trivially_copy_pass_by_ref",
19170            "clippy::unchecked_duration_subtraction",
19171            "clippy::unicode_not_nfc",
19172            "clippy::uninlined_format_args",
19173            "clippy::unnecessary_box_returns",
19174            "clippy::unnecessary_join",
19175            "clippy::unnecessary_wraps",
19176            "clippy::unnested_or_patterns",
19177            "clippy::unreadable_literal",
19178            "clippy::unsafe_derive_deserialize",
19179            "clippy::unused_async",
19180            "clippy::unused_self",
19181            "clippy::used_underscore_binding",
19182            "clippy::used_underscore_items",
19183            "clippy::verbose_bit_mask",
19184            "clippy::wildcard_imports",
19185            "clippy::zero_sized_map_values",
19186        ],
19187    },
19188    LintGroup {
19189        lint: Lint {
19190            label: "clippy::perf",
19191            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"##,
19192            default_severity: Severity::Allow,
19193            warn_since: None,
19194            deny_since: None,
19195        },
19196        children: &[
19197            "clippy::box_collection",
19198            "clippy::boxed_local",
19199            "clippy::cmp_owned",
19200            "clippy::collapsible_str_replace",
19201            "clippy::drain_collect",
19202            "clippy::expect_fun_call",
19203            "clippy::extend_with_drain",
19204            "clippy::format_collect",
19205            "clippy::format_in_format_args",
19206            "clippy::iter_overeager_cloned",
19207            "clippy::large_const_arrays",
19208            "clippy::large_enum_variant",
19209            "clippy::manual_memcpy",
19210            "clippy::manual_retain",
19211            "clippy::manual_str_repeat",
19212            "clippy::manual_try_fold",
19213            "clippy::map_entry",
19214            "clippy::missing_const_for_thread_local",
19215            "clippy::missing_spin_loop",
19216            "clippy::readonly_write_lock",
19217            "clippy::redundant_allocation",
19218            "clippy::result_large_err",
19219            "clippy::slow_vector_initialization",
19220            "clippy::to_string_in_format_args",
19221            "clippy::unnecessary_to_owned",
19222            "clippy::useless_vec",
19223            "clippy::vec_init_then_push",
19224            "clippy::waker_clone_wake",
19225        ],
19226    },
19227    LintGroup {
19228        lint: Lint {
19229            label: "clippy::restriction",
19230            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"##,
19231            default_severity: Severity::Allow,
19232            warn_since: None,
19233            deny_since: None,
19234        },
19235        children: &[
19236            "clippy::absolute_paths",
19237            "clippy::alloc_instead_of_core",
19238            "clippy::allow_attributes",
19239            "clippy::allow_attributes_without_reason",
19240            "clippy::arithmetic_side_effects",
19241            "clippy::as_conversions",
19242            "clippy::as_underscore",
19243            "clippy::assertions_on_result_states",
19244            "clippy::big_endian_bytes",
19245            "clippy::cfg_not_test",
19246            "clippy::clone_on_ref_ptr",
19247            "clippy::create_dir",
19248            "clippy::dbg_macro",
19249            "clippy::decimal_literal_representation",
19250            "clippy::default_numeric_fallback",
19251            "clippy::default_union_representation",
19252            "clippy::deref_by_slicing",
19253            "clippy::disallowed_script_idents",
19254            "clippy::else_if_without_else",
19255            "clippy::empty_drop",
19256            "clippy::empty_enum_variants_with_brackets",
19257            "clippy::empty_structs_with_brackets",
19258            "clippy::error_impl_error",
19259            "clippy::exhaustive_enums",
19260            "clippy::exhaustive_structs",
19261            "clippy::exit",
19262            "clippy::expect_used",
19263            "clippy::field_scoped_visibility_modifiers",
19264            "clippy::filetype_is_file",
19265            "clippy::float_arithmetic",
19266            "clippy::float_cmp_const",
19267            "clippy::fn_to_numeric_cast_any",
19268            "clippy::format_push_string",
19269            "clippy::get_unwrap",
19270            "clippy::host_endian_bytes",
19271            "clippy::if_then_some_else_none",
19272            "clippy::impl_trait_in_params",
19273            "clippy::implicit_return",
19274            "clippy::indexing_slicing",
19275            "clippy::infinite_loop",
19276            "clippy::inline_asm_x86_att_syntax",
19277            "clippy::inline_asm_x86_intel_syntax",
19278            "clippy::integer_division",
19279            "clippy::integer_division_remainder_used",
19280            "clippy::iter_over_hash_type",
19281            "clippy::large_include_file",
19282            "clippy::let_underscore_must_use",
19283            "clippy::let_underscore_untyped",
19284            "clippy::little_endian_bytes",
19285            "clippy::lossy_float_literal",
19286            "clippy::map_err_ignore",
19287            "clippy::mem_forget",
19288            "clippy::min_ident_chars",
19289            "clippy::missing_assert_message",
19290            "clippy::missing_asserts_for_indexing",
19291            "clippy::missing_docs_in_private_items",
19292            "clippy::missing_inline_in_public_items",
19293            "clippy::missing_trait_methods",
19294            "clippy::mixed_read_write_in_expression",
19295            "clippy::mod_module_files",
19296            "clippy::modulo_arithmetic",
19297            "clippy::multiple_inherent_impl",
19298            "clippy::multiple_unsafe_ops_per_block",
19299            "clippy::mutex_atomic",
19300            "clippy::needless_raw_strings",
19301            "clippy::non_ascii_literal",
19302            "clippy::non_zero_suggestions",
19303            "clippy::panic",
19304            "clippy::panic_in_result_fn",
19305            "clippy::partial_pub_fields",
19306            "clippy::pathbuf_init_then_push",
19307            "clippy::pattern_type_mismatch",
19308            "clippy::print_stderr",
19309            "clippy::print_stdout",
19310            "clippy::pub_use",
19311            "clippy::pub_with_shorthand",
19312            "clippy::pub_without_shorthand",
19313            "clippy::question_mark_used",
19314            "clippy::rc_buffer",
19315            "clippy::rc_mutex",
19316            "clippy::redundant_type_annotations",
19317            "clippy::ref_patterns",
19318            "clippy::renamed_function_params",
19319            "clippy::rest_pat_in_fully_bound_structs",
19320            "clippy::same_name_method",
19321            "clippy::self_named_module_files",
19322            "clippy::semicolon_inside_block",
19323            "clippy::semicolon_outside_block",
19324            "clippy::separated_literal_suffix",
19325            "clippy::shadow_reuse",
19326            "clippy::shadow_same",
19327            "clippy::shadow_unrelated",
19328            "clippy::single_call_fn",
19329            "clippy::single_char_lifetime_names",
19330            "clippy::std_instead_of_alloc",
19331            "clippy::std_instead_of_core",
19332            "clippy::str_to_string",
19333            "clippy::string_add",
19334            "clippy::string_lit_chars_any",
19335            "clippy::string_slice",
19336            "clippy::string_to_string",
19337            "clippy::suspicious_xor_used_as_pow",
19338            "clippy::tests_outside_test_module",
19339            "clippy::todo",
19340            "clippy::try_err",
19341            "clippy::undocumented_unsafe_blocks",
19342            "clippy::unimplemented",
19343            "clippy::unnecessary_safety_comment",
19344            "clippy::unnecessary_safety_doc",
19345            "clippy::unnecessary_self_imports",
19346            "clippy::unneeded_field_pattern",
19347            "clippy::unreachable",
19348            "clippy::unseparated_literal_suffix",
19349            "clippy::unused_result_ok",
19350            "clippy::unused_trait_names",
19351            "clippy::unwrap_in_result",
19352            "clippy::unwrap_used",
19353            "clippy::use_debug",
19354            "clippy::verbose_file_reads",
19355            "clippy::wildcard_enum_match_arm",
19356        ],
19357    },
19358    LintGroup {
19359        lint: Lint {
19360            label: "clippy::style",
19361            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"##,
19362            default_severity: Severity::Allow,
19363            warn_since: None,
19364            deny_since: None,
19365        },
19366        children: &[
19367            "clippy::assertions_on_constants",
19368            "clippy::assign_op_pattern",
19369            "clippy::blocks_in_conditions",
19370            "clippy::bool_assert_comparison",
19371            "clippy::borrow_interior_mutable_const",
19372            "clippy::box_default",
19373            "clippy::builtin_type_shadow",
19374            "clippy::byte_char_slices",
19375            "clippy::bytes_nth",
19376            "clippy::chars_last_cmp",
19377            "clippy::chars_next_cmp",
19378            "clippy::cmp_null",
19379            "clippy::collapsible_else_if",
19380            "clippy::collapsible_if",
19381            "clippy::collapsible_match",
19382            "clippy::comparison_chain",
19383            "clippy::comparison_to_empty",
19384            "clippy::declare_interior_mutable_const",
19385            "clippy::default_instead_of_iter_empty",
19386            "clippy::disallowed_macros",
19387            "clippy::disallowed_methods",
19388            "clippy::disallowed_names",
19389            "clippy::disallowed_types",
19390            "clippy::doc_lazy_continuation",
19391            "clippy::double_must_use",
19392            "clippy::double_neg",
19393            "clippy::duplicate_underscore_argument",
19394            "clippy::enum_variant_names",
19395            "clippy::err_expect",
19396            "clippy::excessive_precision",
19397            "clippy::field_reassign_with_default",
19398            "clippy::filter_map_bool_then",
19399            "clippy::fn_to_numeric_cast",
19400            "clippy::fn_to_numeric_cast_with_truncation",
19401            "clippy::for_kv_map",
19402            "clippy::from_over_into",
19403            "clippy::from_str_radix_10",
19404            "clippy::get_first",
19405            "clippy::if_same_then_else",
19406            "clippy::implicit_saturating_add",
19407            "clippy::implicit_saturating_sub",
19408            "clippy::inconsistent_digit_grouping",
19409            "clippy::infallible_destructuring_match",
19410            "clippy::inherent_to_string",
19411            "clippy::init_numbered_fields",
19412            "clippy::into_iter_on_ref",
19413            "clippy::is_digit_ascii_radix",
19414            "clippy::items_after_test_module",
19415            "clippy::iter_cloned_collect",
19416            "clippy::iter_next_slice",
19417            "clippy::iter_nth",
19418            "clippy::iter_nth_zero",
19419            "clippy::iter_skip_next",
19420            "clippy::just_underscores_and_digits",
19421            "clippy::legacy_numeric_constants",
19422            "clippy::len_without_is_empty",
19423            "clippy::len_zero",
19424            "clippy::let_and_return",
19425            "clippy::let_unit_value",
19426            "clippy::main_recursion",
19427            "clippy::manual_async_fn",
19428            "clippy::manual_bits",
19429            "clippy::manual_is_ascii_check",
19430            "clippy::manual_is_finite",
19431            "clippy::manual_is_infinite",
19432            "clippy::manual_map",
19433            "clippy::manual_next_back",
19434            "clippy::manual_non_exhaustive",
19435            "clippy::manual_pattern_char_comparison",
19436            "clippy::manual_range_contains",
19437            "clippy::manual_rotate",
19438            "clippy::manual_saturating_arithmetic",
19439            "clippy::manual_while_let_some",
19440            "clippy::map_clone",
19441            "clippy::map_collect_result_unit",
19442            "clippy::match_like_matches_macro",
19443            "clippy::match_overlapping_arm",
19444            "clippy::match_ref_pats",
19445            "clippy::match_result_ok",
19446            "clippy::mem_replace_option_with_none",
19447            "clippy::mem_replace_with_default",
19448            "clippy::missing_enforced_import_renames",
19449            "clippy::missing_safety_doc",
19450            "clippy::mixed_attributes_style",
19451            "clippy::mixed_case_hex_literals",
19452            "clippy::module_inception",
19453            "clippy::must_use_unit",
19454            "clippy::mut_mutex_lock",
19455            "clippy::needless_borrow",
19456            "clippy::needless_borrows_for_generic_args",
19457            "clippy::needless_doctest_main",
19458            "clippy::needless_else",
19459            "clippy::needless_late_init",
19460            "clippy::needless_parens_on_range_literals",
19461            "clippy::needless_pub_self",
19462            "clippy::needless_range_loop",
19463            "clippy::needless_return",
19464            "clippy::needless_return_with_question_mark",
19465            "clippy::neg_multiply",
19466            "clippy::new_ret_no_self",
19467            "clippy::new_without_default",
19468            "clippy::non_minimal_cfg",
19469            "clippy::obfuscated_if_else",
19470            "clippy::ok_expect",
19471            "clippy::op_ref",
19472            "clippy::option_map_or_err_ok",
19473            "clippy::option_map_or_none",
19474            "clippy::partialeq_to_none",
19475            "clippy::print_literal",
19476            "clippy::print_with_newline",
19477            "clippy::println_empty_string",
19478            "clippy::ptr_arg",
19479            "clippy::ptr_eq",
19480            "clippy::question_mark",
19481            "clippy::redundant_closure",
19482            "clippy::redundant_field_names",
19483            "clippy::redundant_pattern",
19484            "clippy::redundant_pattern_matching",
19485            "clippy::redundant_static_lifetimes",
19486            "clippy::result_map_or_into_option",
19487            "clippy::result_unit_err",
19488            "clippy::same_item_push",
19489            "clippy::self_named_constructors",
19490            "clippy::should_implement_trait",
19491            "clippy::single_char_add_str",
19492            "clippy::single_component_path_imports",
19493            "clippy::single_match",
19494            "clippy::string_extend_chars",
19495            "clippy::tabs_in_doc_comments",
19496            "clippy::to_digit_is_some",
19497            "clippy::to_string_trait_impl",
19498            "clippy::too_long_first_doc_paragraph",
19499            "clippy::toplevel_ref_arg",
19500            "clippy::trim_split_whitespace",
19501            "clippy::unnecessary_fallible_conversions",
19502            "clippy::unnecessary_fold",
19503            "clippy::unnecessary_lazy_evaluations",
19504            "clippy::unnecessary_mut_passed",
19505            "clippy::unnecessary_owned_empty_strings",
19506            "clippy::unsafe_removed_from_name",
19507            "clippy::unused_enumerate_index",
19508            "clippy::unused_unit",
19509            "clippy::unusual_byte_groupings",
19510            "clippy::unwrap_or_default",
19511            "clippy::upper_case_acronyms",
19512            "clippy::while_let_on_iterator",
19513            "clippy::write_literal",
19514            "clippy::write_with_newline",
19515            "clippy::writeln_empty_string",
19516            "clippy::wrong_self_convention",
19517            "clippy::zero_ptr",
19518        ],
19519    },
19520    LintGroup {
19521        lint: Lint {
19522            label: "clippy::suspicious",
19523            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"##,
19524            default_severity: Severity::Allow,
19525            warn_since: None,
19526            deny_since: None,
19527        },
19528        children: &[
19529            "clippy::almost_complete_range",
19530            "clippy::arc_with_non_send_sync",
19531            "clippy::await_holding_invalid_type",
19532            "clippy::await_holding_lock",
19533            "clippy::await_holding_refcell_ref",
19534            "clippy::blanket_clippy_restriction_lints",
19535            "clippy::cast_abs_to_unsigned",
19536            "clippy::cast_enum_constructor",
19537            "clippy::cast_enum_truncation",
19538            "clippy::cast_nan_to_int",
19539            "clippy::cast_slice_from_raw_parts",
19540            "clippy::const_is_empty",
19541            "clippy::crate_in_macro_def",
19542            "clippy::deprecated_clippy_cfg_attr",
19543            "clippy::drop_non_drop",
19544            "clippy::duplicate_mod",
19545            "clippy::duplicated_attributes",
19546            "clippy::empty_docs",
19547            "clippy::empty_line_after_doc_comments",
19548            "clippy::empty_line_after_outer_attr",
19549            "clippy::empty_loop",
19550            "clippy::float_equality_without_abs",
19551            "clippy::forget_non_drop",
19552            "clippy::four_forward_slashes",
19553            "clippy::from_raw_with_void_ptr",
19554            "clippy::incompatible_msrv",
19555            "clippy::ineffective_open_options",
19556            "clippy::iter_out_of_bounds",
19557            "clippy::join_absolute_paths",
19558            "clippy::let_underscore_future",
19559            "clippy::lines_filter_map_ok",
19560            "clippy::macro_metavars_in_unsafe",
19561            "clippy::manual_unwrap_or_default",
19562            "clippy::misnamed_getters",
19563            "clippy::misrefactored_assign_op",
19564            "clippy::missing_transmute_annotations",
19565            "clippy::multi_assignments",
19566            "clippy::multiple_bound_locations",
19567            "clippy::mut_range_bound",
19568            "clippy::mutable_key_type",
19569            "clippy::needless_character_iteration",
19570            "clippy::needless_maybe_sized",
19571            "clippy::no_effect_replace",
19572            "clippy::non_canonical_clone_impl",
19573            "clippy::non_canonical_partial_ord_impl",
19574            "clippy::octal_escapes",
19575            "clippy::path_ends_with_ext",
19576            "clippy::permissions_set_readonly_false",
19577            "clippy::pointers_in_nomem_asm_block",
19578            "clippy::print_in_format_impl",
19579            "clippy::rc_clone_in_vec_init",
19580            "clippy::repeat_vec_with_capacity",
19581            "clippy::single_range_in_vec_init",
19582            "clippy::size_of_ref",
19583            "clippy::suspicious_arithmetic_impl",
19584            "clippy::suspicious_assignment_formatting",
19585            "clippy::suspicious_command_arg_space",
19586            "clippy::suspicious_doc_comments",
19587            "clippy::suspicious_else_formatting",
19588            "clippy::suspicious_map",
19589            "clippy::suspicious_op_assign_impl",
19590            "clippy::suspicious_open_options",
19591            "clippy::suspicious_to_owned",
19592            "clippy::suspicious_unary_op_formatting",
19593            "clippy::swap_ptr_to_ref",
19594            "clippy::test_attr_in_doctest",
19595            "clippy::type_id_on_box",
19596            "clippy::unconditional_recursion",
19597            "clippy::unnecessary_clippy_cfg",
19598            "clippy::unnecessary_get_then_check",
19599            "clippy::unnecessary_result_map_or_else",
19600            "clippy::zero_repeat_side_effects",
19601            "clippy::zombie_processes",
19602        ],
19603    },
19604];