Skip to main content

ide_db/generated/
lints.rs

1//! Generated by `cargo xtask codegen lint-definitions`, do not edit by hand.
2
3use span::Edition;
4
5use crate::Severity;
6
7#[derive(Clone)]
8pub struct Lint {
9    pub label: &'static str,
10    pub description: &'static str,
11    pub default_severity: Severity,
12    pub warn_since: Option<Edition>,
13    pub deny_since: Option<Edition>,
14}
15
16pub struct LintGroup {
17    pub lint: Lint,
18    pub children: &'static [&'static str],
19}
20
21pub const DEFAULT_LINTS: &[Lint] = &[
22    Lint {
23        label: "aarch64_softfloat_neon",
24        description: r##"detects code that could be affected by ABI issues on aarch64 softfloat targets"##,
25        default_severity: Severity::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_derive_helpers",
45        description: r##"detects derive helper attributes that are ambiguous with built-in attributes"##,
46        default_severity: Severity::Warning,
47        warn_since: None,
48        deny_since: None,
49    },
50    Lint {
51        label: "ambiguous_glob_imported_traits",
52        description: r##"detects uses of ambiguously glob imported traits"##,
53        default_severity: Severity::Warning,
54        warn_since: None,
55        deny_since: None,
56    },
57    Lint {
58        label: "ambiguous_glob_imports",
59        description: r##"detects certain glob imports that require reporting an ambiguity error"##,
60        default_severity: Severity::Error,
61        warn_since: None,
62        deny_since: None,
63    },
64    Lint {
65        label: "ambiguous_glob_reexports",
66        description: r##"ambiguous glob re-exports"##,
67        default_severity: Severity::Warning,
68        warn_since: None,
69        deny_since: None,
70    },
71    Lint {
72        label: "ambiguous_import_visibilities",
73        description: r##"detects certain glob imports that require reporting an ambiguity error"##,
74        default_severity: Severity::Warning,
75        warn_since: None,
76        deny_since: None,
77    },
78    Lint {
79        label: "ambiguous_negative_literals",
80        description: r##"ambiguous negative literals operations"##,
81        default_severity: Severity::Allow,
82        warn_since: None,
83        deny_since: None,
84    },
85    Lint {
86        label: "ambiguous_panic_imports",
87        description: r##"detects ambiguous core and std panic imports"##,
88        default_severity: Severity::Warning,
89        warn_since: None,
90        deny_since: None,
91    },
92    Lint {
93        label: "ambiguous_wide_pointer_comparisons",
94        description: r##"detects ambiguous wide pointer comparisons"##,
95        default_severity: Severity::Warning,
96        warn_since: None,
97        deny_since: None,
98    },
99    Lint {
100        label: "anonymous_parameters",
101        description: r##"detects anonymous parameters"##,
102        default_severity: Severity::Warning,
103        warn_since: None,
104        deny_since: None,
105    },
106    Lint {
107        label: "arithmetic_overflow",
108        description: r##"arithmetic operation overflows"##,
109        default_severity: Severity::Error,
110        warn_since: None,
111        deny_since: None,
112    },
113    Lint {
114        label: "array_into_iter",
115        description: r##"detects calling `into_iter` on arrays in Rust 2015 and 2018"##,
116        default_severity: Severity::Warning,
117        warn_since: None,
118        deny_since: None,
119    },
120    Lint {
121        label: "asm_sub_register",
122        description: r##"using only a subset of a register for inline asm inputs"##,
123        default_severity: Severity::Warning,
124        warn_since: None,
125        deny_since: None,
126    },
127    Lint {
128        label: "async_fn_in_trait",
129        description: r##"use of `async fn` in definition of a publicly-reachable trait"##,
130        default_severity: Severity::Warning,
131        warn_since: None,
132        deny_since: None,
133    },
134    Lint {
135        label: "bad_asm_style",
136        description: r##"incorrect use of inline assembly"##,
137        default_severity: Severity::Warning,
138        warn_since: None,
139        deny_since: None,
140    },
141    Lint {
142        label: "bare_trait_objects",
143        description: r##"suggest using `dyn Trait` for trait objects"##,
144        default_severity: Severity::Warning,
145        warn_since: None,
146        deny_since: None,
147    },
148    Lint {
149        label: "binary_asm_labels",
150        description: r##"labels in inline assembly containing only 0 or 1 digits"##,
151        default_severity: Severity::Error,
152        warn_since: None,
153        deny_since: None,
154    },
155    Lint {
156        label: "bindings_with_variant_name",
157        description: r##"detects pattern bindings with the same name as one of the matched variants"##,
158        default_severity: Severity::Error,
159        warn_since: None,
160        deny_since: None,
161    },
162    Lint {
163        label: "boxed_slice_into_iter",
164        description: r##"detects calling `into_iter` on boxed slices in Rust 2015, 2018, and 2021"##,
165        default_severity: Severity::Warning,
166        warn_since: None,
167        deny_since: None,
168    },
169    Lint {
170        label: "break_with_label_and_loop",
171        description: r##"`break` expression with label and unlabeled loop as value expression"##,
172        default_severity: Severity::Warning,
173        warn_since: None,
174        deny_since: None,
175    },
176    Lint {
177        label: "clashing_extern_declarations",
178        description: r##"detects when an extern fn has been declared with the same name but different types"##,
179        default_severity: Severity::Warning,
180        warn_since: None,
181        deny_since: None,
182    },
183    Lint {
184        label: "closure_returning_async_block",
185        description: r##"closure that returns `async {}` could be rewritten as an async closure"##,
186        default_severity: Severity::Allow,
187        warn_since: None,
188        deny_since: None,
189    },
190    Lint {
191        label: "coherence_leak_check",
192        description: r##"distinct impls distinguished only by the leak-check code"##,
193        default_severity: Severity::Warning,
194        warn_since: None,
195        deny_since: None,
196    },
197    Lint {
198        label: "conflicting_repr_hints",
199        description: r##"conflicts between `#[repr(..)]` hints that were previously accepted and used in practice"##,
200        default_severity: Severity::Error,
201        warn_since: None,
202        deny_since: None,
203    },
204    Lint {
205        label: "confusable_idents",
206        description: r##"detects visually confusable pairs between identifiers"##,
207        default_severity: Severity::Warning,
208        warn_since: None,
209        deny_since: None,
210    },
211    Lint {
212        label: "const_evaluatable_unchecked",
213        description: r##"detects a generic constant is used in a type without a emitting a warning"##,
214        default_severity: Severity::Warning,
215        warn_since: None,
216        deny_since: None,
217    },
218    Lint {
219        label: "const_item_interior_mutations",
220        description: r##"checks for calls which mutates a interior mutable const-item"##,
221        default_severity: Severity::Warning,
222        warn_since: None,
223        deny_since: None,
224    },
225    Lint {
226        label: "const_item_mutation",
227        description: r##"detects attempts to mutate a `const` item"##,
228        default_severity: Severity::Warning,
229        warn_since: None,
230        deny_since: None,
231    },
232    Lint {
233        label: "dangerous_implicit_autorefs",
234        description: r##"implicit reference to a dereference of a raw pointer"##,
235        default_severity: Severity::Error,
236        warn_since: None,
237        deny_since: None,
238    },
239    Lint {
240        label: "dangling_pointers_from_locals",
241        description: r##"detects returning a pointer from a local variable"##,
242        default_severity: Severity::Warning,
243        warn_since: None,
244        deny_since: None,
245    },
246    Lint {
247        label: "dangling_pointers_from_temporaries",
248        description: r##"detects getting a pointer from a temporary"##,
249        default_severity: Severity::Warning,
250        warn_since: None,
251        deny_since: None,
252    },
253    Lint {
254        label: "dead_code",
255        description: r##"detect unused, unexported items"##,
256        default_severity: Severity::Warning,
257        warn_since: None,
258        deny_since: None,
259    },
260    Lint {
261        label: "default_overrides_default_fields",
262        description: r##"detect `Default` impl that should use the type's default field values"##,
263        default_severity: Severity::Error,
264        warn_since: None,
265        deny_since: None,
266    },
267    Lint {
268        label: "dependency_on_unit_never_type_fallback",
269        description: r##"never type fallback affecting unsafe function calls"##,
270        default_severity: Severity::Error,
271        warn_since: None,
272        deny_since: None,
273    },
274    Lint {
275        label: "deprecated",
276        description: r##"detects use of deprecated items"##,
277        default_severity: Severity::Warning,
278        warn_since: None,
279        deny_since: None,
280    },
281    Lint {
282        label: "deprecated_in_future",
283        description: r##"detects use of items that will be deprecated in a future version"##,
284        default_severity: Severity::Allow,
285        warn_since: None,
286        deny_since: None,
287    },
288    Lint {
289        label: "deprecated_llvm_intrinsic",
290        description: r##"detects uses of deprecated LLVM intrinsics"##,
291        default_severity: Severity::Allow,
292        warn_since: None,
293        deny_since: None,
294    },
295    Lint {
296        label: "deprecated_safe_2024",
297        description: r##"detects unsafe functions being used as safe functions"##,
298        default_severity: Severity::Allow,
299        warn_since: None,
300        deny_since: None,
301    },
302    Lint {
303        label: "deprecated_where_clause_location",
304        description: r##"deprecated where clause location"##,
305        default_severity: Severity::Warning,
306        warn_since: None,
307        deny_since: None,
308    },
309    Lint {
310        label: "deref_into_dyn_supertrait",
311        description: r##"`Deref` implementation with a supertrait trait object for output is shadowed by trait upcasting"##,
312        default_severity: Severity::Allow,
313        warn_since: None,
314        deny_since: None,
315    },
316    Lint {
317        label: "deref_nullptr",
318        description: r##"detects when an null pointer is dereferenced"##,
319        default_severity: Severity::Error,
320        warn_since: None,
321        deny_since: None,
322    },
323    Lint {
324        label: "double_negations",
325        description: r##"detects expressions of the form `--x`"##,
326        default_severity: Severity::Warning,
327        warn_since: None,
328        deny_since: None,
329    },
330    Lint {
331        label: "drop_bounds",
332        description: r##"bounds of the form `T: Drop` are most likely incorrect"##,
333        default_severity: Severity::Warning,
334        warn_since: None,
335        deny_since: None,
336    },
337    Lint {
338        label: "dropping_copy_types",
339        description: r##"calls to `std::mem::drop` with a value that implements Copy"##,
340        default_severity: Severity::Warning,
341        warn_since: None,
342        deny_since: None,
343    },
344    Lint {
345        label: "dropping_references",
346        description: r##"calls to `std::mem::drop` with a reference instead of an owned value"##,
347        default_severity: Severity::Warning,
348        warn_since: None,
349        deny_since: None,
350    },
351    Lint {
352        label: "duplicate_features",
353        description: r##"duplicate features found in crate-level `#[feature]` directives"##,
354        default_severity: Severity::Error,
355        warn_since: None,
356        deny_since: None,
357    },
358    Lint {
359        label: "duplicate_macro_attributes",
360        description: r##"duplicated attribute"##,
361        default_severity: Severity::Warning,
362        warn_since: None,
363        deny_since: None,
364    },
365    Lint {
366        label: "dyn_drop",
367        description: r##"trait objects of the form `dyn Drop` are useless"##,
368        default_severity: Severity::Warning,
369        warn_since: None,
370        deny_since: None,
371    },
372    Lint {
373        label: "edition_2024_expr_fragment_specifier",
374        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."##,
375        default_severity: Severity::Allow,
376        warn_since: None,
377        deny_since: None,
378    },
379    Lint {
380        label: "elided_lifetimes_in_associated_constant",
381        description: r##"elided lifetimes cannot be used in associated constants in impls"##,
382        default_severity: Severity::Error,
383        warn_since: None,
384        deny_since: None,
385    },
386    Lint {
387        label: "elided_lifetimes_in_paths",
388        description: r##"hidden lifetime parameters in types are deprecated"##,
389        default_severity: Severity::Allow,
390        warn_since: None,
391        deny_since: None,
392    },
393    Lint {
394        label: "ellipsis_inclusive_range_patterns",
395        description: r##"`...` range patterns are deprecated"##,
396        default_severity: Severity::Warning,
397        warn_since: None,
398        deny_since: None,
399    },
400    Lint {
401        label: "enum_intrinsics_non_enums",
402        description: r##"detects calls to `core::mem::discriminant` and `core::mem::variant_count` with non-enum types"##,
403        default_severity: Severity::Error,
404        warn_since: None,
405        deny_since: None,
406    },
407    Lint {
408        label: "explicit_builtin_cfgs_in_flags",
409        description: r##"detects builtin cfgs set via the `--cfg`"##,
410        default_severity: Severity::Error,
411        warn_since: None,
412        deny_since: None,
413    },
414    Lint {
415        label: "explicit_outlives_requirements",
416        description: r##"outlives requirements can be inferred"##,
417        default_severity: Severity::Allow,
418        warn_since: None,
419        deny_since: None,
420    },
421    Lint {
422        label: "exported_private_dependencies",
423        description: r##"public interface leaks type from a private dependency"##,
424        default_severity: Severity::Warning,
425        warn_since: None,
426        deny_since: None,
427    },
428    Lint {
429        label: "ffi_unwind_calls",
430        description: r##"call to foreign functions or function pointers with FFI-unwind ABI"##,
431        default_severity: Severity::Allow,
432        warn_since: None,
433        deny_since: None,
434    },
435    Lint {
436        label: "float_literal_f32_fallback",
437        description: r##"detects unsuffixed floating point literals whose type fallback to `f32`"##,
438        default_severity: Severity::Warning,
439        warn_since: None,
440        deny_since: None,
441    },
442    Lint {
443        label: "for_loops_over_fallibles",
444        description: r##"for-looping over an `Option` or a `Result`, which is more clearly expressed as an `if let`"##,
445        default_severity: Severity::Warning,
446        warn_since: None,
447        deny_since: None,
448    },
449    Lint {
450        label: "forbidden_lint_groups",
451        description: r##"applying forbid to lint-groups"##,
452        default_severity: Severity::Warning,
453        warn_since: None,
454        deny_since: None,
455    },
456    Lint {
457        label: "forgetting_copy_types",
458        description: r##"calls to `std::mem::forget` with a value that implements Copy"##,
459        default_severity: Severity::Warning,
460        warn_since: None,
461        deny_since: None,
462    },
463    Lint {
464        label: "forgetting_references",
465        description: r##"calls to `std::mem::forget` with a reference instead of an owned value"##,
466        default_severity: Severity::Warning,
467        warn_since: None,
468        deny_since: None,
469    },
470    Lint {
471        label: "function_casts_as_integer",
472        description: r##"casting a function into an integer"##,
473        default_severity: Severity::Warning,
474        warn_since: None,
475        deny_since: None,
476    },
477    Lint {
478        label: "function_item_references",
479        description: r##"suggest casting to a function pointer when attempting to take references to function items"##,
480        default_severity: Severity::Warning,
481        warn_since: None,
482        deny_since: None,
483    },
484    Lint {
485        label: "fuzzy_provenance_casts",
486        description: r##"a fuzzy integer to pointer cast is used"##,
487        default_severity: Severity::Allow,
488        warn_since: None,
489        deny_since: None,
490    },
491    Lint {
492        label: "hidden_glob_reexports",
493        description: r##"name introduced by a private item shadows a name introduced by a public glob re-export"##,
494        default_severity: Severity::Warning,
495        warn_since: None,
496        deny_since: None,
497    },
498    Lint {
499        label: "if_let_rescope",
500        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"##,
501        default_severity: Severity::Allow,
502        warn_since: None,
503        deny_since: None,
504    },
505    Lint {
506        label: "ill_formed_attribute_input",
507        description: r##"ill-formed attribute inputs that were previously accepted and used in practice"##,
508        default_severity: Severity::Error,
509        warn_since: None,
510        deny_since: None,
511    },
512    Lint {
513        label: "impl_trait_overcaptures",
514        description: r##"`impl Trait` will capture more lifetimes than possibly intended in edition 2024"##,
515        default_severity: Severity::Allow,
516        warn_since: None,
517        deny_since: None,
518    },
519    Lint {
520        label: "impl_trait_redundant_captures",
521        description: r##"redundant precise-capturing `use<...>` syntax on an `impl Trait`"##,
522        default_severity: Severity::Allow,
523        warn_since: None,
524        deny_since: None,
525    },
526    Lint {
527        label: "improper_ctypes",
528        description: r##"proper use of libc types in foreign modules"##,
529        default_severity: Severity::Warning,
530        warn_since: None,
531        deny_since: None,
532    },
533    Lint {
534        label: "improper_ctypes_definitions",
535        description: r##"proper use of libc types in foreign item definitions"##,
536        default_severity: Severity::Warning,
537        warn_since: None,
538        deny_since: None,
539    },
540    Lint {
541        label: "improper_gpu_kernel_arg",
542        description: r##"GPU kernel entry points have a limited ABI"##,
543        default_severity: Severity::Warning,
544        warn_since: None,
545        deny_since: None,
546    },
547    Lint {
548        label: "incomplete_features",
549        description: r##"incomplete features that may function improperly in some or all cases"##,
550        default_severity: Severity::Warning,
551        warn_since: None,
552        deny_since: None,
553    },
554    Lint {
555        label: "incomplete_include",
556        description: r##"trailing content in included file"##,
557        default_severity: Severity::Error,
558        warn_since: None,
559        deny_since: None,
560    },
561    Lint {
562        label: "ineffective_unstable_trait_impl",
563        description: r##"detects `#[unstable]` on stable trait implementations for stable types"##,
564        default_severity: Severity::Error,
565        warn_since: None,
566        deny_since: None,
567    },
568    Lint {
569        label: "inline_always_mismatching_target_features",
570        description: r##"detects when a function annotated with `#[inline(always)]` and `#[target_feature(enable = "..")]` is inlined into a caller without the required target feature"##,
571        default_severity: Severity::Warning,
572        warn_since: None,
573        deny_since: None,
574    },
575    Lint {
576        label: "inline_no_sanitize",
577        description: r##"detects incompatible use of `#[inline(always)]` and `#[sanitize(... = "off")]`"##,
578        default_severity: Severity::Warning,
579        warn_since: None,
580        deny_since: None,
581    },
582    Lint {
583        label: "integer_to_ptr_transmutes",
584        description: r##"detects integer to pointer transmutes"##,
585        default_severity: Severity::Warning,
586        warn_since: None,
587        deny_since: None,
588    },
589    Lint {
590        label: "internal_eq_trait_method_impls",
591        description: r##"manual implementation of the internal `Eq::assert_receiver_is_total_eq` method"##,
592        default_severity: Severity::Warning,
593        warn_since: None,
594        deny_since: None,
595    },
596    Lint {
597        label: "internal_features",
598        description: r##"internal features are not supposed to be used"##,
599        default_severity: Severity::Warning,
600        warn_since: None,
601        deny_since: None,
602    },
603    Lint {
604        label: "invalid_atomic_ordering",
605        description: r##"usage of invalid atomic ordering in atomic operations and memory fences"##,
606        default_severity: Severity::Error,
607        warn_since: None,
608        deny_since: None,
609    },
610    Lint {
611        label: "invalid_doc_attributes",
612        description: r##"detects invalid `#[doc(...)]` attributes"##,
613        default_severity: Severity::Warning,
614        warn_since: None,
615        deny_since: None,
616    },
617    Lint {
618        label: "invalid_from_utf8",
619        description: r##"using a non UTF-8 literal in `std::str::from_utf8`"##,
620        default_severity: Severity::Warning,
621        warn_since: None,
622        deny_since: None,
623    },
624    Lint {
625        label: "invalid_from_utf8_unchecked",
626        description: r##"using a non UTF-8 literal in `std::str::from_utf8_unchecked`"##,
627        default_severity: Severity::Error,
628        warn_since: None,
629        deny_since: None,
630    },
631    Lint {
632        label: "invalid_macro_export_arguments",
633        description: r##""invalid_parameter" isn't a valid argument for `#[macro_export]`"##,
634        default_severity: Severity::Error,
635        warn_since: None,
636        deny_since: None,
637    },
638    Lint {
639        label: "invalid_nan_comparisons",
640        description: r##"detects invalid floating point NaN comparisons"##,
641        default_severity: Severity::Warning,
642        warn_since: None,
643        deny_since: None,
644    },
645    Lint {
646        label: "invalid_null_arguments",
647        description: r##"invalid null pointer in arguments"##,
648        default_severity: Severity::Error,
649        warn_since: None,
650        deny_since: None,
651    },
652    Lint {
653        label: "invalid_reference_casting",
654        description: r##"casts of `&T` to `&mut T` without interior mutability"##,
655        default_severity: Severity::Error,
656        warn_since: None,
657        deny_since: None,
658    },
659    Lint {
660        label: "invalid_type_param_default",
661        description: r##"type parameter default erroneously allowed in invalid location"##,
662        default_severity: Severity::Error,
663        warn_since: None,
664        deny_since: None,
665    },
666    Lint {
667        label: "invalid_value",
668        description: r##"an invalid value is being created (such as a null reference)"##,
669        default_severity: Severity::Warning,
670        warn_since: None,
671        deny_since: None,
672    },
673    Lint {
674        label: "irrefutable_let_patterns",
675        description: r##"detects irrefutable patterns in `if let` and `while let` statements"##,
676        default_severity: Severity::Warning,
677        warn_since: None,
678        deny_since: None,
679    },
680    Lint {
681        label: "keyword_idents_2018",
682        description: r##"detects edition keywords being used as an identifier"##,
683        default_severity: Severity::Allow,
684        warn_since: None,
685        deny_since: None,
686    },
687    Lint {
688        label: "keyword_idents_2024",
689        description: r##"detects edition keywords being used as an identifier"##,
690        default_severity: Severity::Allow,
691        warn_since: None,
692        deny_since: None,
693    },
694    Lint {
695        label: "large_assignments",
696        description: r##"detects large moves or copies"##,
697        default_severity: Severity::Warning,
698        warn_since: None,
699        deny_since: None,
700    },
701    Lint {
702        label: "late_bound_lifetime_arguments",
703        description: r##"detects generic lifetime arguments in path segments with late bound lifetime parameters"##,
704        default_severity: Severity::Warning,
705        warn_since: None,
706        deny_since: None,
707    },
708    Lint {
709        label: "legacy_derive_helpers",
710        description: r##"detects derive helper attributes that are used before they are introduced"##,
711        default_severity: Severity::Error,
712        warn_since: None,
713        deny_since: None,
714    },
715    Lint {
716        label: "let_underscore_drop",
717        description: r##"non-binding let on a type that has a destructor"##,
718        default_severity: Severity::Allow,
719        warn_since: None,
720        deny_since: None,
721    },
722    Lint {
723        label: "let_underscore_lock",
724        description: r##"non-binding let on a synchronization lock"##,
725        default_severity: Severity::Error,
726        warn_since: None,
727        deny_since: None,
728    },
729    Lint {
730        label: "linker_info",
731        description: r##"linker warnings known to be informational-only and not indicative of a problem"##,
732        default_severity: Severity::Allow,
733        warn_since: None,
734        deny_since: None,
735    },
736    Lint {
737        label: "linker_messages",
738        description: r##"warnings emitted at runtime by the target-specific linker program"##,
739        default_severity: Severity::Allow,
740        warn_since: None,
741        deny_since: None,
742    },
743    Lint {
744        label: "long_running_const_eval",
745        description: r##"detects long const eval operations"##,
746        default_severity: Severity::Error,
747        warn_since: None,
748        deny_since: None,
749    },
750    Lint {
751        label: "lossy_provenance_casts",
752        description: r##"a lossy pointer to integer cast is used"##,
753        default_severity: Severity::Allow,
754        warn_since: None,
755        deny_since: None,
756    },
757    Lint {
758        label: "macro_expanded_macro_exports_accessed_by_absolute_paths",
759        description: r##"macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths"##,
760        default_severity: Severity::Error,
761        warn_since: None,
762        deny_since: None,
763    },
764    Lint {
765        label: "macro_use_extern_crate",
766        description: r##"the `#[macro_use]` attribute is now deprecated in favor of using macros via the module system"##,
767        default_severity: Severity::Allow,
768        warn_since: None,
769        deny_since: None,
770    },
771    Lint {
772        label: "malformed_diagnostic_attributes",
773        description: r##"detects malformed diagnostic attributes"##,
774        default_severity: Severity::Warning,
775        warn_since: None,
776        deny_since: None,
777    },
778    Lint {
779        label: "malformed_diagnostic_format_literals",
780        description: r##"detects diagnostic attribute with malformed diagnostic format literals"##,
781        default_severity: Severity::Warning,
782        warn_since: None,
783        deny_since: None,
784    },
785    Lint {
786        label: "map_unit_fn",
787        description: r##"`Iterator::map` call that discard the iterator's values"##,
788        default_severity: Severity::Warning,
789        warn_since: None,
790        deny_since: None,
791    },
792    Lint {
793        label: "meta_variable_misuse",
794        description: r##"possible meta-variable misuse at macro definition"##,
795        default_severity: Severity::Allow,
796        warn_since: None,
797        deny_since: None,
798    },
799    Lint {
800        label: "mismatched_lifetime_syntaxes",
801        description: r##"detects when a lifetime uses different syntax between arguments and return values"##,
802        default_severity: Severity::Warning,
803        warn_since: None,
804        deny_since: None,
805    },
806    Lint {
807        label: "misplaced_diagnostic_attributes",
808        description: r##"detects diagnostic attributes that are placed on the wrong item"##,
809        default_severity: Severity::Warning,
810        warn_since: None,
811        deny_since: None,
812    },
813    Lint {
814        label: "missing_abi",
815        description: r##"No declared ABI for extern declaration"##,
816        default_severity: Severity::Warning,
817        warn_since: None,
818        deny_since: None,
819    },
820    Lint {
821        label: "missing_copy_implementations",
822        description: r##"detects potentially-forgotten implementations of `Copy`"##,
823        default_severity: Severity::Allow,
824        warn_since: None,
825        deny_since: None,
826    },
827    Lint {
828        label: "missing_debug_implementations",
829        description: r##"detects missing implementations of Debug"##,
830        default_severity: Severity::Allow,
831        warn_since: None,
832        deny_since: None,
833    },
834    Lint {
835        label: "missing_docs",
836        description: r##"detects missing documentation for public members"##,
837        default_severity: Severity::Allow,
838        warn_since: None,
839        deny_since: None,
840    },
841    Lint {
842        label: "missing_gpu_kernel_export_name",
843        description: r##"mangled gpu-kernel function"##,
844        default_severity: Severity::Warning,
845        warn_since: None,
846        deny_since: None,
847    },
848    Lint {
849        label: "missing_unsafe_on_extern",
850        description: r##"detects missing unsafe keyword on extern declarations"##,
851        default_severity: Severity::Allow,
852        warn_since: None,
853        deny_since: None,
854    },
855    Lint {
856        label: "mixed_script_confusables",
857        description: r##"detects Unicode scripts whose mixed script confusables codepoints are solely used"##,
858        default_severity: Severity::Warning,
859        warn_since: None,
860        deny_since: None,
861    },
862    Lint {
863        label: "multiple_supertrait_upcastable",
864        description: r##"detect when a dyn-compatible trait has multiple supertraits"##,
865        default_severity: Severity::Allow,
866        warn_since: None,
867        deny_since: None,
868    },
869    Lint {
870        label: "must_not_suspend",
871        description: r##"use of a `#[must_not_suspend]` value across a yield point"##,
872        default_severity: Severity::Allow,
873        warn_since: None,
874        deny_since: None,
875    },
876    Lint {
877        label: "mutable_transmutes",
878        description: r##"transmuting &T to &mut T is undefined behavior, even if the reference is unused"##,
879        default_severity: Severity::Error,
880        warn_since: None,
881        deny_since: None,
882    },
883    Lint {
884        label: "named_arguments_used_positionally",
885        description: r##"named arguments in format used positionally"##,
886        default_severity: Severity::Warning,
887        warn_since: None,
888        deny_since: None,
889    },
890    Lint {
891        label: "named_asm_labels",
892        description: r##"named labels in inline assembly"##,
893        default_severity: Severity::Error,
894        warn_since: None,
895        deny_since: None,
896    },
897    Lint {
898        label: "never_type_fallback_flowing_into_unsafe",
899        description: r##"never type fallback affecting unsafe function calls"##,
900        default_severity: Severity::Error,
901        warn_since: None,
902        deny_since: None,
903    },
904    Lint {
905        label: "no_mangle_const_items",
906        description: r##"const items will not have their symbols exported"##,
907        default_severity: Severity::Error,
908        warn_since: None,
909        deny_since: None,
910    },
911    Lint {
912        label: "no_mangle_generic_items",
913        description: r##"generic items must be mangled"##,
914        default_severity: Severity::Warning,
915        warn_since: None,
916        deny_since: None,
917    },
918    Lint {
919        label: "non_ascii_idents",
920        description: r##"detects non-ASCII identifiers"##,
921        default_severity: Severity::Allow,
922        warn_since: None,
923        deny_since: None,
924    },
925    Lint {
926        label: "non_camel_case_types",
927        description: r##"types, variants, traits and type parameters should have camel case names"##,
928        default_severity: Severity::Warning,
929        warn_since: None,
930        deny_since: None,
931    },
932    Lint {
933        label: "non_contiguous_range_endpoints",
934        description: r##"detects off-by-one errors with exclusive range patterns"##,
935        default_severity: Severity::Warning,
936        warn_since: None,
937        deny_since: None,
938    },
939    Lint {
940        label: "non_exhaustive_omitted_patterns",
941        description: r##"detect when patterns of types marked `non_exhaustive` are missed"##,
942        default_severity: Severity::Allow,
943        warn_since: None,
944        deny_since: None,
945    },
946    Lint {
947        label: "non_fmt_panics",
948        description: r##"detect single-argument panic!() invocations in which the argument is not a format string"##,
949        default_severity: Severity::Warning,
950        warn_since: None,
951        deny_since: None,
952    },
953    Lint {
954        label: "non_local_definitions",
955        description: r##"checks for non-local definitions"##,
956        default_severity: Severity::Warning,
957        warn_since: None,
958        deny_since: None,
959    },
960    Lint {
961        label: "non_shorthand_field_patterns",
962        description: r##"using `Struct { x: x }` instead of `Struct { x }` in a pattern"##,
963        default_severity: Severity::Warning,
964        warn_since: None,
965        deny_since: None,
966    },
967    Lint {
968        label: "non_snake_case",
969        description: r##"variables, methods, functions, lifetime parameters and modules should have snake case names"##,
970        default_severity: Severity::Warning,
971        warn_since: None,
972        deny_since: None,
973    },
974    Lint {
975        label: "non_upper_case_globals",
976        description: r##"static constants should have uppercase identifiers"##,
977        default_severity: Severity::Warning,
978        warn_since: None,
979        deny_since: None,
980    },
981    Lint {
982        label: "noop_method_call",
983        description: r##"detects the use of well-known noop methods"##,
984        default_severity: Severity::Warning,
985        warn_since: None,
986        deny_since: None,
987    },
988    Lint {
989        label: "opaque_hidden_inferred_bound",
990        description: r##"detects the use of nested `impl Trait` types in associated type bounds that are not general enough"##,
991        default_severity: Severity::Warning,
992        warn_since: None,
993        deny_since: None,
994    },
995    Lint {
996        label: "out_of_scope_macro_calls",
997        description: r##"detects out of scope calls to `macro_rules` in key-value attributes"##,
998        default_severity: Severity::Error,
999        warn_since: None,
1000        deny_since: None,
1001    },
1002    Lint {
1003        label: "overflowing_literals",
1004        description: r##"literal out of range for its type"##,
1005        default_severity: Severity::Error,
1006        warn_since: None,
1007        deny_since: None,
1008    },
1009    Lint {
1010        label: "overlapping_range_endpoints",
1011        description: r##"detects range patterns with overlapping endpoints"##,
1012        default_severity: Severity::Warning,
1013        warn_since: None,
1014        deny_since: None,
1015    },
1016    Lint {
1017        label: "path_statements",
1018        description: r##"path statements with no effect"##,
1019        default_severity: Severity::Warning,
1020        warn_since: None,
1021        deny_since: None,
1022    },
1023    Lint {
1024        label: "patterns_in_fns_without_body",
1025        description: r##"patterns in functions without body were erroneously allowed"##,
1026        default_severity: Severity::Error,
1027        warn_since: None,
1028        deny_since: None,
1029    },
1030    Lint {
1031        label: "private_bounds",
1032        description: r##"private type in secondary interface of an item"##,
1033        default_severity: Severity::Warning,
1034        warn_since: None,
1035        deny_since: None,
1036    },
1037    Lint {
1038        label: "private_interfaces",
1039        description: r##"private type in primary interface of an item"##,
1040        default_severity: Severity::Warning,
1041        warn_since: None,
1042        deny_since: None,
1043    },
1044    Lint {
1045        label: "proc_macro_derive_resolution_fallback",
1046        description: r##"detects proc macro derives using inaccessible names from parent modules"##,
1047        default_severity: Severity::Error,
1048        warn_since: None,
1049        deny_since: None,
1050    },
1051    Lint {
1052        label: "ptr_to_integer_transmute_in_consts",
1053        description: r##"detects pointer to integer transmutes in const functions and associated constants"##,
1054        default_severity: Severity::Warning,
1055        warn_since: None,
1056        deny_since: None,
1057    },
1058    Lint {
1059        label: "pub_use_of_private_extern_crate",
1060        description: r##"detect public re-exports of private extern crates"##,
1061        default_severity: Severity::Error,
1062        warn_since: None,
1063        deny_since: None,
1064    },
1065    Lint {
1066        label: "redundant_imports",
1067        description: r##"imports that are redundant due to being imported already"##,
1068        default_severity: Severity::Allow,
1069        warn_since: None,
1070        deny_since: None,
1071    },
1072    Lint {
1073        label: "redundant_lifetimes",
1074        description: r##"detects lifetime parameters that are redundant because they are equal to some other named lifetime"##,
1075        default_severity: Severity::Allow,
1076        warn_since: None,
1077        deny_since: None,
1078    },
1079    Lint {
1080        label: "redundant_semicolons",
1081        description: r##"detects unnecessary trailing semicolons"##,
1082        default_severity: Severity::Warning,
1083        warn_since: None,
1084        deny_since: None,
1085    },
1086    Lint {
1087        label: "refining_impl_trait_internal",
1088        description: r##"impl trait in impl method signature does not match trait method signature"##,
1089        default_severity: Severity::Warning,
1090        warn_since: None,
1091        deny_since: None,
1092    },
1093    Lint {
1094        label: "refining_impl_trait_reachable",
1095        description: r##"impl trait in impl method signature does not match trait method signature"##,
1096        default_severity: Severity::Warning,
1097        warn_since: None,
1098        deny_since: None,
1099    },
1100    Lint {
1101        label: "renamed_and_removed_lints",
1102        description: r##"lints that have been renamed or removed"##,
1103        default_severity: Severity::Warning,
1104        warn_since: None,
1105        deny_since: None,
1106    },
1107    Lint {
1108        label: "repr_c_enums_larger_than_int",
1109        description: r##"repr(C) enums with discriminant values that do not fit into a C int"##,
1110        default_severity: Severity::Warning,
1111        warn_since: None,
1112        deny_since: None,
1113    },
1114    Lint {
1115        label: "repr_transparent_non_zst_fields",
1116        description: r##"transparent type contains an external ZST that is marked #[non_exhaustive] or contains private fields"##,
1117        default_severity: Severity::Error,
1118        warn_since: None,
1119        deny_since: None,
1120    },
1121    Lint {
1122        label: "resolving_to_items_shadowing_supertrait_items",
1123        description: r##"detects when a supertrait item is shadowed by a subtrait item"##,
1124        default_severity: Severity::Allow,
1125        warn_since: None,
1126        deny_since: None,
1127    },
1128    Lint {
1129        label: "rtsan_nonblocking_async",
1130        description: r##"detects incompatible uses of `#[sanitize(realtime = "nonblocking")]` on async functions"##,
1131        default_severity: Severity::Warning,
1132        warn_since: None,
1133        deny_since: None,
1134    },
1135    Lint {
1136        label: "rust_2021_incompatible_closure_captures",
1137        description: r##"detects closures affected by Rust 2021 changes"##,
1138        default_severity: Severity::Allow,
1139        warn_since: None,
1140        deny_since: None,
1141    },
1142    Lint {
1143        label: "rust_2021_incompatible_or_patterns",
1144        description: r##"detects usage of old versions of or-patterns"##,
1145        default_severity: Severity::Allow,
1146        warn_since: None,
1147        deny_since: None,
1148    },
1149    Lint {
1150        label: "rust_2021_prefixes_incompatible_syntax",
1151        description: r##"identifiers that will be parsed as a prefix in Rust 2021"##,
1152        default_severity: Severity::Allow,
1153        warn_since: None,
1154        deny_since: None,
1155    },
1156    Lint {
1157        label: "rust_2021_prelude_collisions",
1158        description: r##"detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions"##,
1159        default_severity: Severity::Allow,
1160        warn_since: None,
1161        deny_since: None,
1162    },
1163    Lint {
1164        label: "rust_2024_guarded_string_incompatible_syntax",
1165        description: r##"will be parsed as a guarded string in Rust 2024"##,
1166        default_severity: Severity::Allow,
1167        warn_since: None,
1168        deny_since: None,
1169    },
1170    Lint {
1171        label: "rust_2024_incompatible_pat",
1172        description: r##"detects patterns whose meaning will change in Rust 2024"##,
1173        default_severity: Severity::Allow,
1174        warn_since: None,
1175        deny_since: None,
1176    },
1177    Lint {
1178        label: "rust_2024_prelude_collisions",
1179        description: r##"detects the usage of trait methods which are ambiguous with traits added to the prelude in future editions"##,
1180        default_severity: Severity::Allow,
1181        warn_since: None,
1182        deny_since: None,
1183    },
1184    Lint {
1185        label: "self_constructor_from_outer_item",
1186        description: r##"detect unsupported use of `Self` from outer item"##,
1187        default_severity: Severity::Warning,
1188        warn_since: None,
1189        deny_since: None,
1190    },
1191    Lint {
1192        label: "semicolon_in_expressions_from_macros",
1193        description: r##"trailing semicolon in macro body used as expression"##,
1194        default_severity: Severity::Error,
1195        warn_since: None,
1196        deny_since: None,
1197    },
1198    Lint {
1199        label: "shadowing_supertrait_items",
1200        description: r##"detects when a supertrait item is shadowed by a subtrait item"##,
1201        default_severity: Severity::Allow,
1202        warn_since: None,
1203        deny_since: None,
1204    },
1205    Lint {
1206        label: "single_use_lifetimes",
1207        description: r##"detects lifetime parameters that are only used once"##,
1208        default_severity: Severity::Allow,
1209        warn_since: None,
1210        deny_since: None,
1211    },
1212    Lint {
1213        label: "special_module_name",
1214        description: r##"module declarations for files with a special meaning"##,
1215        default_severity: Severity::Warning,
1216        warn_since: None,
1217        deny_since: None,
1218    },
1219    Lint {
1220        label: "stable_features",
1221        description: r##"stable features found in `#[feature]` directive"##,
1222        default_severity: Severity::Warning,
1223        warn_since: None,
1224        deny_since: None,
1225    },
1226    Lint {
1227        label: "static_mut_refs",
1228        description: r##"creating a shared reference to mutable static"##,
1229        default_severity: Severity::Warning,
1230        warn_since: None,
1231        deny_since: Some(Edition::Edition2024),
1232    },
1233    Lint {
1234        label: "suspicious_double_ref_op",
1235        description: r##"suspicious call of trait method on `&&T`"##,
1236        default_severity: Severity::Warning,
1237        warn_since: None,
1238        deny_since: None,
1239    },
1240    Lint {
1241        label: "tail_expr_drop_order",
1242        description: r##"Detect and warn on significant change in drop order in tail expression location"##,
1243        default_severity: Severity::Allow,
1244        warn_since: None,
1245        deny_since: None,
1246    },
1247    Lint {
1248        label: "test_unstable_lint",
1249        description: r##"this unstable lint is only for testing"##,
1250        default_severity: Severity::Error,
1251        warn_since: None,
1252        deny_since: None,
1253    },
1254    Lint {
1255        label: "text_direction_codepoint_in_comment",
1256        description: r##"invisible directionality-changing codepoints in comment"##,
1257        default_severity: Severity::Error,
1258        warn_since: None,
1259        deny_since: None,
1260    },
1261    Lint {
1262        label: "text_direction_codepoint_in_literal",
1263        description: r##"detect special Unicode codepoints that affect the visual representation of text on screen, changing the direction in which text flows"##,
1264        default_severity: Severity::Error,
1265        warn_since: None,
1266        deny_since: None,
1267    },
1268    Lint {
1269        label: "trivial_bounds",
1270        description: r##"these bounds don't depend on an type parameters"##,
1271        default_severity: Severity::Warning,
1272        warn_since: None,
1273        deny_since: None,
1274    },
1275    Lint {
1276        label: "trivial_casts",
1277        description: r##"detects trivial casts which could be removed"##,
1278        default_severity: Severity::Allow,
1279        warn_since: None,
1280        deny_since: None,
1281    },
1282    Lint {
1283        label: "trivial_numeric_casts",
1284        description: r##"detects trivial casts of numeric types which could be removed"##,
1285        default_severity: Severity::Allow,
1286        warn_since: None,
1287        deny_since: None,
1288    },
1289    Lint {
1290        label: "type_alias_bounds",
1291        description: r##"bounds in type aliases are not enforced"##,
1292        default_severity: Severity::Warning,
1293        warn_since: None,
1294        deny_since: None,
1295    },
1296    Lint {
1297        label: "tyvar_behind_raw_pointer",
1298        description: r##"raw pointer to an inference variable"##,
1299        default_severity: Severity::Warning,
1300        warn_since: None,
1301        deny_since: None,
1302    },
1303    Lint {
1304        label: "uncommon_codepoints",
1305        description: r##"detects uncommon Unicode codepoints in identifiers"##,
1306        default_severity: Severity::Warning,
1307        warn_since: None,
1308        deny_since: None,
1309    },
1310    Lint {
1311        label: "unconditional_panic",
1312        description: r##"operation will cause a panic at runtime"##,
1313        default_severity: Severity::Error,
1314        warn_since: None,
1315        deny_since: None,
1316    },
1317    Lint {
1318        label: "unconditional_recursion",
1319        description: r##"functions that cannot return without calling themselves"##,
1320        default_severity: Severity::Warning,
1321        warn_since: None,
1322        deny_since: None,
1323    },
1324    Lint {
1325        label: "uncovered_param_in_projection",
1326        description: r##"impl contains type parameters that are not covered"##,
1327        default_severity: Severity::Warning,
1328        warn_since: None,
1329        deny_since: None,
1330    },
1331    Lint {
1332        label: "undropped_manually_drops",
1333        description: r##"calls to `std::mem::drop` with `std::mem::ManuallyDrop` instead of it's inner value"##,
1334        default_severity: Severity::Error,
1335        warn_since: None,
1336        deny_since: None,
1337    },
1338    Lint {
1339        label: "unexpected_cfgs",
1340        description: r##"detects unexpected names and values in `#[cfg]` conditions"##,
1341        default_severity: Severity::Warning,
1342        warn_since: None,
1343        deny_since: None,
1344    },
1345    Lint {
1346        label: "unfulfilled_lint_expectations",
1347        description: r##"unfulfilled lint expectation"##,
1348        default_severity: Severity::Warning,
1349        warn_since: None,
1350        deny_since: None,
1351    },
1352    Lint {
1353        label: "ungated_async_fn_track_caller",
1354        description: r##"enabling track_caller on an async fn is a no-op unless the async_fn_track_caller feature is enabled"##,
1355        default_severity: Severity::Warning,
1356        warn_since: None,
1357        deny_since: None,
1358    },
1359    Lint {
1360        label: "uninhabited_static",
1361        description: r##"uninhabited static"##,
1362        default_severity: Severity::Error,
1363        warn_since: None,
1364        deny_since: None,
1365    },
1366    Lint {
1367        label: "unit_bindings",
1368        description: r##"binding is useless because it has the unit `()` type"##,
1369        default_severity: Severity::Allow,
1370        warn_since: None,
1371        deny_since: None,
1372    },
1373    Lint {
1374        label: "unknown_crate_types",
1375        description: r##"unknown crate type found in `#[crate_type]` directive"##,
1376        default_severity: Severity::Error,
1377        warn_since: None,
1378        deny_since: None,
1379    },
1380    Lint {
1381        label: "unknown_diagnostic_attributes",
1382        description: r##"detects unknown diagnostic attributes"##,
1383        default_severity: Severity::Warning,
1384        warn_since: None,
1385        deny_since: None,
1386    },
1387    Lint {
1388        label: "unknown_lints",
1389        description: r##"unrecognized lint attribute"##,
1390        default_severity: Severity::Warning,
1391        warn_since: None,
1392        deny_since: None,
1393    },
1394    Lint {
1395        label: "unnameable_test_items",
1396        description: r##"detects an item that cannot be named being marked as `#[test_case]`"##,
1397        default_severity: Severity::Warning,
1398        warn_since: None,
1399        deny_since: None,
1400    },
1401    Lint {
1402        label: "unnameable_types",
1403        description: r##"effective visibility of a type is larger than the area in which it can be named"##,
1404        default_severity: Severity::Allow,
1405        warn_since: None,
1406        deny_since: None,
1407    },
1408    Lint {
1409        label: "unnecessary_transmutes",
1410        description: r##"detects transmutes that can also be achieved by other operations"##,
1411        default_severity: Severity::Warning,
1412        warn_since: None,
1413        deny_since: None,
1414    },
1415    Lint {
1416        label: "unpredictable_function_pointer_comparisons",
1417        description: r##"detects unpredictable function pointer comparisons"##,
1418        default_severity: Severity::Warning,
1419        warn_since: None,
1420        deny_since: None,
1421    },
1422    Lint {
1423        label: "unqualified_local_imports",
1424        description: r##"`use` of a local item without leading `self::`, `super::`, or `crate::`"##,
1425        default_severity: Severity::Allow,
1426        warn_since: None,
1427        deny_since: None,
1428    },
1429    Lint {
1430        label: "unreachable_cfg_select_predicates",
1431        description: r##"detects unreachable configuration predicates in the cfg_select macro"##,
1432        default_severity: Severity::Warning,
1433        warn_since: None,
1434        deny_since: None,
1435    },
1436    Lint {
1437        label: "unreachable_code",
1438        description: r##"detects unreachable code paths"##,
1439        default_severity: Severity::Warning,
1440        warn_since: None,
1441        deny_since: None,
1442    },
1443    Lint {
1444        label: "unreachable_patterns",
1445        description: r##"detects unreachable patterns"##,
1446        default_severity: Severity::Warning,
1447        warn_since: None,
1448        deny_since: None,
1449    },
1450    Lint {
1451        label: "unreachable_pub",
1452        description: r##"`pub` items not reachable from crate root"##,
1453        default_severity: Severity::Allow,
1454        warn_since: None,
1455        deny_since: None,
1456    },
1457    Lint {
1458        label: "unsafe_attr_outside_unsafe",
1459        description: r##"detects unsafe attributes outside of unsafe"##,
1460        default_severity: Severity::Allow,
1461        warn_since: None,
1462        deny_since: None,
1463    },
1464    Lint {
1465        label: "unsafe_code",
1466        description: r##"usage of `unsafe` code and other potentially unsound constructs"##,
1467        default_severity: Severity::Allow,
1468        warn_since: None,
1469        deny_since: None,
1470    },
1471    Lint {
1472        label: "unsafe_op_in_unsafe_fn",
1473        description: r##"unsafe operations in unsafe functions without an explicit unsafe block are deprecated"##,
1474        default_severity: Severity::Allow,
1475        warn_since: Some(Edition::Edition2024),
1476        deny_since: None,
1477    },
1478    Lint {
1479        label: "unstable_features",
1480        description: r##"enabling unstable features"##,
1481        default_severity: Severity::Allow,
1482        warn_since: None,
1483        deny_since: None,
1484    },
1485    Lint {
1486        label: "unstable_name_collisions",
1487        description: r##"detects name collision with an existing but unstable method"##,
1488        default_severity: Severity::Warning,
1489        warn_since: None,
1490        deny_since: None,
1491    },
1492    Lint {
1493        label: "unstable_syntax_pre_expansion",
1494        description: r##"unstable syntax can change at any point in the future, causing a hard error!"##,
1495        default_severity: Severity::Warning,
1496        warn_since: None,
1497        deny_since: None,
1498    },
1499    Lint {
1500        label: "unsupported_calling_conventions",
1501        description: r##"use of unsupported calling convention"##,
1502        default_severity: Severity::Warning,
1503        warn_since: None,
1504        deny_since: None,
1505    },
1506    Lint {
1507        label: "unused_allocation",
1508        description: r##"detects unnecessary allocations that can be eliminated"##,
1509        default_severity: Severity::Warning,
1510        warn_since: None,
1511        deny_since: None,
1512    },
1513    Lint {
1514        label: "unused_assignments",
1515        description: r##"detect assignments that will never be read"##,
1516        default_severity: Severity::Warning,
1517        warn_since: None,
1518        deny_since: None,
1519    },
1520    Lint {
1521        label: "unused_associated_type_bounds",
1522        description: r##"detects unused `Foo = Bar` bounds in `dyn Trait<Foo = Bar>`"##,
1523        default_severity: Severity::Warning,
1524        warn_since: None,
1525        deny_since: None,
1526    },
1527    Lint {
1528        label: "unused_attributes",
1529        description: r##"detects attributes that were not used by the compiler"##,
1530        default_severity: Severity::Warning,
1531        warn_since: None,
1532        deny_since: None,
1533    },
1534    Lint {
1535        label: "unused_braces",
1536        description: r##"unnecessary braces around an expression"##,
1537        default_severity: Severity::Warning,
1538        warn_since: None,
1539        deny_since: None,
1540    },
1541    Lint {
1542        label: "unused_comparisons",
1543        description: r##"comparisons made useless by limits of the types involved"##,
1544        default_severity: Severity::Warning,
1545        warn_since: None,
1546        deny_since: None,
1547    },
1548    Lint {
1549        label: "unused_crate_dependencies",
1550        description: r##"crate dependencies that are never used"##,
1551        default_severity: Severity::Allow,
1552        warn_since: None,
1553        deny_since: None,
1554    },
1555    Lint {
1556        label: "unused_doc_comments",
1557        description: r##"detects doc comments that aren't used by rustdoc"##,
1558        default_severity: Severity::Warning,
1559        warn_since: None,
1560        deny_since: None,
1561    },
1562    Lint {
1563        label: "unused_extern_crates",
1564        description: r##"extern crates that are never used"##,
1565        default_severity: Severity::Allow,
1566        warn_since: None,
1567        deny_since: None,
1568    },
1569    Lint {
1570        label: "unused_features",
1571        description: r##"unused features found in crate-level `#[feature]` directives"##,
1572        default_severity: Severity::Warning,
1573        warn_since: None,
1574        deny_since: None,
1575    },
1576    Lint {
1577        label: "unused_import_braces",
1578        description: r##"unnecessary braces around an imported item"##,
1579        default_severity: Severity::Allow,
1580        warn_since: None,
1581        deny_since: None,
1582    },
1583    Lint {
1584        label: "unused_imports",
1585        description: r##"imports that are never used"##,
1586        default_severity: Severity::Warning,
1587        warn_since: None,
1588        deny_since: None,
1589    },
1590    Lint {
1591        label: "unused_labels",
1592        description: r##"detects labels that are never used"##,
1593        default_severity: Severity::Warning,
1594        warn_since: None,
1595        deny_since: None,
1596    },
1597    Lint {
1598        label: "unused_lifetimes",
1599        description: r##"detects lifetime parameters that are never used"##,
1600        default_severity: Severity::Allow,
1601        warn_since: None,
1602        deny_since: None,
1603    },
1604    Lint {
1605        label: "unused_macro_rules",
1606        description: r##"detects macro rules that were not used"##,
1607        default_severity: Severity::Allow,
1608        warn_since: None,
1609        deny_since: None,
1610    },
1611    Lint {
1612        label: "unused_macros",
1613        description: r##"detects macros that were not used"##,
1614        default_severity: Severity::Warning,
1615        warn_since: None,
1616        deny_since: None,
1617    },
1618    Lint {
1619        label: "unused_must_use",
1620        description: r##"unused result of a type flagged as `#[must_use]`"##,
1621        default_severity: Severity::Warning,
1622        warn_since: None,
1623        deny_since: None,
1624    },
1625    Lint {
1626        label: "unused_mut",
1627        description: r##"detect mut variables which don't need to be mutable"##,
1628        default_severity: Severity::Warning,
1629        warn_since: None,
1630        deny_since: None,
1631    },
1632    Lint {
1633        label: "unused_parens",
1634        description: r##"`if`, `match`, `while` and `return` do not need parentheses"##,
1635        default_severity: Severity::Warning,
1636        warn_since: None,
1637        deny_since: None,
1638    },
1639    Lint {
1640        label: "unused_qualifications",
1641        description: r##"detects unnecessarily qualified names"##,
1642        default_severity: Severity::Allow,
1643        warn_since: None,
1644        deny_since: None,
1645    },
1646    Lint {
1647        label: "unused_results",
1648        description: r##"unused result of an expression in a statement"##,
1649        default_severity: Severity::Allow,
1650        warn_since: None,
1651        deny_since: None,
1652    },
1653    Lint {
1654        label: "unused_unsafe",
1655        description: r##"unnecessary use of an `unsafe` block"##,
1656        default_severity: Severity::Warning,
1657        warn_since: None,
1658        deny_since: None,
1659    },
1660    Lint {
1661        label: "unused_variables",
1662        description: r##"detect variables which are not used in any way"##,
1663        default_severity: Severity::Warning,
1664        warn_since: None,
1665        deny_since: None,
1666    },
1667    Lint {
1668        label: "unused_visibilities",
1669        description: r##"detect visibility qualifiers on `const _` items"##,
1670        default_severity: Severity::Warning,
1671        warn_since: None,
1672        deny_since: None,
1673    },
1674    Lint {
1675        label: "useless_deprecated",
1676        description: r##"detects deprecation attributes with no effect"##,
1677        default_severity: Severity::Error,
1678        warn_since: None,
1679        deny_since: None,
1680    },
1681    Lint {
1682        label: "useless_ptr_null_checks",
1683        description: r##"useless checking of non-null-typed pointer"##,
1684        default_severity: Severity::Warning,
1685        warn_since: None,
1686        deny_since: None,
1687    },
1688    Lint {
1689        label: "uses_power_alignment",
1690        description: r##"Structs do not follow the power alignment rule under repr(C)"##,
1691        default_severity: Severity::Warning,
1692        warn_since: None,
1693        deny_since: None,
1694    },
1695    Lint {
1696        label: "varargs_without_pattern",
1697        description: r##"detects usage of `...` arguments without a pattern in non-foreign items"##,
1698        default_severity: Severity::Error,
1699        warn_since: None,
1700        deny_since: None,
1701    },
1702    Lint {
1703        label: "variant_size_differences",
1704        description: r##"detects enums with widely varying variant sizes"##,
1705        default_severity: Severity::Allow,
1706        warn_since: None,
1707        deny_since: None,
1708    },
1709    Lint {
1710        label: "warnings",
1711        description: r##"mass-change the level for lints which produce warnings"##,
1712        default_severity: Severity::Warning,
1713        warn_since: None,
1714        deny_since: None,
1715    },
1716    Lint {
1717        label: "while_true",
1718        description: r##"suggest using `loop { }` instead of `while true { }`"##,
1719        default_severity: Severity::Warning,
1720        warn_since: None,
1721        deny_since: None,
1722    },
1723    Lint {
1724        label: "deprecated_safe",
1725        description: r##"lint group for: deprecated-safe-2024"##,
1726        default_severity: Severity::Allow,
1727        warn_since: None,
1728        deny_since: None,
1729    },
1730    Lint {
1731        label: "future_incompatible",
1732        description: r##"lint group for: internal-eq-trait-method-impls, aarch64-softfloat-neon, ambiguous-associated-items, ambiguous-derive-helpers, ambiguous-glob-imported-traits, ambiguous-glob-imports, ambiguous-import-visibilities, ambiguous-panic-imports, coherence-leak-check, conflicting-repr-hints, const-evaluatable-unchecked, elided-lifetimes-in-associated-constant, float-literal-f32-fallback, forbidden-lint-groups, ill-formed-attribute-input, invalid-macro-export-arguments, invalid-type-param-default, late-bound-lifetime-arguments, legacy-derive-helpers, macro-expanded-macro-exports-accessed-by-absolute-paths, out-of-scope-macro-calls, patterns-in-fns-without-body, proc-macro-derive-resolution-fallback, pub-use-of-private-extern-crate, repr-c-enums-larger-than-int, repr-transparent-non-zst-fields, self-constructor-from-outer-item, semicolon-in-expressions-from-macros, uncovered-param-in-projection, uninhabited-static, unstable-name-collisions, unstable-syntax-pre-expansion, unsupported-calling-conventions, varargs-without-pattern"##,
1733        default_severity: Severity::Allow,
1734        warn_since: None,
1735        deny_since: None,
1736    },
1737    Lint {
1738        label: "keyword_idents",
1739        description: r##"lint group for: keyword-idents-2018, keyword-idents-2024"##,
1740        default_severity: Severity::Allow,
1741        warn_since: None,
1742        deny_since: None,
1743    },
1744    Lint {
1745        label: "let_underscore",
1746        description: r##"lint group for: let-underscore-drop, let-underscore-lock"##,
1747        default_severity: Severity::Allow,
1748        warn_since: None,
1749        deny_since: None,
1750    },
1751    Lint {
1752        label: "nonstandard_style",
1753        description: r##"lint group for: non-camel-case-types, non-snake-case, non-upper-case-globals"##,
1754        default_severity: Severity::Allow,
1755        warn_since: None,
1756        deny_since: None,
1757    },
1758    Lint {
1759        label: "refining_impl_trait",
1760        description: r##"lint group for: refining-impl-trait-reachable, refining-impl-trait-internal"##,
1761        default_severity: Severity::Allow,
1762        warn_since: None,
1763        deny_since: None,
1764    },
1765    Lint {
1766        label: "rust_2018_compatibility",
1767        description: r##"lint group for: keyword-idents-2018, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer"##,
1768        default_severity: Severity::Allow,
1769        warn_since: None,
1770        deny_since: None,
1771    },
1772    Lint {
1773        label: "rust_2018_idioms",
1774        description: r##"lint group for: bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements"##,
1775        default_severity: Severity::Allow,
1776        warn_since: None,
1777        deny_since: None,
1778    },
1779    Lint {
1780        label: "rust_2021_compatibility",
1781        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"##,
1782        default_severity: Severity::Allow,
1783        warn_since: None,
1784        deny_since: None,
1785    },
1786    Lint {
1787        label: "rust_2024_compatibility",
1788        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"##,
1789        default_severity: Severity::Allow,
1790        warn_since: None,
1791        deny_since: None,
1792    },
1793    Lint {
1794        label: "unknown_or_malformed_diagnostic_attributes",
1795        description: r##"lint group for: malformed-diagnostic-attributes, malformed-diagnostic-format-literals, misplaced-diagnostic-attributes, unknown-diagnostic-attributes"##,
1796        default_severity: Severity::Allow,
1797        warn_since: None,
1798        deny_since: None,
1799    },
1800    Lint {
1801        label: "unused",
1802        description: r##"lint group for: unused-imports, unused-variables, unused-visibilities, 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"##,
1803        default_severity: Severity::Allow,
1804        warn_since: None,
1805        deny_since: None,
1806    },
1807];
1808
1809pub const DEFAULT_LINT_GROUPS: &[LintGroup] = &[
1810    LintGroup {
1811        lint: Lint {
1812            label: "deprecated_safe",
1813            description: r##"lint group for: deprecated-safe-2024"##,
1814            default_severity: Severity::Allow,
1815            warn_since: None,
1816            deny_since: None,
1817        },
1818        children: &["deprecated_safe_2024"],
1819    },
1820    LintGroup {
1821        lint: Lint {
1822            label: "future_incompatible",
1823            description: r##"lint group for: internal-eq-trait-method-impls, aarch64-softfloat-neon, ambiguous-associated-items, ambiguous-derive-helpers, ambiguous-glob-imported-traits, ambiguous-glob-imports, ambiguous-import-visibilities, ambiguous-panic-imports, coherence-leak-check, conflicting-repr-hints, const-evaluatable-unchecked, elided-lifetimes-in-associated-constant, float-literal-f32-fallback, forbidden-lint-groups, ill-formed-attribute-input, invalid-macro-export-arguments, invalid-type-param-default, late-bound-lifetime-arguments, legacy-derive-helpers, macro-expanded-macro-exports-accessed-by-absolute-paths, out-of-scope-macro-calls, patterns-in-fns-without-body, proc-macro-derive-resolution-fallback, pub-use-of-private-extern-crate, repr-c-enums-larger-than-int, repr-transparent-non-zst-fields, self-constructor-from-outer-item, semicolon-in-expressions-from-macros, uncovered-param-in-projection, uninhabited-static, unstable-name-collisions, unstable-syntax-pre-expansion, unsupported-calling-conventions, varargs-without-pattern"##,
1824            default_severity: Severity::Allow,
1825            warn_since: None,
1826            deny_since: None,
1827        },
1828        children: &[
1829            "internal_eq_trait_method_impls",
1830            "aarch64_softfloat_neon",
1831            "ambiguous_associated_items",
1832            "ambiguous_derive_helpers",
1833            "ambiguous_glob_imported_traits",
1834            "ambiguous_glob_imports",
1835            "ambiguous_import_visibilities",
1836            "ambiguous_panic_imports",
1837            "coherence_leak_check",
1838            "conflicting_repr_hints",
1839            "const_evaluatable_unchecked",
1840            "elided_lifetimes_in_associated_constant",
1841            "float_literal_f32_fallback",
1842            "forbidden_lint_groups",
1843            "ill_formed_attribute_input",
1844            "invalid_macro_export_arguments",
1845            "invalid_type_param_default",
1846            "late_bound_lifetime_arguments",
1847            "legacy_derive_helpers",
1848            "macro_expanded_macro_exports_accessed_by_absolute_paths",
1849            "out_of_scope_macro_calls",
1850            "patterns_in_fns_without_body",
1851            "proc_macro_derive_resolution_fallback",
1852            "pub_use_of_private_extern_crate",
1853            "repr_c_enums_larger_than_int",
1854            "repr_transparent_non_zst_fields",
1855            "self_constructor_from_outer_item",
1856            "semicolon_in_expressions_from_macros",
1857            "uncovered_param_in_projection",
1858            "uninhabited_static",
1859            "unstable_name_collisions",
1860            "unstable_syntax_pre_expansion",
1861            "unsupported_calling_conventions",
1862            "varargs_without_pattern",
1863        ],
1864    },
1865    LintGroup {
1866        lint: Lint {
1867            label: "keyword_idents",
1868            description: r##"lint group for: keyword-idents-2018, keyword-idents-2024"##,
1869            default_severity: Severity::Allow,
1870            warn_since: None,
1871            deny_since: None,
1872        },
1873        children: &["keyword_idents_2018", "keyword_idents_2024"],
1874    },
1875    LintGroup {
1876        lint: Lint {
1877            label: "let_underscore",
1878            description: r##"lint group for: let-underscore-drop, let-underscore-lock"##,
1879            default_severity: Severity::Allow,
1880            warn_since: None,
1881            deny_since: None,
1882        },
1883        children: &["let_underscore_drop", "let_underscore_lock"],
1884    },
1885    LintGroup {
1886        lint: Lint {
1887            label: "nonstandard_style",
1888            description: r##"lint group for: non-camel-case-types, non-snake-case, non-upper-case-globals"##,
1889            default_severity: Severity::Allow,
1890            warn_since: None,
1891            deny_since: None,
1892        },
1893        children: &["non_camel_case_types", "non_snake_case", "non_upper_case_globals"],
1894    },
1895    LintGroup {
1896        lint: Lint {
1897            label: "refining_impl_trait",
1898            description: r##"lint group for: refining-impl-trait-reachable, refining-impl-trait-internal"##,
1899            default_severity: Severity::Allow,
1900            warn_since: None,
1901            deny_since: None,
1902        },
1903        children: &["refining_impl_trait_reachable", "refining_impl_trait_internal"],
1904    },
1905    LintGroup {
1906        lint: Lint {
1907            label: "rust_2018_compatibility",
1908            description: r##"lint group for: keyword-idents-2018, anonymous-parameters, absolute-paths-not-starting-with-crate, tyvar-behind-raw-pointer"##,
1909            default_severity: Severity::Allow,
1910            warn_since: None,
1911            deny_since: None,
1912        },
1913        children: &[
1914            "keyword_idents_2018",
1915            "anonymous_parameters",
1916            "absolute_paths_not_starting_with_crate",
1917            "tyvar_behind_raw_pointer",
1918        ],
1919    },
1920    LintGroup {
1921        lint: Lint {
1922            label: "rust_2018_idioms",
1923            description: r##"lint group for: bare-trait-objects, unused-extern-crates, ellipsis-inclusive-range-patterns, elided-lifetimes-in-paths, explicit-outlives-requirements"##,
1924            default_severity: Severity::Allow,
1925            warn_since: None,
1926            deny_since: None,
1927        },
1928        children: &[
1929            "bare_trait_objects",
1930            "unused_extern_crates",
1931            "ellipsis_inclusive_range_patterns",
1932            "elided_lifetimes_in_paths",
1933            "explicit_outlives_requirements",
1934        ],
1935    },
1936    LintGroup {
1937        lint: Lint {
1938            label: "rust_2021_compatibility",
1939            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"##,
1940            default_severity: Severity::Allow,
1941            warn_since: None,
1942            deny_since: None,
1943        },
1944        children: &[
1945            "ellipsis_inclusive_range_patterns",
1946            "array_into_iter",
1947            "non_fmt_panics",
1948            "bare_trait_objects",
1949            "rust_2021_incompatible_closure_captures",
1950            "rust_2021_incompatible_or_patterns",
1951            "rust_2021_prefixes_incompatible_syntax",
1952            "rust_2021_prelude_collisions",
1953        ],
1954    },
1955    LintGroup {
1956        lint: Lint {
1957            label: "rust_2024_compatibility",
1958            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"##,
1959            default_severity: Severity::Allow,
1960            warn_since: None,
1961            deny_since: None,
1962        },
1963        children: &[
1964            "keyword_idents_2024",
1965            "edition_2024_expr_fragment_specifier",
1966            "boxed_slice_into_iter",
1967            "impl_trait_overcaptures",
1968            "if_let_rescope",
1969            "static_mut_refs",
1970            "dependency_on_unit_never_type_fallback",
1971            "deprecated_safe_2024",
1972            "missing_unsafe_on_extern",
1973            "never_type_fallback_flowing_into_unsafe",
1974            "rust_2024_guarded_string_incompatible_syntax",
1975            "rust_2024_incompatible_pat",
1976            "rust_2024_prelude_collisions",
1977            "tail_expr_drop_order",
1978            "unsafe_attr_outside_unsafe",
1979            "unsafe_op_in_unsafe_fn",
1980        ],
1981    },
1982    LintGroup {
1983        lint: Lint {
1984            label: "unknown_or_malformed_diagnostic_attributes",
1985            description: r##"lint group for: malformed-diagnostic-attributes, malformed-diagnostic-format-literals, misplaced-diagnostic-attributes, unknown-diagnostic-attributes"##,
1986            default_severity: Severity::Allow,
1987            warn_since: None,
1988            deny_since: None,
1989        },
1990        children: &[
1991            "malformed_diagnostic_attributes",
1992            "malformed_diagnostic_format_literals",
1993            "misplaced_diagnostic_attributes",
1994            "unknown_diagnostic_attributes",
1995        ],
1996    },
1997    LintGroup {
1998        lint: Lint {
1999            label: "unused",
2000            description: r##"lint group for: unused-imports, unused-variables, unused-visibilities, 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"##,
2001            default_severity: Severity::Allow,
2002            warn_since: None,
2003            deny_since: None,
2004        },
2005        children: &[
2006            "unused_imports",
2007            "unused_variables",
2008            "unused_visibilities",
2009            "unused_assignments",
2010            "dead_code",
2011            "unused_mut",
2012            "unreachable_code",
2013            "unreachable_patterns",
2014            "unused_must_use",
2015            "unused_unsafe",
2016            "path_statements",
2017            "unused_attributes",
2018            "unused_macros",
2019            "unused_macro_rules",
2020            "unused_allocation",
2021            "unused_doc_comments",
2022            "unused_extern_crates",
2023            "unused_features",
2024            "unused_labels",
2025            "unused_parens",
2026            "unused_braces",
2027            "redundant_semicolons",
2028            "map_unit_fn",
2029        ],
2030    },
2031];
2032
2033pub const RUSTDOC_LINTS: &[Lint] = &[
2034    Lint {
2035        label: "rustdoc::bare_urls",
2036        description: r##"detects URLs that are not hyperlinks"##,
2037        default_severity: Severity::Warning,
2038        warn_since: None,
2039        deny_since: None,
2040    },
2041    Lint {
2042        label: "rustdoc::broken_intra_doc_links",
2043        description: r##"failures in resolving intra-doc link targets"##,
2044        default_severity: Severity::Warning,
2045        warn_since: None,
2046        deny_since: None,
2047    },
2048    Lint {
2049        label: "rustdoc::invalid_codeblock_attributes",
2050        description: r##"codeblock attribute looks a lot like a known one"##,
2051        default_severity: Severity::Warning,
2052        warn_since: None,
2053        deny_since: None,
2054    },
2055    Lint {
2056        label: "rustdoc::invalid_html_tags",
2057        description: r##"detects invalid HTML tags in doc comments"##,
2058        default_severity: Severity::Warning,
2059        warn_since: None,
2060        deny_since: None,
2061    },
2062    Lint {
2063        label: "rustdoc::invalid_rust_codeblocks",
2064        description: r##"codeblock could not be parsed as valid Rust or is empty"##,
2065        default_severity: Severity::Warning,
2066        warn_since: None,
2067        deny_since: None,
2068    },
2069    Lint {
2070        label: "rustdoc::missing_crate_level_docs",
2071        description: r##"detects crates with no crate-level documentation"##,
2072        default_severity: Severity::Allow,
2073        warn_since: None,
2074        deny_since: None,
2075    },
2076    Lint {
2077        label: "rustdoc::missing_doc_code_examples",
2078        description: r##"detects publicly-exported items without code samples in their documentation"##,
2079        default_severity: Severity::Allow,
2080        warn_since: None,
2081        deny_since: None,
2082    },
2083    Lint {
2084        label: "rustdoc::private_doc_tests",
2085        description: r##"detects code samples in docs of private items not documented by rustdoc"##,
2086        default_severity: Severity::Allow,
2087        warn_since: None,
2088        deny_since: None,
2089    },
2090    Lint {
2091        label: "rustdoc::private_intra_doc_links",
2092        description: r##"linking from a public item to a private one"##,
2093        default_severity: Severity::Warning,
2094        warn_since: None,
2095        deny_since: None,
2096    },
2097    Lint {
2098        label: "rustdoc::redundant_explicit_links",
2099        description: r##"detects redundant explicit links in doc comments"##,
2100        default_severity: Severity::Warning,
2101        warn_since: None,
2102        deny_since: None,
2103    },
2104    Lint {
2105        label: "rustdoc::unescaped_backticks",
2106        description: r##"detects unescaped backticks in doc comments"##,
2107        default_severity: Severity::Allow,
2108        warn_since: None,
2109        deny_since: None,
2110    },
2111    Lint {
2112        label: "rustdoc::all",
2113        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"##,
2114        default_severity: Severity::Allow,
2115        warn_since: None,
2116        deny_since: None,
2117    },
2118];
2119
2120pub const RUSTDOC_LINT_GROUPS: &[LintGroup] = &[LintGroup {
2121    lint: Lint {
2122        label: "rustdoc::all",
2123        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"##,
2124        default_severity: Severity::Allow,
2125        warn_since: None,
2126        deny_since: None,
2127    },
2128    children: &[
2129        "rustdoc::broken_intra_doc_links",
2130        "rustdoc::private_intra_doc_links",
2131        "rustdoc::private_doc_tests",
2132        "rustdoc::invalid_codeblock_attributes",
2133        "rustdoc::invalid_rust_codeblocks",
2134        "rustdoc::invalid_html_tags",
2135        "rustdoc::bare_urls",
2136        "rustdoc::missing_crate_level_docs",
2137        "rustdoc::unescaped_backticks",
2138        "rustdoc::redundant_explicit_links",
2139    ],
2140}];
2141
2142pub const FEATURES: &[Lint] = &[
2143    Lint {
2144        label: "aarch64_unstable_target_feature",
2145        description: r##"# `aarch64_unstable_target_feature`
2146
2147The remaining unstable target features on aarch64.
2148
2149The tracking issue for this feature is: [#150244]
2150
2151[#150244]: https://github.com/rust-lang/rust/issues/150244
2152
2153------------------------
2154"##,
2155        default_severity: Severity::Allow,
2156        warn_since: None,
2157        deny_since: None,
2158    },
2159    Lint {
2160        label: "aarch64_ver_target_feature",
2161        description: r##"# `aarch64_ver_target_feature`
2162
2163Instruction set "version" target features on aarch64.
2164
2165The tracking issue for this feature is: [#150245]
2166
2167[#150245]: https://github.com/rust-lang/rust/issues/150245
2168
2169------------------------
2170"##,
2171        default_severity: Severity::Allow,
2172        warn_since: None,
2173        deny_since: None,
2174    },
2175    Lint {
2176        label: "abi_avr_interrupt",
2177        description: r##"# `abi_avr_interrupt`
2178
2179Allows `extern "avr-interrupt" fn()` and `extern "avr-non-blocking-interrupt" fn()`.
2180
2181The tracking issue for this feature is: [#69664]
2182
2183[#69664]: https://github.com/rust-lang/rust/issues/69664
2184
2185------------------------
2186"##,
2187        default_severity: Severity::Allow,
2188        warn_since: None,
2189        deny_since: None,
2190    },
2191    Lint {
2192        label: "abi_cmse_nonsecure_call",
2193        description: r##"# `abi_cmse_nonsecure_call`
2194
2195The tracking issue for this feature is: [#81391]
2196
2197[#81391]: https://github.com/rust-lang/rust/issues/81391
2198
2199------------------------
2200
2201The [TrustZone-M
2202feature](https://developer.arm.com/documentation/100690/latest/) is available
2203for targets with the Armv8-M architecture profile (`thumbv8m` in their target
2204name).
2205LLVM, the Rust compiler and the linker are providing
2206[support](https://developer.arm.com/documentation/ecm0359818/latest/) for the
2207TrustZone-M feature.
2208
2209One of the things provided with this unstable feature is the "cmse-nonsecure-call" function ABI.
2210This ABI is used on function pointers to non-secure code to mark a non-secure function call
2211(see [section 5.5](https://developer.arm.com/documentation/ecm0359818/latest/) for details).
2212
2213With this ABI, the compiler will do the following to perform the call:
2214* save registers needed after the call to Secure memory
2215* clear all registers that might contain confidential information
2216* clear the Least Significant Bit of the function address
2217* branches using the BLXNS instruction
2218
2219To avoid using the non-secure stack, the compiler will constrain the number and
2220type of parameters/return value.
2221
2222<!-- NOTE(ignore) this example is specific to thumbv8m targets -->
2223
2224``` rust,ignore
2225#![no_std]
2226#![feature(abi_cmse_nonsecure_call)]
2227
2228#[no_mangle]
2229pub fn call_nonsecure_function(addr: usize) -> u32 {
2230    let non_secure_function =
2231        unsafe { core::mem::transmute::<usize, extern "cmse-nonsecure-call" fn() -> u32>(addr) };
2232    non_secure_function()
2233}
2234```
2235
2236``` text
2237$ rustc --emit asm --crate-type lib --target thumbv8m.main-none-eabi function.rs
2238
2239call_nonsecure_function:
2240        .fnstart
2241        .save   {r7, lr}
2242        push    {r7, lr}
2243        .setfp  r7, sp
2244        mov     r7, sp
2245        .pad    #16
2246        sub     sp, #16
2247        str     r0, [sp, #12]
2248        ldr     r0, [sp, #12]
2249        str     r0, [sp, #8]
2250        b       .LBB0_1
2251.LBB0_1:
2252        ldr     r0, [sp, #8]
2253        push.w  {r4, r5, r6, r7, r8, r9, r10, r11}
2254        bic     r0, r0, #1
2255        mov     r1, r0
2256        mov     r2, r0
2257        mov     r3, r0
2258        mov     r4, r0
2259        mov     r5, r0
2260        mov     r6, r0
2261        mov     r7, r0
2262        mov     r8, r0
2263        mov     r9, r0
2264        mov     r10, r0
2265        mov     r11, r0
2266        mov     r12, r0
2267        msr     apsr_nzcvq, r0
2268        blxns   r0
2269        pop.w   {r4, r5, r6, r7, r8, r9, r10, r11}
2270        str     r0, [sp, #4]
2271        b       .LBB0_2
2272.LBB0_2:
2273        ldr     r0, [sp, #4]
2274        add     sp, #16
2275        pop     {r7, pc}
2276```
2277"##,
2278        default_severity: Severity::Allow,
2279        warn_since: None,
2280        deny_since: None,
2281    },
2282    Lint {
2283        label: "abi_custom",
2284        description: r##"# `abi_custom`
2285
2286Allows `extern "custom" fn()`.
2287
2288The tracking issue for this feature is: [#140829]
2289
2290[#140829]: https://github.com/rust-lang/rust/issues/140829
2291
2292------------------------
2293"##,
2294        default_severity: Severity::Allow,
2295        warn_since: None,
2296        deny_since: None,
2297    },
2298    Lint {
2299        label: "abi_gpu_kernel",
2300        description: r##"# `abi_gpu_kernel`
2301
2302Allows `extern "gpu-kernel" fn()`.
2303
2304The tracking issue for this feature is: [#135467]
2305
2306[#135467]: https://github.com/rust-lang/rust/issues/135467
2307
2308------------------------
2309"##,
2310        default_severity: Severity::Allow,
2311        warn_since: None,
2312        deny_since: None,
2313    },
2314    Lint {
2315        label: "abi_msp430_interrupt",
2316        description: r##"# `abi_msp430_interrupt`
2317
2318The tracking issue for this feature is: [#38487]
2319
2320[#38487]: https://github.com/rust-lang/rust/issues/38487
2321
2322------------------------
2323
2324In the MSP430 architecture, interrupt handlers have a special calling
2325convention. You can use the `"msp430-interrupt"` ABI to make the compiler apply
2326the right calling convention to the interrupt handlers you define.
2327
2328<!-- NOTE(ignore) this example is specific to the msp430 target -->
2329
2330``` rust,ignore
2331#![feature(abi_msp430_interrupt)]
2332#![no_std]
2333
2334// Place the interrupt handler at the appropriate memory address
2335// (Alternatively, you can use `#[used]` and remove `pub` and `#[no_mangle]`)
2336#[link_section = "__interrupt_vector_10"]
2337#[no_mangle]
2338pub static TIM0_VECTOR: extern "msp430-interrupt" fn() = tim0;
2339
2340// The interrupt handler
2341extern "msp430-interrupt" fn tim0() {
2342    // ..
2343}
2344```
2345
2346``` text
2347$ msp430-elf-objdump -CD ./target/msp430/release/app
2348Disassembly of section __interrupt_vector_10:
2349
23500000fff2 <TIM0_VECTOR>:
2351    fff2:       00 c0           interrupt service routine at 0xc000
2352
2353Disassembly of section .text:
2354
23550000c000 <int::tim0>:
2356    c000:       00 13           reti
2357```
2358"##,
2359        default_severity: Severity::Allow,
2360        warn_since: None,
2361        deny_since: None,
2362    },
2363    Lint {
2364        label: "abi_ptx",
2365        description: r##"# `abi_ptx`
2366
2367The tracking issue for this feature is: [#38788]
2368
2369[#38788]: https://github.com/rust-lang/rust/issues/38788
2370
2371------------------------
2372
2373When emitting PTX code, all vanilla Rust functions (`fn`) get translated to
2374"device" functions. These functions are *not* callable from the host via the
2375CUDA API so a crate with only device functions is not too useful!
2376
2377OTOH, "global" functions *can* be called by the host; you can think of them
2378as the real public API of your crate. To produce a global function use the
2379`"ptx-kernel"` ABI.
2380
2381<!-- NOTE(ignore) this example is specific to the nvptx targets -->
2382
2383``` rust,ignore
2384#![feature(abi_ptx)]
2385#![no_std]
2386
2387pub unsafe extern "ptx-kernel" fn global_function() {
2388    device_function();
2389}
2390
2391pub fn device_function() {
2392    // ..
2393}
2394```
2395
2396``` text
2397$ xargo rustc --target nvptx64-nvidia-cuda --release -- --emit=asm
2398
2399$ cat $(find -name '*.s')
2400//
2401// Generated by LLVM NVPTX Back-End
2402//
2403
2404.version 3.2
2405.target sm_20
2406.address_size 64
2407
2408        // .globl       _ZN6kernel15global_function17h46111ebe6516b382E
2409
2410.visible .entry _ZN6kernel15global_function17h46111ebe6516b382E()
2411{
2412
2413
2414        ret;
2415}
2416
2417        // .globl       _ZN6kernel15device_function17hd6a0e4993bbf3f78E
2418.visible .func _ZN6kernel15device_function17hd6a0e4993bbf3f78E()
2419{
2420
2421
2422        ret;
2423}
2424```
2425"##,
2426        default_severity: Severity::Allow,
2427        warn_since: None,
2428        deny_since: None,
2429    },
2430    Lint {
2431        label: "abi_riscv_interrupt",
2432        description: r##"# `abi_riscv_interrupt`
2433
2434Allows `extern "riscv-interrupt-m" fn()` and `extern "riscv-interrupt-s" fn()`.
2435
2436The tracking issue for this feature is: [#111889]
2437
2438[#111889]: https://github.com/rust-lang/rust/issues/111889
2439
2440------------------------
2441"##,
2442        default_severity: Severity::Allow,
2443        warn_since: None,
2444        deny_since: None,
2445    },
2446    Lint {
2447        label: "abi_unadjusted",
2448        description: r##"# `abi_unadjusted`
2449
2450Allows using the `unadjusted` ABI; perma-unstable.
2451
2452This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
2453
2454------------------------
2455"##,
2456        default_severity: Severity::Allow,
2457        warn_since: None,
2458        deny_since: None,
2459    },
2460    Lint {
2461        label: "abi_vectorcall",
2462        description: r##"# `abi_vectorcall`
2463
2464The tracking issue for this feature is: [#124485]
2465
2466[#124485]: https://github.com/rust-lang/rust/issues/124485
2467
2468------------------------
2469
2470Adds support for the Windows `"vectorcall"` ABI, the equivalent of `__vectorcall` in MSVC.
2471
2472```rust,ignore (only-windows-or-x86-or-x86-64)
2473extern "vectorcall" {
2474    fn add_f64s(x: f64, y: f64) -> f64;
2475}
2476
2477fn main() {
2478    println!("{}", add_f64s(2.0, 4.0));
2479}
2480```
2481"##,
2482        default_severity: Severity::Allow,
2483        warn_since: None,
2484        deny_since: None,
2485    },
2486    Lint {
2487        label: "abi_x86_interrupt",
2488        description: r##"# `abi_x86_interrupt`
2489
2490Allows `extern "x86-interrupt" fn()`.
2491
2492The tracking issue for this feature is: [#40180]
2493
2494[#40180]: https://github.com/rust-lang/rust/issues/40180
2495
2496------------------------
2497"##,
2498        default_severity: Severity::Allow,
2499        warn_since: None,
2500        deny_since: None,
2501    },
2502    Lint {
2503        label: "abort_immediate",
2504        description: r##"# `abort_immediate`
2505
2506
2507
2508The tracking issue for this feature is: [#154601]
2509
2510[#154601]: https://github.com/rust-lang/rust/issues/154601
2511
2512------------------------
2513"##,
2514        default_severity: Severity::Allow,
2515        warn_since: None,
2516        deny_since: None,
2517    },
2518    Lint {
2519        label: "abort_unwind",
2520        description: r##"# `abort_unwind`
2521
2522
2523
2524The tracking issue for this feature is: [#130338]
2525
2526[#130338]: https://github.com/rust-lang/rust/issues/130338
2527
2528------------------------
2529"##,
2530        default_severity: Severity::Allow,
2531        warn_since: None,
2532        deny_since: None,
2533    },
2534    Lint {
2535        label: "acceptfilter",
2536        description: r##"# `acceptfilter`
2537
2538
2539
2540The tracking issue for this feature is: [#121891]
2541
2542[#121891]: https://github.com/rust-lang/rust/issues/121891
2543
2544------------------------
2545"##,
2546        default_severity: Severity::Allow,
2547        warn_since: None,
2548        deny_since: None,
2549    },
2550    Lint {
2551        label: "addr_parse_ascii",
2552        description: r##"# `addr_parse_ascii`
2553
2554
2555
2556The tracking issue for this feature is: [#101035]
2557
2558[#101035]: https://github.com/rust-lang/rust/issues/101035
2559
2560------------------------
2561"##,
2562        default_severity: Severity::Allow,
2563        warn_since: None,
2564        deny_since: None,
2565    },
2566    Lint {
2567        label: "adt_const_params",
2568        description: r##"# `adt_const_params`
2569
2570The tracking issue for this feature is: [#95174]
2571
2572[#95174]: https://github.com/rust-lang/rust/issues/95174
2573
2574------------------------
2575
2576Allows for using more complex types for const parameters, such as structs or enums.
2577
2578```rust
2579#![feature(adt_const_params)]
2580#![allow(incomplete_features)]
2581
2582use std::marker::ConstParamTy;
2583
2584#[derive(ConstParamTy, PartialEq, Eq)]
2585enum Foo {
2586    A,
2587    B,
2588    C,
2589}
2590
2591#[derive(ConstParamTy, PartialEq, Eq)]
2592struct Bar {
2593    flag: bool,
2594}
2595
2596fn is_foo_a_and_bar_true<const F: Foo, const B: Bar>() -> bool {
2597    match (F, B.flag) {
2598        (Foo::A, true) => true,
2599        _ => false,
2600    }
2601}
2602```
2603"##,
2604        default_severity: Severity::Allow,
2605        warn_since: None,
2606        deny_since: None,
2607    },
2608    Lint {
2609        label: "align_to_uninit_mut",
2610        description: r##"# `align_to_uninit_mut`
2611
2612
2613
2614The tracking issue for this feature is: [#139062]
2615
2616[#139062]: https://github.com/rust-lang/rust/issues/139062
2617
2618------------------------
2619"##,
2620        default_severity: Severity::Allow,
2621        warn_since: None,
2622        deny_since: None,
2623    },
2624    Lint {
2625        label: "alloc_error_handler",
2626        description: r##"# `alloc_error_handler`
2627
2628Allows defining an `#[alloc_error_handler]`.
2629
2630The tracking issue for this feature is: [#51540]
2631
2632[#51540]: https://github.com/rust-lang/rust/issues/51540
2633
2634------------------------
2635"##,
2636        default_severity: Severity::Allow,
2637        warn_since: None,
2638        deny_since: None,
2639    },
2640    Lint {
2641        label: "alloc_error_hook",
2642        description: r##"# `alloc_error_hook`
2643
2644
2645
2646The tracking issue for this feature is: [#51245]
2647
2648[#51245]: https://github.com/rust-lang/rust/issues/51245
2649
2650------------------------
2651"##,
2652        default_severity: Severity::Allow,
2653        warn_since: None,
2654        deny_since: None,
2655    },
2656    Lint {
2657        label: "alloc_internals",
2658        description: r##"# `alloc_internals`
2659
2660
2661
2662This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
2663
2664------------------------
2665"##,
2666        default_severity: Severity::Allow,
2667        warn_since: None,
2668        deny_since: None,
2669    },
2670    Lint {
2671        label: "alloc_slice_into_array",
2672        description: r##"# `alloc_slice_into_array`
2673
2674
2675
2676The tracking issue for this feature is: [#148082]
2677
2678[#148082]: https://github.com/rust-lang/rust/issues/148082
2679
2680------------------------
2681"##,
2682        default_severity: Severity::Allow,
2683        warn_since: None,
2684        deny_since: None,
2685    },
2686    Lint {
2687        label: "allocator_api",
2688        description: r##"# `allocator_api`
2689
2690The tracking issue for this feature is [#32838]
2691
2692[#32838]: https://github.com/rust-lang/rust/issues/32838
2693
2694------------------------
2695
2696Sometimes you want the memory for one collection to use a different
2697allocator than the memory for another collection. In this case,
2698replacing the global allocator is not a workable option. Instead,
2699you need to pass in an instance of an `AllocRef` to each collection
2700for which you want a custom allocator.
2701
2702TBD
2703"##,
2704        default_severity: Severity::Allow,
2705        warn_since: None,
2706        deny_since: None,
2707    },
2708    Lint {
2709        label: "allocator_internals",
2710        description: r##"# `allocator_internals`
2711
2712This feature does not have a tracking issue, it is an unstable implementation
2713detail of the `global_allocator` feature not intended for use outside the
2714compiler.
2715
2716------------------------
2717"##,
2718        default_severity: Severity::Allow,
2719        warn_since: None,
2720        deny_since: None,
2721    },
2722    Lint {
2723        label: "alloctests",
2724        description: r##"# `alloctests`
2725
2726
2727
2728This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
2729
2730------------------------
2731"##,
2732        default_severity: Severity::Allow,
2733        warn_since: None,
2734        deny_since: None,
2735    },
2736    Lint {
2737        label: "allow_internal_unsafe",
2738        description: r##"# `allow_internal_unsafe`
2739
2740Allows using `#[allow_internal_unsafe]`. This is an attribute on `macro_rules!` and can't use the attribute handling below (it has to be checked before expansion possibly makes macros disappear).
2741
2742This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
2743
2744------------------------
2745"##,
2746        default_severity: Severity::Allow,
2747        warn_since: None,
2748        deny_since: None,
2749    },
2750    Lint {
2751        label: "allow_internal_unstable",
2752        description: r##"# `allow_internal_unstable`
2753
2754Allows using `#[allow_internal_unstable]`. This is an attribute on `macro_rules!` and can't use the attribute handling below (it has to be checked before expansion possibly makes macros disappear).
2755
2756This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
2757
2758------------------------
2759"##,
2760        default_severity: Severity::Allow,
2761        warn_since: None,
2762        deny_since: None,
2763    },
2764    Lint {
2765        label: "anonymous_lifetime_in_impl_trait",
2766        description: r##"# `anonymous_lifetime_in_impl_trait`
2767
2768Allows using anonymous lifetimes in argument-position impl-trait.
2769
2770This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
2771
2772------------------------
2773"##,
2774        default_severity: Severity::Allow,
2775        warn_since: None,
2776        deny_since: None,
2777    },
2778    Lint {
2779        label: "apx_target_feature",
2780        description: r##"# `apx_target_feature`
2781
2782The `apxf` target feature on x86
2783
2784The tracking issue for this feature is: [#139284]
2785
2786[#139284]: https://github.com/rust-lang/rust/issues/139284
2787
2788------------------------
2789"##,
2790        default_severity: Severity::Allow,
2791        warn_since: None,
2792        deny_since: None,
2793    },
2794    Lint {
2795        label: "arbitrary_self_types",
2796        description: r##"# `arbitrary_self_types`
2797
2798The tracking issue for this feature is: [#44874]
2799
2800[#44874]: https://github.com/rust-lang/rust/issues/44874
2801
2802------------------------
2803
2804Allows any type implementing `core::ops::Receiver<Target=T>` to be used as the type
2805of `self` in a method belonging to `T`.
2806
2807For example,
2808
2809```rust
2810#![feature(arbitrary_self_types)]
2811
2812struct A;
2813
2814impl A {
2815    fn f(self: SmartPtr<Self>) -> i32 { 1 }  // note self type
2816}
2817
2818struct SmartPtr<T>(T);
2819
2820impl<T> core::ops::Receiver for SmartPtr<T> {
2821    type Target = T;
2822}
2823
2824fn main() {
2825    let smart_ptr = SmartPtr(A);
2826    assert_eq!(smart_ptr.f(), 1);
2827}
2828```
2829
2830The `Receiver` trait has a blanket implementation for all `T: Deref`, so in fact
2831things like this work too:
2832
2833```rust
2834#![feature(arbitrary_self_types)]
2835
2836use std::rc::Rc;
2837
2838struct A;
2839
2840impl A {
2841    fn f(self: Rc<Self>) -> i32 { 1 } // Rc implements Deref
2842}
2843
2844fn main() {
2845    let smart_ptr = Rc::new(A);
2846    assert_eq!(smart_ptr.f(), 1);
2847}
2848```
2849
2850Interestingly, that works even without the `arbitrary_self_types` feature
2851- but that's because certain types are _effectively_ hard coded, including
2852`Rc`. ("Hard coding" isn't quite true; they use a lang-item called
2853`LegacyReceiver` to denote their special-ness in this way). With the
2854`arbitrary_self_types` feature, their special-ness goes away, and custom
2855smart pointers can achieve the same.
2856
2857## Changes to method lookup
2858
2859Method lookup previously used to work by stepping through the `Deref`
2860chain then using the resulting list of steps in two different ways:
2861
2862* To identify types that might contribute methods via their `impl`
2863  blocks (inherent methods) or via traits
2864* To identify the types that the method receiver (`a` in the above
2865  examples) can be converted to.
2866
2867With this feature, these lists are created by instead stepping through
2868the `Receiver` chain. However, a note is kept about whether the type
2869can be reached also via the `Deref` chain.
2870
2871The full chain (via `Receiver` hops) is used for the first purpose
2872(identifying relevant `impl` blocks and traits); whereas the shorter
2873list (reachable via `Deref`) is used for the second purpose. That's
2874because, to convert the method target (`a` in `a.b()`) to the self
2875type, Rust may need to be able to use `Deref::deref`. Type conversions,
2876then, can only proceed as far as the end of the `Deref` chain whereas
2877the longer `Receiver` chain can be used to explore more places where
2878useful methods might reside.
2879
2880## Types suitable for use as smart pointers
2881
2882This feature allows the creation of customised smart pointers - for example
2883your own equivalent to `Rc` or `Box` with whatever capabilities you like.
2884Those smart pointers can either implement `Deref` (if it's safe to
2885create a reference to the referent) or `Receiver` (if it isn't).
2886
2887Either way, smart pointer types should mostly _avoid having methods_.
2888Calling methods on a smart pointer leads to ambiguity about whether you're
2889aiming for a method on the pointer, or on the referent.
2890
2891Best practice is therefore to put smart pointer functionality into
2892associated functions instead - that's what's done in all the smart pointer
2893types within Rust's standard library which implement `Receiver`.
2894
2895If you choose to add any methods to your smart pointer type, your users
2896may run into errors from deshadowing, as described in the next section.
2897
2898## Avoiding shadowing
2899
2900With or without this feature, Rust emits an error if it finds two method
2901candidates, like this:
2902
2903```rust,compile_fail
2904use std::pin::Pin;
2905use std::pin::pin;
2906
2907struct A;
2908
2909impl A {
2910    fn get_ref(self: Pin<&A>) {}
2911}
2912
2913fn main() {
2914    let pinned_a: Pin<&A> = pin!(A).as_ref();
2915    let pinned_a: Pin<&A> = pinned_a.as_ref();
2916    pinned_a.get_ref(); // error[E0034]: multiple applicable items in scope
2917}
2918```
2919
2920(this is why Rust's smart pointers are mostly carefully designed to avoid
2921having methods at all, and shouldn't add new methods in future.)
2922
2923With `arbitrary_self_types`, we take care to spot some other kinds of
2924conflict:
2925
2926```rust,compile_fail
2927#![feature(arbitrary_self_types)]
2928
2929use std::pin::Pin;
2930use std::pin::pin;
2931
2932struct A;
2933
2934impl A {
2935    fn get_ref(self: &Pin<&A>) {}  // note &Pin
2936}
2937
2938fn main() {
2939    let pinned_a: Pin<&mut A> = pin!(A);
2940    let pinned_a: Pin<&A> = pinned_a.as_ref();
2941    pinned_a.get_ref();
2942}
2943```
2944
2945This is to guard against the case where an inner (referent) type has a
2946method of a given name, taking the smart pointer by reference, and then
2947the smart pointer implementer adds a similar method taking self by value.
2948As noted in the previous section, the safe option is simply
2949not to add methods to smart pointers, and then these errors can't occur.
2950"##,
2951        default_severity: Severity::Allow,
2952        warn_since: None,
2953        deny_since: None,
2954    },
2955    Lint {
2956        label: "arbitrary_self_types_pointers",
2957        description: r##"# `arbitrary_self_types_pointers`
2958
2959The tracking issue for this feature is: [#44874]
2960
2961[#38788]: https://github.com/rust-lang/rust/issues/44874
2962
2963------------------------
2964
2965This extends the [arbitrary self types] feature to allow methods to
2966receive `self` by pointer. For example:
2967
2968```rust
2969#![feature(arbitrary_self_types_pointers)]
2970
2971struct A;
2972
2973impl A {
2974    fn m(self: *const Self) {}
2975}
2976
2977fn main() {
2978    let a = A;
2979    let a_ptr: *const A = &a as *const A;
2980    a_ptr.m();
2981}
2982```
2983
2984In general this is not advised: it's thought to be better practice to wrap
2985raw pointers in a newtype wrapper which implements the `core::ops::Receiver`
2986trait, then you need "only" the `arbitrary_self_types` feature. For example:
2987
2988```rust
2989#![feature(arbitrary_self_types)]
2990#![allow(dead_code)]
2991
2992struct A;
2993
2994impl A {
2995    fn m(self: Wrapper<Self>) {} // can extract the pointer and do
2996        // what it needs
2997}
2998
2999struct Wrapper<T>(*const T);
3000
3001impl<T> core::ops::Receiver for Wrapper<T> {
3002    type Target = T;
3003}
3004
3005fn main() {
3006    let a = A;
3007    let a_ptr: *const A = &a as *const A;
3008    let a_wrapper = Wrapper(a_ptr);
3009    a_wrapper.m();
3010}
3011```
3012
3013[arbitrary self types]: arbitrary-self-types.md
3014"##,
3015        default_severity: Severity::Allow,
3016        warn_since: None,
3017        deny_since: None,
3018    },
3019    Lint {
3020        label: "arc_is_unique",
3021        description: r##"# `arc_is_unique`
3022
3023
3024
3025The tracking issue for this feature is: [#138938]
3026
3027[#138938]: https://github.com/rust-lang/rust/issues/138938
3028
3029------------------------
3030"##,
3031        default_severity: Severity::Allow,
3032        warn_since: None,
3033        deny_since: None,
3034    },
3035    Lint {
3036        label: "arm_target_feature",
3037        description: r##"# `arm_target_feature`
3038
3039Target features on arm.
3040
3041The tracking issue for this feature is: [#150246]
3042
3043[#150246]: https://github.com/rust-lang/rust/issues/150246
3044
3045------------------------
3046"##,
3047        default_severity: Severity::Allow,
3048        warn_since: None,
3049        deny_since: None,
3050    },
3051    Lint {
3052        label: "array_into_iter_constructors",
3053        description: r##"# `array_into_iter_constructors`
3054
3055
3056
3057The tracking issue for this feature is: [#91583]
3058
3059[#91583]: https://github.com/rust-lang/rust/issues/91583
3060
3061------------------------
3062"##,
3063        default_severity: Severity::Allow,
3064        warn_since: None,
3065        deny_since: None,
3066    },
3067    Lint {
3068        label: "array_ptr_get",
3069        description: r##"# `array_ptr_get`
3070
3071
3072
3073The tracking issue for this feature is: [#119834]
3074
3075[#119834]: https://github.com/rust-lang/rust/issues/119834
3076
3077------------------------
3078"##,
3079        default_severity: Severity::Allow,
3080        warn_since: None,
3081        deny_since: None,
3082    },
3083    Lint {
3084        label: "array_try_from_fn",
3085        description: r##"# `array_try_from_fn`
3086
3087
3088
3089The tracking issue for this feature is: [#89379]
3090
3091[#89379]: https://github.com/rust-lang/rust/issues/89379
3092
3093------------------------
3094"##,
3095        default_severity: Severity::Allow,
3096        warn_since: None,
3097        deny_since: None,
3098    },
3099    Lint {
3100        label: "array_try_map",
3101        description: r##"# `array_try_map`
3102
3103
3104
3105The tracking issue for this feature is: [#79711]
3106
3107[#79711]: https://github.com/rust-lang/rust/issues/79711
3108
3109------------------------
3110"##,
3111        default_severity: Severity::Allow,
3112        warn_since: None,
3113        deny_since: None,
3114    },
3115    Lint {
3116        label: "ascii_char",
3117        description: r##"# `ascii_char`
3118
3119
3120
3121The tracking issue for this feature is: [#110998]
3122
3123[#110998]: https://github.com/rust-lang/rust/issues/110998
3124
3125------------------------
3126"##,
3127        default_severity: Severity::Allow,
3128        warn_since: None,
3129        deny_since: None,
3130    },
3131    Lint {
3132        label: "ascii_char_variants",
3133        description: r##"# `ascii_char_variants`
3134
3135
3136
3137The tracking issue for this feature is: [#110998]
3138
3139[#110998]: https://github.com/rust-lang/rust/issues/110998
3140
3141------------------------
3142"##,
3143        default_severity: Severity::Allow,
3144        warn_since: None,
3145        deny_since: None,
3146    },
3147    Lint {
3148        label: "asm_experimental_arch",
3149        description: r##"# `asm_experimental_arch`
3150
3151The tracking issue for this feature is: [#93335]
3152
3153[#93335]: https://github.com/rust-lang/rust/issues/93335
3154
3155------------------------
3156
3157This feature tracks `asm!` and `global_asm!` support for the following architectures:
3158- NVPTX
3159- Hexagon
3160- MIPS32r2 and MIPS64r2
3161- wasm32
3162- BPF
3163- SPIR-V
3164- AVR
3165- MSP430
3166- M68k
3167- CSKY
3168- SPARC
3169
3170## Register classes
3171
3172| Architecture | Register class | Registers                          | LLVM constraint code |
3173| ------------ | -------------- | ---------------------------------- | -------------------- |
3174| MIPS         | `reg`          | `$[2-25]`                          | `r`                  |
3175| MIPS         | `freg`         | `$f[0-31]`                         | `f`                  |
3176| NVPTX        | `reg16`        | None\*                             | `h`                  |
3177| NVPTX        | `reg32`        | None\*                             | `r`                  |
3178| NVPTX        | `reg64`        | None\*                             | `l`                  |
3179| Hexagon      | `reg`          | `r[0-28]`                          | `r`                  |
3180| Hexagon      | `preg`         | `p[0-3]`                           | Only clobbers        |
3181| wasm32       | `local`        | None\*                             | `r`                  |
3182| BPF          | `reg`          | `r[0-10]`                          | `r`                  |
3183| BPF          | `wreg`         | `w[0-10]`                          | `w`                  |
3184| AVR          | `reg`          | `r[2-25]`, `XH`, `XL`, `ZH`, `ZL`  | `r`                  |
3185| AVR          | `reg_upper`    | `r[16-25]`, `XH`, `XL`, `ZH`, `ZL` | `d`                  |
3186| AVR          | `reg_pair`     | `r3r2` .. `r25r24`, `X`, `Z`       | `r`                  |
3187| AVR          | `reg_iw`       | `r25r24`, `X`, `Z`                 | `w`                  |
3188| AVR          | `reg_ptr`      | `X`, `Z`                           | `e`                  |
3189| MSP430       | `reg`          | `r[0-15]`                          | `r`                  |
3190| M68k         | `reg`          | `d[0-7]`, `a[0-7]`                 | `r`                  |
3191| M68k         | `reg_data`     | `d[0-7]`                           | `d`                  |
3192| M68k         | `reg_addr`     | `a[0-3]`                           | `a`                  |
3193| CSKY         | `reg`          | `r[0-31]`                          | `r`                  |
3194| CSKY         | `freg`         | `f[0-31]`                          | `f`                  |
3195| SPARC        | `reg`          | `r[2-29]`                          | `r`                  |
3196| SPARC        | `yreg`         | `y`                                | Only clobbers        |
3197
3198> **Notes**:
3199> - NVPTX doesn't have a fixed register set, so named registers are not supported.
3200>
3201> - WebAssembly doesn't have registers, so named registers are not supported.
3202
3203# Register class supported types
3204
3205| Architecture | Register class                  | Target feature | Allowed types                           |
3206| ------------ | ------------------------------- | -------------- | --------------------------------------- |
3207| MIPS32       | `reg`                           | None           | `i8`, `i16`, `i32`, `f32`               |
3208| MIPS32       | `freg`                          | None           | `f32`, `f64`                            |
3209| MIPS64       | `reg`                           | None           | `i8`, `i16`, `i32`, `i64`, `f32`, `f64` |
3210| MIPS64       | `freg`                          | None           | `f32`, `f64`                            |
3211| NVPTX        | `reg16`                         | None           | `i8`, `i16`                             |
3212| NVPTX        | `reg32`                         | None           | `i8`, `i16`, `i32`, `f32`               |
3213| NVPTX        | `reg64`                         | None           | `i8`, `i16`, `i32`, `f32`, `i64`, `f64` |
3214| Hexagon      | `reg`                           | None           | `i8`, `i16`, `i32`, `f32`               |
3215| Hexagon      | `preg`                          | N/A            | Only clobbers                           |
3216| wasm32       | `local`                         | None           | `i8` `i16` `i32` `i64` `f32` `f64`      |
3217| BPF          | `reg`                           | None           | `i8` `i16` `i32` `i64`                  |
3218| BPF          | `wreg`                          | `alu32`        | `i8` `i16` `i32`                        |
3219| AVR          | `reg`, `reg_upper`              | None           | `i8`                                    |
3220| AVR          | `reg_pair`, `reg_iw`, `reg_ptr` | None           | `i16`                                   |
3221| MSP430       | `reg`                           | None           | `i8`, `i16`                             |
3222| M68k         | `reg`, `reg_addr`               | None           | `i16`, `i32`                            |
3223| M68k         | `reg_data`                      | None           | `i8`, `i16`, `i32`                      |
3224| CSKY         | `reg`                           | None           | `i8`, `i16`, `i32`                      |
3225| CSKY         | `freg`                          | None           | `f32`,                                  |
3226| SPARC        | `reg`                           | None           | `i8`, `i16`, `i32`, `i64` (SPARC64 only) |
3227| SPARC        | `yreg`                          | N/A            | Only clobbers                           |
3228
3229## Register aliases
3230
3231| Architecture | Base register | Aliases   |
3232| ------------ | ------------- | --------- |
3233| Hexagon      | `r29`         | `sp`      |
3234| Hexagon      | `r30`         | `fr`      |
3235| Hexagon      | `r31`         | `lr`      |
3236| BPF          | `r[0-10]`     | `w[0-10]` |
3237| AVR          | `XH`          | `r27`     |
3238| AVR          | `XL`          | `r26`     |
3239| AVR          | `ZH`          | `r31`     |
3240| AVR          | `ZL`          | `r30`     |
3241| MSP430       | `r0`          | `pc`      |
3242| MSP430       | `r1`          | `sp`      |
3243| MSP430       | `r2`          | `sr`      |
3244| MSP430       | `r3`          | `cg`      |
3245| MSP430       | `r4`          | `fp`      |
3246| M68k         | `a5`          | `bp`      |
3247| M68k         | `a6`          | `fp`      |
3248| M68k         | `a7`          | `sp`, `usp`, `ssp`, `isp` |
3249| CSKY         | `r[0-3]`      | `a[0-3]`  |
3250| CSKY         | `r[4-11]`     | `l[0-7]`  |
3251| CSKY         | `r[12-13]`    | `t[0-1]`  |
3252| CSKY         | `r14`         | `sp`      |
3253| CSKY         | `r15`         | `lr`      |
3254| CSKY         | `r[16-17]`    | `l[8-9]`  |
3255| CSKY         | `r[18-25]`    | `t[2-9]`  |
3256| CSKY         | `r28`         | `rgb`     |
3257| CSKY         | `r29`         | `rtb`     |
3258| CSKY         | `r30`         | `svbr`    |
3259| CSKY         | `r31`         | `tls`     |
3260| SPARC        | `r[0-7]`      | `g[0-7]`  |
3261| SPARC        | `r[8-15]`     | `o[0-7]`  |
3262| SPARC        | `r[16-23]`    | `l[0-7]`  |
3263| SPARC        | `r[24-31]`    | `i[0-7]`  |
3264
3265> **Notes**:
3266> - TI does not mandate a frame pointer for MSP430, but toolchains are allowed
3267    to use one; LLVM uses `r4`.
3268
3269## Unsupported registers
3270
3271| Architecture | Unsupported register                    | Reason                                                                                                                                                                              |
3272| ------------ | --------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
3273| All          | `sp`, `r14`/`o6` (SPARC)                | The stack pointer must be restored to its original value at the end of an asm code block.                                                                                           |
3274| All          | `fr` (Hexagon) `$fp` (MIPS), `Y` (AVR), `r4` (MSP430), `a6` (M68k), `r30`/`i6` (SPARC) | The frame pointer cannot be used as an input or output.                                                             |
3275| All          | `r19` (Hexagon) | These are used internally by LLVM as "base pointer" for functions with complex stack frames.                                                                              |
3276| MIPS         | `$0` or `$zero`                         | This is a constant zero register which can't be modified.                                                                                                                           |
3277| MIPS         | `$1` or `$at`                           | Reserved for assembler.                                                                                                                                                             |
3278| MIPS         | `$26`/`$k0`, `$27`/`$k1`                | OS-reserved registers.                                                                                                                                                              |
3279| MIPS         | `$28`/`$gp`                             | Global pointer cannot be used as inputs or outputs.                                                                                                                                 |
3280| MIPS         | `$ra`                                   | Return address cannot be used as inputs or outputs.                                                                                                                                 |
3281| Hexagon      | `lr`                                    | This is the link register which cannot be used as an input or output.                                                                                                               |
3282| 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. |
3283|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.                          |
3284| M68k         | `a4`, `a5`                              | Used internally by LLVM for the base pointer and global base pointer. |
3285| CSKY         | `r7`, `r28`                             | Used internally by LLVM for the base pointer and global base pointer. |
3286| CSKY         | `r8`                                    | Used internally by LLVM for the frame pointer. |
3287| CSKY         | `r14`                                   | Used internally by LLVM for the stack pointer. |
3288| CSKY         | `r15`                                   | This is the link register. |
3289| CSKY         | `r[26-30]`                              | Reserved by its ABI.       |
3290| CSKY         | `r31`                                   | This is the TLS register.  |
3291| SPARC        | `r0`/`g0`                               | This is always zero and cannot be used as inputs or outputs. |
3292| SPARC        | `r1`/`g1`                               | Used internally by LLVM. |
3293| SPARC        | `r5`/`g5`                               | Reserved for system. (SPARC32 only) |
3294| SPARC        | `r6`/`g6`, `r7`/`g7`                    | Reserved for system. |
3295| SPARC        | `r31`/`i7`                              | Return address cannot be used as inputs or outputs. |
3296
3297
3298## Template modifiers
3299
3300| Architecture | Register class | Modifier | Example output | LLVM modifier |
3301| ------------ | -------------- | -------- | -------------- | ------------- |
3302| MIPS         | `reg`          | None     | `$2`           | None          |
3303| MIPS         | `freg`         | None     | `$f0`          | None          |
3304| NVPTX        | `reg16`        | None     | `rs0`          | None          |
3305| NVPTX        | `reg32`        | None     | `r0`           | None          |
3306| NVPTX        | `reg64`        | None     | `rd0`          | None          |
3307| Hexagon      | `reg`          | None     | `r0`           | None          |
3308| SPARC        | `reg`          | None     | `%o0`          | None          |
3309| CSKY         | `reg`          | None     | `r0`           | None          |
3310| CSKY         | `freg`         | None     | `f0`           | None          |
3311
3312# Flags covered by `preserves_flags`
3313
3314These flags registers must be restored upon exiting the asm block if the `preserves_flags` option is set:
3315- AVR
3316  - The status register `SREG`.
3317- MSP430
3318  - The status register `r2`.
3319- M68k
3320  - The condition code register `ccr`.
3321- SPARC
3322  - Integer condition codes (`icc` and `xcc`)
3323  - Floating-point condition codes (`fcc[0-3]`)
3324- CSKY
3325  - Condition/carry bit (C) in `PSR`.
3326"##,
3327        default_severity: Severity::Allow,
3328        warn_since: None,
3329        deny_since: None,
3330    },
3331    Lint {
3332        label: "asm_experimental_reg",
3333        description: r##"# `asm_experimental_arch`
3334
3335The tracking issue for this feature is: [#133416]
3336
3337[#133416]: https://github.com/rust-lang/rust/issues/133416
3338
3339------------------------
3340
3341This tracks support for additional registers in architectures where inline assembly is already stable.
3342
3343## Register classes
3344
3345| Architecture | Register class | Registers | LLVM constraint code |
3346| ------------ | -------------- | --------- | -------------------- |
3347
3348## Register class supported types
3349
3350| Architecture | Register class | Target feature | Allowed types |
3351| ------------ | -------------- | -------------- | ------------- |
3352| x86 | `xmm_reg` | `sse` | `i128` |
3353| x86 | `ymm_reg` | `avx` | `i128` |
3354| x86 | `zmm_reg` | `avx512f` | `i128` |
3355
3356## Register aliases
3357
3358| Architecture | Base register | Aliases |
3359| ------------ | ------------- | ------- |
3360
3361## Unsupported registers
3362
3363| Architecture | Unsupported register | Reason |
3364| ------------ | -------------------- | ------ |
3365
3366## Template modifiers
3367
3368| Architecture | Register class | Modifier | Example output | LLVM modifier |
3369| ------------ | -------------- | -------- | -------------- | ------------- |
3370"##,
3371        default_severity: Severity::Allow,
3372        warn_since: None,
3373        deny_since: None,
3374    },
3375    Lint {
3376        label: "asm_goto_with_outputs",
3377        description: r##"# `asm_goto_with_outputs`
3378
3379The tracking issue for this feature is: [#119364]
3380
3381[#119364]: https://github.com/rust-lang/rust/issues/119364
3382
3383------------------------
3384
3385This feature allows label operands to be used together with output operands.
3386
3387Example:
3388```rust,ignore (partial-example, x86-only)
3389
3390unsafe {
3391    let a: usize;
3392    asm!(
3393        "mov {}, 1"
3394        "jmp {}",
3395        out(reg) a,
3396        label {
3397            println!("Jumped from asm {}!", a);
3398        }
3399    );
3400}
3401```
3402
3403The output operands are assigned before the label blocks are executed.
3404"##,
3405        default_severity: Severity::Allow,
3406        warn_since: None,
3407        deny_since: None,
3408    },
3409    Lint {
3410        label: "asm_unwind",
3411        description: r##"# `asm_unwind`
3412
3413The tracking issue for this feature is: [#93334]
3414
3415[#93334]: https://github.com/rust-lang/rust/issues/93334
3416
3417------------------------
3418
3419This 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.
3420"##,
3421        default_severity: Severity::Allow,
3422        warn_since: None,
3423        deny_since: None,
3424    },
3425    Lint {
3426        label: "associated_type_defaults",
3427        description: r##"# `associated_type_defaults`
3428
3429Allows associated type defaults.
3430
3431The tracking issue for this feature is: [#29661]
3432
3433[#29661]: https://github.com/rust-lang/rust/issues/29661
3434
3435------------------------
3436"##,
3437        default_severity: Severity::Allow,
3438        warn_since: None,
3439        deny_since: None,
3440    },
3441    Lint {
3442        label: "async_drop",
3443        description: r##"# `async_drop`
3444
3445Allows implementing `AsyncDrop`.
3446
3447The tracking issue for this feature is: [#126482]
3448
3449[#126482]: https://github.com/rust-lang/rust/issues/126482
3450
3451------------------------
3452"##,
3453        default_severity: Severity::Allow,
3454        warn_since: None,
3455        deny_since: None,
3456    },
3457    Lint {
3458        label: "async_fn_in_dyn_trait",
3459        description: r##"# `async_fn_in_dyn_trait`
3460
3461Allows async functions to be called from `dyn Trait`.
3462
3463The tracking issue for this feature is: [#133119]
3464
3465[#133119]: https://github.com/rust-lang/rust/issues/133119
3466
3467------------------------
3468"##,
3469        default_severity: Severity::Allow,
3470        warn_since: None,
3471        deny_since: None,
3472    },
3473    Lint {
3474        label: "async_fn_track_caller",
3475        description: r##"# `async_fn_track_caller`
3476
3477Allows `#[track_caller]` on async functions.
3478
3479The tracking issue for this feature is: [#110011]
3480
3481[#110011]: https://github.com/rust-lang/rust/issues/110011
3482
3483------------------------
3484"##,
3485        default_severity: Severity::Allow,
3486        warn_since: None,
3487        deny_since: None,
3488    },
3489    Lint {
3490        label: "async_fn_traits",
3491        description: r##"# `async_fn_traits`
3492
3493See Also: [`fn_traits`](../library-features/fn-traits.md)
3494
3495----
3496
3497The `async_fn_traits` feature allows for implementation of the [`AsyncFn*`] traits
3498for creating custom closure-like types that return futures.
3499
3500[`AsyncFn*`]: ../../std/ops/trait.AsyncFn.html
3501
3502The main difference to the `Fn*` family of traits is that `AsyncFn` can return a future
3503that borrows from itself (`FnOnce::Output` has no lifetime parameters, while `AsyncFnMut::CallRefFuture` does).
3504"##,
3505        default_severity: Severity::Allow,
3506        warn_since: None,
3507        deny_since: None,
3508    },
3509    Lint {
3510        label: "async_for_loop",
3511        description: r##"# `async_for_loop`
3512
3513Allows `for await` loops.
3514
3515The tracking issue for this feature is: [#118898]
3516
3517[#118898]: https://github.com/rust-lang/rust/issues/118898
3518
3519------------------------
3520"##,
3521        default_severity: Severity::Allow,
3522        warn_since: None,
3523        deny_since: None,
3524    },
3525    Lint {
3526        label: "async_gen_internals",
3527        description: r##"# `async_gen_internals`
3528
3529
3530
3531This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
3532
3533------------------------
3534"##,
3535        default_severity: Severity::Allow,
3536        warn_since: None,
3537        deny_since: None,
3538    },
3539    Lint {
3540        label: "async_iter_from_iter",
3541        description: r##"# `async_iter_from_iter`
3542
3543
3544
3545The tracking issue for this feature is: [#81798]
3546
3547[#81798]: https://github.com/rust-lang/rust/issues/81798
3548
3549------------------------
3550"##,
3551        default_severity: Severity::Allow,
3552        warn_since: None,
3553        deny_since: None,
3554    },
3555    Lint {
3556        label: "async_iterator",
3557        description: r##"# `async_iterator`
3558
3559
3560
3561The tracking issue for this feature is: [#79024]
3562
3563[#79024]: https://github.com/rust-lang/rust/issues/79024
3564
3565------------------------
3566"##,
3567        default_severity: Severity::Allow,
3568        warn_since: None,
3569        deny_since: None,
3570    },
3571    Lint {
3572        label: "async_trait_bounds",
3573        description: r##"# `async_trait_bounds`
3574
3575Allows `async` trait bound modifier.
3576
3577The tracking issue for this feature is: [#62290]
3578
3579[#62290]: https://github.com/rust-lang/rust/issues/62290
3580
3581------------------------
3582"##,
3583        default_severity: Severity::Allow,
3584        warn_since: None,
3585        deny_since: None,
3586    },
3587    Lint {
3588        label: "atomic_from_mut",
3589        description: r##"# `atomic_from_mut`
3590
3591
3592
3593The tracking issue for this feature is: [#76314]
3594
3595[#76314]: https://github.com/rust-lang/rust/issues/76314
3596
3597------------------------
3598"##,
3599        default_severity: Severity::Allow,
3600        warn_since: None,
3601        deny_since: None,
3602    },
3603    Lint {
3604        label: "atomic_internals",
3605        description: r##"# `atomic_internals`
3606
3607
3608
3609This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
3610
3611------------------------
3612"##,
3613        default_severity: Severity::Allow,
3614        warn_since: None,
3615        deny_since: None,
3616    },
3617    Lint {
3618        label: "atomic_ptr_null",
3619        description: r##"# `atomic_ptr_null`
3620
3621
3622
3623The tracking issue for this feature is: [#150733]
3624
3625[#150733]: https://github.com/rust-lang/rust/issues/150733
3626
3627------------------------
3628"##,
3629        default_severity: Severity::Allow,
3630        warn_since: None,
3631        deny_since: None,
3632    },
3633    Lint {
3634        label: "auto_traits",
3635        description: r##"# `auto_traits`
3636
3637The tracking issue for this feature is [#13231]
3638
3639[#13231]: https://github.com/rust-lang/rust/issues/13231
3640
3641----
3642
3643The `auto_traits` feature gate allows you to define auto traits.
3644
3645Auto traits, like [`Send`] or [`Sync`] in the standard library, are marker traits
3646that are automatically implemented for every type, unless the type, or a type it contains,
3647has explicitly opted out via a negative impl. (Negative impls are separately controlled
3648by the `negative_impls` feature.)
3649
3650[`Send`]: ../../std/marker/trait.Send.html
3651[`Sync`]: ../../std/marker/trait.Sync.html
3652
3653```rust,ignore (partial-example)
3654impl !Trait for Type {}
3655```
3656
3657Example:
3658
3659```rust
3660#![feature(negative_impls)]
3661#![feature(auto_traits)]
3662
3663auto trait Valid {}
3664
3665struct True;
3666struct False;
3667
3668impl !Valid for False {}
3669
3670struct MaybeValid<T>(T);
3671
3672fn must_be_valid<T: Valid>(_t: T) { }
3673
3674fn main() {
3675    // works
3676    must_be_valid( MaybeValid(True) );
3677
3678    // compiler error - trait bound not satisfied
3679    // must_be_valid( MaybeValid(False) );
3680}
3681```
3682
3683## Automatic trait implementations
3684
3685When a type is declared as an `auto trait`, we will automatically
3686create impls for every struct/enum/union, unless an explicit impl is
3687provided. These automatic impls contain a where clause for each field
3688of the form `T: AutoTrait`, where `T` is the type of the field and
3689`AutoTrait` is the auto trait in question. As an example, consider the
3690struct `List` and the auto trait `Send`:
3691
3692```rust
3693struct List<T> {
3694  data: T,
3695  next: Option<Box<List<T>>>,
3696}
3697```
3698
3699Presuming that there is no explicit impl of `Send` for `List`, the
3700compiler will supply an automatic impl of the form:
3701
3702```rust
3703struct List<T> {
3704  data: T,
3705  next: Option<Box<List<T>>>,
3706}
3707
3708unsafe impl<T> Send for List<T>
3709where
3710  T: Send, // from the field `data`
3711  Option<Box<List<T>>>: Send, // from the field `next`
3712{ }
3713```
3714
3715Explicit impls may be either positive or negative. They take the form:
3716
3717```rust,ignore (partial-example)
3718impl<...> AutoTrait for StructName<..> { }
3719impl<...> !AutoTrait for StructName<..> { }
3720```
3721
3722## Coinduction: Auto traits permit cyclic matching
3723
3724Unlike ordinary trait matching, auto traits are **coinductive**. This
3725means, in short, that cycles which occur in trait matching are
3726considered ok. As an example, consider the recursive struct `List`
3727introduced in the previous section. In attempting to determine whether
3728`List: Send`, we would wind up in a cycle: to apply the impl, we must
3729show that `Option<Box<List>>: Send`, which will in turn require
3730`Box<List>: Send` and then finally `List: Send` again. Under ordinary
3731trait matching, this cycle would be an error, but for an auto trait it
3732is considered a successful match.
3733
3734## Items
3735
3736Auto traits cannot have any trait items, such as methods or associated types. This ensures that we can generate default implementations.
3737
3738## Supertraits
3739
3740Auto traits cannot have supertraits. This is for soundness reasons, as the interaction of coinduction with implied bounds is difficult to reconcile.
3741"##,
3742        default_severity: Severity::Allow,
3743        warn_since: None,
3744        deny_since: None,
3745    },
3746    Lint {
3747        label: "autodiff",
3748        description: r##"# `autodiff`
3749
3750
3751
3752The tracking issue for this feature is: [#124509]
3753
3754[#124509]: https://github.com/rust-lang/rust/issues/124509
3755
3756------------------------
3757"##,
3758        default_severity: Severity::Allow,
3759        warn_since: None,
3760        deny_since: None,
3761    },
3762    Lint {
3763        label: "avr_target_feature",
3764        description: r##"# `avr_target_feature`
3765
3766Target features on avr.
3767
3768The tracking issue for this feature is: [#146889]
3769
3770[#146889]: https://github.com/rust-lang/rust/issues/146889
3771
3772------------------------
3773"##,
3774        default_severity: Severity::Allow,
3775        warn_since: None,
3776        deny_since: None,
3777    },
3778    Lint {
3779        label: "avx10_target_feature",
3780        description: r##"# `avx10_target_feature`
3781
3782Allows using Intel AVX10 target features and intrinsics
3783
3784The tracking issue for this feature is: [#138843]
3785
3786[#138843]: https://github.com/rust-lang/rust/issues/138843
3787
3788------------------------
3789"##,
3790        default_severity: Severity::Allow,
3791        warn_since: None,
3792        deny_since: None,
3793    },
3794    Lint {
3795        label: "backtrace_frames",
3796        description: r##"# `backtrace_frames`
3797
3798
3799
3800The tracking issue for this feature is: [#79676]
3801
3802[#79676]: https://github.com/rust-lang/rust/issues/79676
3803
3804------------------------
3805"##,
3806        default_severity: Severity::Allow,
3807        warn_since: None,
3808        deny_since: None,
3809    },
3810    Lint {
3811        label: "bikeshed_guaranteed_no_drop",
3812        description: r##"# `bikeshed_guaranteed_no_drop`
3813
3814
3815
3816This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
3817
3818------------------------
3819"##,
3820        default_severity: Severity::Allow,
3821        warn_since: None,
3822        deny_since: None,
3823    },
3824    Lint {
3825        label: "binary_heap_as_mut_slice",
3826        description: r##"# `binary_heap_as_mut_slice`
3827
3828
3829
3830The tracking issue for this feature is: [#154009]
3831
3832[#154009]: https://github.com/rust-lang/rust/issues/154009
3833
3834------------------------
3835"##,
3836        default_severity: Severity::Allow,
3837        warn_since: None,
3838        deny_since: None,
3839    },
3840    Lint {
3841        label: "binary_heap_drain_sorted",
3842        description: r##"# `binary_heap_drain_sorted`
3843
3844
3845
3846The tracking issue for this feature is: [#59278]
3847
3848[#59278]: https://github.com/rust-lang/rust/issues/59278
3849
3850------------------------
3851"##,
3852        default_severity: Severity::Allow,
3853        warn_since: None,
3854        deny_since: None,
3855    },
3856    Lint {
3857        label: "binary_heap_from_raw_vec",
3858        description: r##"# `binary_heap_from_raw_vec`
3859
3860
3861
3862The tracking issue for this feature is: [#152500]
3863
3864[#152500]: https://github.com/rust-lang/rust/issues/152500
3865
3866------------------------
3867"##,
3868        default_severity: Severity::Allow,
3869        warn_since: None,
3870        deny_since: None,
3871    },
3872    Lint {
3873        label: "binary_heap_into_iter_sorted",
3874        description: r##"# `binary_heap_into_iter_sorted`
3875
3876
3877
3878The tracking issue for this feature is: [#59278]
3879
3880[#59278]: https://github.com/rust-lang/rust/issues/59278
3881
3882------------------------
3883"##,
3884        default_severity: Severity::Allow,
3885        warn_since: None,
3886        deny_since: None,
3887    },
3888    Lint {
3889        label: "binary_heap_peek_mut_refresh",
3890        description: r##"# `binary_heap_peek_mut_refresh`
3891
3892
3893
3894The tracking issue for this feature is: [#138355]
3895
3896[#138355]: https://github.com/rust-lang/rust/issues/138355
3897
3898------------------------
3899"##,
3900        default_severity: Severity::Allow,
3901        warn_since: None,
3902        deny_since: None,
3903    },
3904    Lint {
3905        label: "binary_heap_pop_if",
3906        description: r##"# `binary_heap_pop_if`
3907
3908
3909
3910The tracking issue for this feature is: [#151828]
3911
3912[#151828]: https://github.com/rust-lang/rust/issues/151828
3913
3914------------------------
3915"##,
3916        default_severity: Severity::Allow,
3917        warn_since: None,
3918        deny_since: None,
3919    },
3920    Lint {
3921        label: "bool_to_result",
3922        description: r##"# `bool_to_result`
3923
3924
3925
3926The tracking issue for this feature is: [#142748]
3927
3928[#142748]: https://github.com/rust-lang/rust/issues/142748
3929
3930------------------------
3931"##,
3932        default_severity: Severity::Allow,
3933        warn_since: None,
3934        deny_since: None,
3935    },
3936    Lint {
3937        label: "borrowed_buf_init",
3938        description: r##"# `borrowed_buf_init`
3939
3940
3941
3942The tracking issue for this feature is: [#78485]
3943
3944[#78485]: https://github.com/rust-lang/rust/issues/78485
3945
3946------------------------
3947"##,
3948        default_severity: Severity::Allow,
3949        warn_since: None,
3950        deny_since: None,
3951    },
3952    Lint {
3953        label: "bound_as_ref",
3954        description: r##"# `bound_as_ref`
3955
3956
3957
3958The tracking issue for this feature is: [#80996]
3959
3960[#80996]: https://github.com/rust-lang/rust/issues/80996
3961
3962------------------------
3963"##,
3964        default_severity: Severity::Allow,
3965        warn_since: None,
3966        deny_since: None,
3967    },
3968    Lint {
3969        label: "bound_copied",
3970        description: r##"# `bound_copied`
3971
3972
3973
3974The tracking issue for this feature is: [#145966]
3975
3976[#145966]: https://github.com/rust-lang/rust/issues/145966
3977
3978------------------------
3979"##,
3980        default_severity: Severity::Allow,
3981        warn_since: None,
3982        deny_since: None,
3983    },
3984    Lint {
3985        label: "box_as_ptr",
3986        description: r##"# `box_as_ptr`
3987
3988
3989
3990The tracking issue for this feature is: [#129090]
3991
3992[#129090]: https://github.com/rust-lang/rust/issues/129090
3993
3994------------------------
3995"##,
3996        default_severity: Severity::Allow,
3997        warn_since: None,
3998        deny_since: None,
3999    },
4000    Lint {
4001        label: "box_into_boxed_slice",
4002        description: r##"# `box_into_boxed_slice`
4003
4004
4005
4006The tracking issue for this feature is: [#71582]
4007
4008[#71582]: https://github.com/rust-lang/rust/issues/71582
4009
4010------------------------
4011"##,
4012        default_severity: Severity::Allow,
4013        warn_since: None,
4014        deny_since: None,
4015    },
4016    Lint {
4017        label: "box_into_inner",
4018        description: r##"# `box_into_inner`
4019
4020
4021
4022The tracking issue for this feature is: [#80437]
4023
4024[#80437]: https://github.com/rust-lang/rust/issues/80437
4025
4026------------------------
4027"##,
4028        default_severity: Severity::Allow,
4029        warn_since: None,
4030        deny_since: None,
4031    },
4032    Lint {
4033        label: "box_patterns",
4034        description: r##"# `box_patterns`
4035
4036The tracking issue for this feature is: [#29641]
4037
4038[#29641]: https://github.com/rust-lang/rust/issues/29641
4039
4040------------------------
4041
4042> **Note**: This feature will be superseded by [`deref_patterns`] in the future.
4043
4044Box patterns let you match on `Box<T>`s:
4045
4046
4047```rust
4048#![feature(box_patterns)]
4049
4050fn main() {
4051    let b = Some(Box::new(5));
4052    match b {
4053        Some(box n) if n < 0 => {
4054            println!("Box contains negative number {n}");
4055        },
4056        Some(box n) if n >= 0 => {
4057            println!("Box contains non-negative number {n}");
4058        },
4059        None => {
4060            println!("No box");
4061        },
4062        _ => unreachable!()
4063    }
4064}
4065```
4066
4067[`deref_patterns`]: ./deref-patterns.md
4068"##,
4069        default_severity: Severity::Allow,
4070        warn_since: None,
4071        deny_since: None,
4072    },
4073    Lint {
4074        label: "box_take",
4075        description: r##"# `box_take`
4076
4077
4078
4079The tracking issue for this feature is: [#147212]
4080
4081[#147212]: https://github.com/rust-lang/rust/issues/147212
4082
4083------------------------
4084"##,
4085        default_severity: Severity::Allow,
4086        warn_since: None,
4087        deny_since: None,
4088    },
4089    Lint {
4090        label: "box_vec_non_null",
4091        description: r##"# `box_vec_non_null`
4092
4093
4094
4095The tracking issue for this feature is: [#130364]
4096
4097[#130364]: https://github.com/rust-lang/rust/issues/130364
4098
4099------------------------
4100"##,
4101        default_severity: Severity::Allow,
4102        warn_since: None,
4103        deny_since: None,
4104    },
4105    Lint {
4106        label: "bpf_target_feature",
4107        description: r##"# `bpf_target_feature`
4108
4109Target features on bpf.
4110
4111The tracking issue for this feature is: [#150247]
4112
4113[#150247]: https://github.com/rust-lang/rust/issues/150247
4114
4115------------------------
4116"##,
4117        default_severity: Severity::Allow,
4118        warn_since: None,
4119        deny_since: None,
4120    },
4121    Lint {
4122        label: "breakpoint",
4123        description: r##"# `breakpoint`
4124
4125
4126
4127The tracking issue for this feature is: [#133724]
4128
4129[#133724]: https://github.com/rust-lang/rust/issues/133724
4130
4131------------------------
4132"##,
4133        default_severity: Severity::Allow,
4134        warn_since: None,
4135        deny_since: None,
4136    },
4137    Lint {
4138        label: "bstr",
4139        description: r##"# `bstr`
4140
4141
4142
4143The tracking issue for this feature is: [#134915]
4144
4145[#134915]: https://github.com/rust-lang/rust/issues/134915
4146
4147------------------------
4148"##,
4149        default_severity: Severity::Allow,
4150        warn_since: None,
4151        deny_since: None,
4152    },
4153    Lint {
4154        label: "bstr_internals",
4155        description: r##"# `bstr_internals`
4156
4157
4158
4159This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
4160
4161------------------------
4162"##,
4163        default_severity: Severity::Allow,
4164        warn_since: None,
4165        deny_since: None,
4166    },
4167    Lint {
4168        label: "btree_cursors",
4169        description: r##"# `btree_cursors`
4170
4171
4172
4173The tracking issue for this feature is: [#107540]
4174
4175[#107540]: https://github.com/rust-lang/rust/issues/107540
4176
4177------------------------
4178"##,
4179        default_severity: Severity::Allow,
4180        warn_since: None,
4181        deny_since: None,
4182    },
4183    Lint {
4184        label: "btree_merge",
4185        description: r##"# `btree_merge`
4186
4187
4188
4189The tracking issue for this feature is: [#152152]
4190
4191[#152152]: https://github.com/rust-lang/rust/issues/152152
4192
4193------------------------
4194"##,
4195        default_severity: Severity::Allow,
4196        warn_since: None,
4197        deny_since: None,
4198    },
4199    Lint {
4200        label: "btree_set_entry",
4201        description: r##"# `btree_set_entry`
4202
4203
4204
4205The tracking issue for this feature is: [#133549]
4206
4207[#133549]: https://github.com/rust-lang/rust/issues/133549
4208
4209------------------------
4210"##,
4211        default_severity: Severity::Allow,
4212        warn_since: None,
4213        deny_since: None,
4214    },
4215    Lint {
4216        label: "btreemap_alloc",
4217        description: r##"# `btreemap_alloc`
4218
4219
4220
4221The tracking issue for this feature is: [#32838]
4222
4223[#32838]: https://github.com/rust-lang/rust/issues/32838
4224
4225------------------------
4226"##,
4227        default_severity: Severity::Allow,
4228        warn_since: None,
4229        deny_since: None,
4230    },
4231    Lint {
4232        label: "buf_read_has_data_left",
4233        description: r##"# `buf_read_has_data_left`
4234
4235
4236
4237The tracking issue for this feature is: [#86423]
4238
4239[#86423]: https://github.com/rust-lang/rust/issues/86423
4240
4241------------------------
4242"##,
4243        default_severity: Severity::Allow,
4244        warn_since: None,
4245        deny_since: None,
4246    },
4247    Lint {
4248        label: "bufreader_peek",
4249        description: r##"# `bufreader_peek`
4250
4251
4252
4253The tracking issue for this feature is: [#128405]
4254
4255[#128405]: https://github.com/rust-lang/rust/issues/128405
4256
4257------------------------
4258"##,
4259        default_severity: Severity::Allow,
4260        warn_since: None,
4261        deny_since: None,
4262    },
4263    Lint {
4264        label: "builtin_syntax",
4265        description: r##"# `builtin_syntax`
4266
4267Allows builtin # foo() syntax
4268
4269The tracking issue for this feature is: [#110680]
4270
4271[#110680]: https://github.com/rust-lang/rust/issues/110680
4272
4273------------------------
4274"##,
4275        default_severity: Severity::Allow,
4276        warn_since: None,
4277        deny_since: None,
4278    },
4279    Lint {
4280        label: "c_size_t",
4281        description: r##"# `c_size_t`
4282
4283
4284
4285The tracking issue for this feature is: [#88345]
4286
4287[#88345]: https://github.com/rust-lang/rust/issues/88345
4288
4289------------------------
4290"##,
4291        default_severity: Severity::Allow,
4292        warn_since: None,
4293        deny_since: None,
4294    },
4295    Lint {
4296        label: "c_variadic",
4297        description: r##"# `c_variadic`
4298
4299The tracking issue for this feature is: [#44930]
4300
4301[#44930]: https://github.com/rust-lang/rust/issues/44930
4302
4303------------------------
4304
4305The `c_variadic` language feature enables C-variadic functions to be
4306defined in Rust. They may be called both from within Rust and via FFI.
4307
4308## Examples
4309
4310```rust
4311#![feature(c_variadic)]
4312
4313pub unsafe extern "C" fn add(n: usize, mut args: ...) -> usize {
4314    let mut sum = 0;
4315    for _ in 0..n {
4316        sum += args.arg::<usize>();
4317    }
4318    sum
4319}
4320```
4321"##,
4322        default_severity: Severity::Allow,
4323        warn_since: None,
4324        deny_since: None,
4325    },
4326    Lint {
4327        label: "c_variadic_naked_functions",
4328        description: r##"# `c_variadic_naked_functions`
4329
4330Allows defining c-variadic naked functions with any extern ABI that is allowed on c-variadic foreign functions.
4331
4332The tracking issue for this feature is: [#148767]
4333
4334[#148767]: https://github.com/rust-lang/rust/issues/148767
4335
4336------------------------
4337"##,
4338        default_severity: Severity::Allow,
4339        warn_since: None,
4340        deny_since: None,
4341    },
4342    Lint {
4343        label: "c_void_variant",
4344        description: r##"# `c_void_variant`
4345
4346This feature is internal to the Rust compiler and is not intended for general use.
4347
4348------------------------
4349"##,
4350        default_severity: Severity::Allow,
4351        warn_since: None,
4352        deny_since: None,
4353    },
4354    Lint {
4355        label: "can_vector",
4356        description: r##"# `can_vector`
4357
4358
4359
4360The tracking issue for this feature is: [#69941]
4361
4362[#69941]: https://github.com/rust-lang/rust/issues/69941
4363
4364------------------------
4365"##,
4366        default_severity: Severity::Allow,
4367        warn_since: None,
4368        deny_since: None,
4369    },
4370    Lint {
4371        label: "case_ignorable",
4372        description: r##"# `case_ignorable`
4373
4374
4375
4376The tracking issue for this feature is: [#154848]
4377
4378[#154848]: https://github.com/rust-lang/rust/issues/154848
4379
4380------------------------
4381"##,
4382        default_severity: Severity::Allow,
4383        warn_since: None,
4384        deny_since: None,
4385    },
4386    Lint {
4387        label: "cast_maybe_uninit",
4388        description: r##"# `cast_maybe_uninit`
4389
4390
4391
4392The tracking issue for this feature is: [#145036]
4393
4394[#145036]: https://github.com/rust-lang/rust/issues/145036
4395
4396------------------------
4397"##,
4398        default_severity: Severity::Allow,
4399        warn_since: None,
4400        deny_since: None,
4401    },
4402    Lint {
4403        label: "cell_get_cloned",
4404        description: r##"# `cell_get_cloned`
4405
4406
4407
4408The tracking issue for this feature is: [#145329]
4409
4410[#145329]: https://github.com/rust-lang/rust/issues/145329
4411
4412------------------------
4413"##,
4414        default_severity: Severity::Allow,
4415        warn_since: None,
4416        deny_since: None,
4417    },
4418    Lint {
4419        label: "cell_leak",
4420        description: r##"# `cell_leak`
4421
4422
4423
4424The tracking issue for this feature is: [#69099]
4425
4426[#69099]: https://github.com/rust-lang/rust/issues/69099
4427
4428------------------------
4429"##,
4430        default_severity: Severity::Allow,
4431        warn_since: None,
4432        deny_since: None,
4433    },
4434    Lint {
4435        label: "cfg_accessible",
4436        description: r##"# `cfg_accessible`
4437
4438
4439
4440The tracking issue for this feature is: [#64797]
4441
4442[#64797]: https://github.com/rust-lang/rust/issues/64797
4443
4444------------------------
4445"##,
4446        default_severity: Severity::Allow,
4447        warn_since: None,
4448        deny_since: None,
4449    },
4450    Lint {
4451        label: "cfg_contract_checks",
4452        description: r##"# `cfg_contract_checks`
4453
4454Allows the use of `#[cfg(contract_checks)` to check if contract checks are enabled.
4455
4456The tracking issue for this feature is: [#128044]
4457
4458[#128044]: https://github.com/rust-lang/rust/issues/128044
4459
4460------------------------
4461"##,
4462        default_severity: Severity::Allow,
4463        warn_since: None,
4464        deny_since: None,
4465    },
4466    Lint {
4467        label: "cfg_emscripten_wasm_eh",
4468        description: r##"# `cfg_emscripten_wasm_eh`
4469
4470Allows access to the emscripten_wasm_eh config, used by panic_unwind and unwind
4471
4472This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
4473
4474------------------------
4475"##,
4476        default_severity: Severity::Allow,
4477        warn_since: None,
4478        deny_since: None,
4479    },
4480    Lint {
4481        label: "cfg_eval",
4482        description: r##"# `cfg_eval`
4483
4484
4485
4486The tracking issue for this feature is: [#82679]
4487
4488[#82679]: https://github.com/rust-lang/rust/issues/82679
4489
4490------------------------
4491"##,
4492        default_severity: Severity::Allow,
4493        warn_since: None,
4494        deny_since: None,
4495    },
4496    Lint {
4497        label: "cfg_overflow_checks",
4498        description: r##"# `cfg_overflow_checks`
4499
4500Allows the use of `#[cfg(overflow_checks)` to check if integer overflow behaviour.
4501
4502The tracking issue for this feature is: [#111466]
4503
4504[#111466]: https://github.com/rust-lang/rust/issues/111466
4505
4506------------------------
4507"##,
4508        default_severity: Severity::Allow,
4509        warn_since: None,
4510        deny_since: None,
4511    },
4512    Lint {
4513        label: "cfg_relocation_model",
4514        description: r##"# `cfg_relocation_model`
4515
4516Provides the relocation model information as cfg entry
4517
4518The tracking issue for this feature is: [#114929]
4519
4520[#114929]: https://github.com/rust-lang/rust/issues/114929
4521
4522------------------------
4523"##,
4524        default_severity: Severity::Allow,
4525        warn_since: None,
4526        deny_since: None,
4527    },
4528    Lint {
4529        label: "cfg_sanitize",
4530        description: r##"# `cfg_sanitize`
4531
4532The tracking issue for this feature is: [#39699]
4533
4534[#39699]: https://github.com/rust-lang/rust/issues/39699
4535
4536------------------------
4537
4538The `cfg_sanitize` feature makes it possible to execute different code
4539depending on whether a particular sanitizer is enabled or not.
4540
4541## Examples
4542
4543```rust
4544#![feature(cfg_sanitize)]
4545
4546#[cfg(sanitize = "thread")]
4547fn a() {
4548    // ...
4549}
4550
4551#[cfg(not(sanitize = "thread"))]
4552fn a() {
4553    // ...
4554}
4555
4556fn b() {
4557    if cfg!(sanitize = "leak") {
4558        // ...
4559    } else {
4560        // ...
4561    }
4562}
4563```
4564"##,
4565        default_severity: Severity::Allow,
4566        warn_since: None,
4567        deny_since: None,
4568    },
4569    Lint {
4570        label: "cfg_sanitizer_cfi",
4571        description: r##"# `cfg_sanitizer_cfi`
4572
4573Allows `cfg(sanitizer_cfi_generalize_pointers)` and `cfg(sanitizer_cfi_normalize_integers)`.
4574
4575The tracking issue for this feature is: [#89653]
4576
4577[#89653]: https://github.com/rust-lang/rust/issues/89653
4578
4579------------------------
4580"##,
4581        default_severity: Severity::Allow,
4582        warn_since: None,
4583        deny_since: None,
4584    },
4585    Lint {
4586        label: "cfg_target_compact",
4587        description: r##"# `cfg_target_compact`
4588
4589Allows `cfg(target(abi = "..."))`.
4590
4591The tracking issue for this feature is: [#96901]
4592
4593[#96901]: https://github.com/rust-lang/rust/issues/96901
4594
4595------------------------
4596"##,
4597        default_severity: Severity::Allow,
4598        warn_since: None,
4599        deny_since: None,
4600    },
4601    Lint {
4602        label: "cfg_target_has_atomic",
4603        description: r##"# `cfg_target_has_atomic`
4604
4605Allows `cfg(target_has_atomic_load_store = "...")`.
4606
4607The tracking issue for this feature is: [#94039]
4608
4609[#94039]: https://github.com/rust-lang/rust/issues/94039
4610
4611------------------------
4612"##,
4613        default_severity: Severity::Allow,
4614        warn_since: None,
4615        deny_since: None,
4616    },
4617    Lint {
4618        label: "cfg_target_has_atomic_equal_alignment",
4619        description: r##"# `cfg_target_has_atomic_equal_alignment`
4620
4621Allows `cfg(target_has_atomic_equal_alignment = "...")`.
4622
4623The tracking issue for this feature is: [#93822]
4624
4625[#93822]: https://github.com/rust-lang/rust/issues/93822
4626
4627------------------------
4628"##,
4629        default_severity: Severity::Allow,
4630        warn_since: None,
4631        deny_since: None,
4632    },
4633    Lint {
4634        label: "cfg_target_has_reliable_f16_f128",
4635        description: r##"# `cfg_target_has_reliable_f16_f128`
4636
4637Allows checking whether or not the backend correctly supports unstable float types.
4638
4639This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
4640
4641------------------------
4642"##,
4643        default_severity: Severity::Allow,
4644        warn_since: None,
4645        deny_since: None,
4646    },
4647    Lint {
4648        label: "cfg_target_object_format",
4649        description: r##"# `cfg_target_object_format`
4650
4651The tracking issue for this feature is: [#152586]
4652
4653[#152586]: https://github.com/rust-lang/rust/issues/152586
4654
4655------------------------
4656
4657The `cfg_target_object_format` feature makes it possible to execute different code
4658depending on the current target's object file format.
4659
4660## Examples
4661
4662```rust
4663#![feature(cfg_target_object_format)]
4664
4665#[cfg(target_object_format = "elf")]
4666fn a() {
4667    // ...
4668}
4669
4670#[cfg(target_object_format = "mach-o")]
4671fn a() {
4672    // ...
4673}
4674
4675fn b() {
4676    if cfg!(target_object_format = "wasm") {
4677        // ...
4678    } else {
4679        // ...
4680    }
4681}
4682```
4683"##,
4684        default_severity: Severity::Allow,
4685        warn_since: None,
4686        deny_since: None,
4687    },
4688    Lint {
4689        label: "cfg_target_thread_local",
4690        description: r##"# `cfg_target_thread_local`
4691
4692Allows `cfg(target_thread_local)`.
4693
4694The tracking issue for this feature is: [#29594]
4695
4696[#29594]: https://github.com/rust-lang/rust/issues/29594
4697
4698------------------------
4699"##,
4700        default_severity: Severity::Allow,
4701        warn_since: None,
4702        deny_since: None,
4703    },
4704    Lint {
4705        label: "cfg_ub_checks",
4706        description: r##"# `cfg_ub_checks`
4707
4708Allows the use of `#[cfg(ub_checks)` to check if UB checks are enabled.
4709
4710The tracking issue for this feature is: [#123499]
4711
4712[#123499]: https://github.com/rust-lang/rust/issues/123499
4713
4714------------------------
4715"##,
4716        default_severity: Severity::Allow,
4717        warn_since: None,
4718        deny_since: None,
4719    },
4720    Lint {
4721        label: "cfg_version",
4722        description: r##"# `cfg_version`
4723
4724The tracking issue for this feature is: [#64796]
4725
4726[#64796]: https://github.com/rust-lang/rust/issues/64796
4727
4728------------------------
4729
4730The `cfg_version` feature makes it possible to execute different code
4731depending on the compiler version. It will return true if the compiler
4732version is greater than or equal to the specified version.
4733
4734## Examples
4735
4736```rust
4737#![feature(cfg_version)]
4738
4739#[cfg(version("1.42"))] // 1.42 and above
4740fn a() {
4741    // ...
4742}
4743
4744#[cfg(not(version("1.42")))] // 1.41 and below
4745fn a() {
4746    // ...
4747}
4748
4749fn b() {
4750    if cfg!(version("1.42")) {
4751        // ...
4752    } else {
4753        // ...
4754    }
4755}
4756```
4757"##,
4758        default_severity: Severity::Allow,
4759        warn_since: None,
4760        deny_since: None,
4761    },
4762    Lint {
4763        label: "cfi_encoding",
4764        description: r##"# `cfi_encoding`
4765
4766The tracking issue for this feature is: [#89653]
4767
4768[#89653]: https://github.com/rust-lang/rust/issues/89653
4769
4770------------------------
4771
4772The `cfi_encoding` feature allows the user to define a CFI encoding for a type.
4773It allows the user to use a different names for types that otherwise would be
4774required to have the same name as used in externally defined C functions.
4775
4776## Examples
4777
4778```rust
4779#![feature(cfi_encoding, extern_types)]
4780
4781#[cfi_encoding = "3Foo"]
4782pub struct Type1(i32);
4783
4784extern {
4785    #[cfi_encoding = "3Bar"]
4786    type Type2;
4787}
4788```
4789"##,
4790        default_severity: Severity::Allow,
4791        warn_since: None,
4792        deny_since: None,
4793    },
4794    Lint {
4795        label: "char_internals",
4796        description: r##"# `char_internals`
4797
4798
4799
4800This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
4801
4802------------------------
4803"##,
4804        default_severity: Severity::Allow,
4805        warn_since: None,
4806        deny_since: None,
4807    },
4808    Lint {
4809        label: "char_max_len",
4810        description: r##"# `char_max_len`
4811
4812
4813
4814The tracking issue for this feature is: [#121714]
4815
4816[#121714]: https://github.com/rust-lang/rust/issues/121714
4817
4818------------------------
4819"##,
4820        default_severity: Severity::Allow,
4821        warn_since: None,
4822        deny_since: None,
4823    },
4824    Lint {
4825        label: "clamp_magnitude",
4826        description: r##"# `clamp_magnitude`
4827
4828
4829
4830The tracking issue for this feature is: [#148519]
4831
4832[#148519]: https://github.com/rust-lang/rust/issues/148519
4833
4834------------------------
4835"##,
4836        default_severity: Severity::Allow,
4837        warn_since: None,
4838        deny_since: None,
4839    },
4840    Lint {
4841        label: "clone_from_ref",
4842        description: r##"# `clone_from_ref`
4843
4844
4845
4846The tracking issue for this feature is: [#149075]
4847
4848[#149075]: https://github.com/rust-lang/rust/issues/149075
4849
4850------------------------
4851"##,
4852        default_severity: Severity::Allow,
4853        warn_since: None,
4854        deny_since: None,
4855    },
4856    Lint {
4857        label: "clone_to_uninit",
4858        description: r##"# `clone_to_uninit`
4859
4860
4861
4862The tracking issue for this feature is: [#126799]
4863
4864[#126799]: https://github.com/rust-lang/rust/issues/126799
4865
4866------------------------
4867"##,
4868        default_severity: Severity::Allow,
4869        warn_since: None,
4870        deny_since: None,
4871    },
4872    Lint {
4873        label: "closure_lifetime_binder",
4874        description: r##"# `closure_lifetime_binder`
4875
4876Allows `for<...>` on closures and coroutines.
4877
4878The tracking issue for this feature is: [#97362]
4879
4880[#97362]: https://github.com/rust-lang/rust/issues/97362
4881
4882------------------------
4883"##,
4884        default_severity: Severity::Allow,
4885        warn_since: None,
4886        deny_since: None,
4887    },
4888    Lint {
4889        label: "closure_track_caller",
4890        description: r##"# `closure_track_caller`
4891
4892The tracking issue for this feature is: [#87417]
4893
4894[#87417]: https://github.com/rust-lang/rust/issues/87417
4895
4896------------------------
4897
4898Allows using the `#[track_caller]` attribute on closures and coroutines.
4899Calls made to the closure or coroutine will have caller information
4900available through `std::panic::Location::caller()`, just like using
4901`#[track_caller]` on a function.
4902"##,
4903        default_severity: Severity::Allow,
4904        warn_since: None,
4905        deny_since: None,
4906    },
4907    Lint {
4908        label: "cmp_minmax",
4909        description: r##"# `cmp_minmax`
4910
4911
4912
4913The tracking issue for this feature is: [#115939]
4914
4915[#115939]: https://github.com/rust-lang/rust/issues/115939
4916
4917------------------------
4918"##,
4919        default_severity: Severity::Allow,
4920        warn_since: None,
4921        deny_since: None,
4922    },
4923    Lint {
4924        label: "cmse_nonsecure_entry",
4925        description: r##"# `cmse_nonsecure_entry`
4926
4927The tracking issue for this feature is: [#75835]
4928
4929[#75835]: https://github.com/rust-lang/rust/issues/75835
4930
4931------------------------
4932
4933The [TrustZone-M
4934feature](https://developer.arm.com/documentation/100690/latest/) is available
4935for targets with the Armv8-M architecture profile (`thumbv8m` in their target
4936name).
4937LLVM, the Rust compiler and the linker are providing
4938[support](https://developer.arm.com/documentation/ecm0359818/latest/) for the
4939TrustZone-M feature.
4940
4941One of the things provided with this unstable feature is the "cmse-nonsecure-entry" ABI.
4942This ABI marks a Secure function as an entry function (see
4943[section 5.4](https://developer.arm.com/documentation/ecm0359818/latest/) for details).
4944With this ABI, the compiler will do the following:
4945* add a special symbol on the function which is the `__acle_se_` prefix and the
4946  standard function name
4947* constrain the number of parameters to avoid using the Non-Secure stack
4948* before returning from the function, clear registers that might contain Secure
4949  information
4950* use the `BXNS` instruction to return
4951
4952Because the stack can not be used to pass parameters, there will be compilation
4953errors if:
4954* the total size of all parameters is too big (for example, more than four 32-bit integers)
4955
4956The special symbol `__acle_se_` will be used by the linker to generate a secure
4957gateway veneer.
4958
4959<!-- NOTE(ignore) this example is specific to thumbv8m targets -->
4960
4961``` rust,ignore
4962#![no_std]
4963#![feature(cmse_nonsecure_entry)]
4964
4965#[no_mangle]
4966pub extern "cmse-nonsecure-entry" fn entry_function(input: u32) -> u32 {
4967    input + 6
4968}
4969```
4970
4971``` text
4972$ rustc --emit obj --crate-type lib --target thumbv8m.main-none-eabi function.rs
4973$ arm-none-eabi-objdump -D function.o
4974
497500000000 <entry_function>:
4976   0:   b580            push    {r7, lr}
4977   2:   466f            mov     r7, sp
4978   4:   b082            sub     sp, #8
4979   6:   9001            str     r0, [sp, #4]
4980   8:   1d81            adds    r1, r0, #6
4981   a:   460a            mov     r2, r1
4982   c:   4281            cmp     r1, r0
4983   e:   9200            str     r2, [sp, #0]
4984  10:   d30b            bcc.n   2a <entry_function+0x2a>
4985  12:   e7ff            b.n     14 <entry_function+0x14>
4986  14:   9800            ldr     r0, [sp, #0]
4987  16:   b002            add     sp, #8
4988  18:   e8bd 4080       ldmia.w sp!, {r7, lr}
4989  1c:   4671            mov     r1, lr
4990  1e:   4672            mov     r2, lr
4991  20:   4673            mov     r3, lr
4992  22:   46f4            mov     ip, lr
4993  24:   f38e 8800       msr     CPSR_f, lr
4994  28:   4774            bxns    lr
4995  2a:   f240 0000       movw    r0, #0
4996  2e:   f2c0 0000       movt    r0, #0
4997  32:   f240 0200       movw    r2, #0
4998  36:   f2c0 0200       movt    r2, #0
4999  3a:   211c            movs    r1, #28
5000  3c:   f7ff fffe       bl      0 <_ZN4core9panicking5panic17h5c028258ca2fb3f5E>
5001  40:   defe            udf     #254    ; 0xfe
5002```
5003"##,
5004        default_severity: Severity::Allow,
5005        warn_since: None,
5006        deny_since: None,
5007    },
5008    Lint {
5009        label: "coerce_pointee_validated",
5010        description: r##"# `coerce_pointee_validated`
5011
5012
5013
5014This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
5015
5016------------------------
5017"##,
5018        default_severity: Severity::Allow,
5019        warn_since: None,
5020        deny_since: None,
5021    },
5022    Lint {
5023        label: "coerce_unsized",
5024        description: r##"# `coerce_unsized`
5025
5026
5027
5028The tracking issue for this feature is: [#18598]
5029
5030[#18598]: https://github.com/rust-lang/rust/issues/18598
5031
5032------------------------
5033"##,
5034        default_severity: Severity::Allow,
5035        warn_since: None,
5036        deny_since: None,
5037    },
5038    Lint {
5039        label: "command_resolved_envs",
5040        description: r##"# `command_resolved_envs`
5041
5042
5043
5044The tracking issue for this feature is: [#149070]
5045
5046[#149070]: https://github.com/rust-lang/rust/issues/149070
5047
5048------------------------
5049"##,
5050        default_severity: Severity::Allow,
5051        warn_since: None,
5052        deny_since: None,
5053    },
5054    Lint {
5055        label: "compiler_builtins",
5056        description: r##"# `compiler_builtins`
5057
5058This feature is internal to the Rust compiler and is not intended for general use.
5059
5060------------------------
5061"##,
5062        default_severity: Severity::Allow,
5063        warn_since: None,
5064        deny_since: None,
5065    },
5066    Lint {
5067        label: "concat_bytes",
5068        description: r##"# `concat_bytes`
5069
5070
5071
5072The tracking issue for this feature is: [#87555]
5073
5074[#87555]: https://github.com/rust-lang/rust/issues/87555
5075
5076------------------------
5077"##,
5078        default_severity: Severity::Allow,
5079        warn_since: None,
5080        deny_since: None,
5081    },
5082    Lint {
5083        label: "const_alloc_error",
5084        description: r##"# `const_alloc_error`
5085
5086
5087
5088The tracking issue for this feature is: [#92523]
5089
5090[#92523]: https://github.com/rust-lang/rust/issues/92523
5091
5092------------------------
5093"##,
5094        default_severity: Severity::Allow,
5095        warn_since: None,
5096        deny_since: None,
5097    },
5098    Lint {
5099        label: "const_array",
5100        description: r##"# `const_array`
5101
5102
5103
5104The tracking issue for this feature is: [#147606]
5105
5106[#147606]: https://github.com/rust-lang/rust/issues/147606
5107
5108------------------------
5109"##,
5110        default_severity: Severity::Allow,
5111        warn_since: None,
5112        deny_since: None,
5113    },
5114    Lint {
5115        label: "const_async_blocks",
5116        description: r##"# `const_async_blocks`
5117
5118Allows `async {}` expressions in const contexts.
5119
5120The tracking issue for this feature is: [#85368]
5121
5122[#85368]: https://github.com/rust-lang/rust/issues/85368
5123
5124------------------------
5125"##,
5126        default_severity: Severity::Allow,
5127        warn_since: None,
5128        deny_since: None,
5129    },
5130    Lint {
5131        label: "const_block_items",
5132        description: r##"# `const_block_items`
5133
5134Allows `const { ... }` as a shorthand for `const _: () = const { ... };` for module items.
5135
5136The tracking issue for this feature is: [#149226]
5137
5138[#149226]: https://github.com/rust-lang/rust/issues/149226
5139
5140------------------------
5141"##,
5142        default_severity: Severity::Allow,
5143        warn_since: None,
5144        deny_since: None,
5145    },
5146    Lint {
5147        label: "const_bool",
5148        description: r##"# `const_bool`
5149
5150
5151
5152The tracking issue for this feature is: [#151531]
5153
5154[#151531]: https://github.com/rust-lang/rust/issues/151531
5155
5156------------------------
5157"##,
5158        default_severity: Severity::Allow,
5159        warn_since: None,
5160        deny_since: None,
5161    },
5162    Lint {
5163        label: "const_btree_len",
5164        description: r##"# `const_btree_len`
5165
5166
5167
5168This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
5169
5170------------------------
5171"##,
5172        default_severity: Severity::Allow,
5173        warn_since: None,
5174        deny_since: None,
5175    },
5176    Lint {
5177        label: "const_c_variadic",
5178        description: r##"# `const_c_variadic`
5179
5180Allows defining and calling c-variadic functions in const contexts.
5181
5182The tracking issue for this feature is: [#151787]
5183
5184[#151787]: https://github.com/rust-lang/rust/issues/151787
5185
5186------------------------
5187"##,
5188        default_severity: Severity::Allow,
5189        warn_since: None,
5190        deny_since: None,
5191    },
5192    Lint {
5193        label: "const_carrying_mul_add",
5194        description: r##"# `const_carrying_mul_add`
5195
5196
5197
5198The tracking issue for this feature is: [#85532]
5199
5200[#85532]: https://github.com/rust-lang/rust/issues/85532
5201
5202------------------------
5203"##,
5204        default_severity: Severity::Allow,
5205        warn_since: None,
5206        deny_since: None,
5207    },
5208    Lint {
5209        label: "const_cell_traits",
5210        description: r##"# `const_cell_traits`
5211
5212
5213
5214The tracking issue for this feature is: [#147787]
5215
5216[#147787]: https://github.com/rust-lang/rust/issues/147787
5217
5218------------------------
5219"##,
5220        default_severity: Severity::Allow,
5221        warn_since: None,
5222        deny_since: None,
5223    },
5224    Lint {
5225        label: "const_clone",
5226        description: r##"# `const_clone`
5227
5228
5229
5230The tracking issue for this feature is: [#142757]
5231
5232[#142757]: https://github.com/rust-lang/rust/issues/142757
5233
5234------------------------
5235"##,
5236        default_severity: Severity::Allow,
5237        warn_since: None,
5238        deny_since: None,
5239    },
5240    Lint {
5241        label: "const_closures",
5242        description: r##"# `const_closures`
5243
5244Allows `const || {}` closures in const contexts.
5245
5246The tracking issue for this feature is: [#106003]
5247
5248[#106003]: https://github.com/rust-lang/rust/issues/106003
5249
5250------------------------
5251"##,
5252        default_severity: Severity::Allow,
5253        warn_since: None,
5254        deny_since: None,
5255    },
5256    Lint {
5257        label: "const_cmp",
5258        description: r##"# `const_cmp`
5259
5260
5261
5262The tracking issue for this feature is: [#143800]
5263
5264[#143800]: https://github.com/rust-lang/rust/issues/143800
5265
5266------------------------
5267"##,
5268        default_severity: Severity::Allow,
5269        warn_since: None,
5270        deny_since: None,
5271    },
5272    Lint {
5273        label: "const_control_flow",
5274        description: r##"# `const_control_flow`
5275
5276
5277
5278The tracking issue for this feature is: [#148739]
5279
5280[#148739]: https://github.com/rust-lang/rust/issues/148739
5281
5282------------------------
5283"##,
5284        default_severity: Severity::Allow,
5285        warn_since: None,
5286        deny_since: None,
5287    },
5288    Lint {
5289        label: "const_convert",
5290        description: r##"# `const_convert`
5291
5292
5293
5294The tracking issue for this feature is: [#143773]
5295
5296[#143773]: https://github.com/rust-lang/rust/issues/143773
5297
5298------------------------
5299"##,
5300        default_severity: Severity::Allow,
5301        warn_since: None,
5302        deny_since: None,
5303    },
5304    Lint {
5305        label: "const_default",
5306        description: r##"# `const_default`
5307
5308
5309
5310The tracking issue for this feature is: [#143894]
5311
5312[#143894]: https://github.com/rust-lang/rust/issues/143894
5313
5314------------------------
5315"##,
5316        default_severity: Severity::Allow,
5317        warn_since: None,
5318        deny_since: None,
5319    },
5320    Lint {
5321        label: "const_destruct",
5322        description: r##"# `const_destruct`
5323
5324Allows using `[const] Destruct` bounds and calling drop impls in const contexts.
5325
5326The tracking issue for this feature is: [#133214]
5327
5328[#133214]: https://github.com/rust-lang/rust/issues/133214
5329
5330------------------------
5331"##,
5332        default_severity: Severity::Allow,
5333        warn_since: None,
5334        deny_since: None,
5335    },
5336    Lint {
5337        label: "const_drop_guard",
5338        description: r##"# `const_drop_guard`
5339
5340
5341
5342This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
5343
5344------------------------
5345"##,
5346        default_severity: Severity::Allow,
5347        warn_since: None,
5348        deny_since: None,
5349    },
5350    Lint {
5351        label: "const_drop_in_place",
5352        description: r##"# `const_drop_in_place`
5353
5354
5355
5356The tracking issue for this feature is: [#109342]
5357
5358[#109342]: https://github.com/rust-lang/rust/issues/109342
5359
5360------------------------
5361"##,
5362        default_severity: Severity::Allow,
5363        warn_since: None,
5364        deny_since: None,
5365    },
5366    Lint {
5367        label: "const_eval_select",
5368        description: r##"# `const_eval_select`
5369
5370
5371
5372The tracking issue for this feature is: [#124625]
5373
5374[#124625]: https://github.com/rust-lang/rust/issues/124625
5375
5376------------------------
5377"##,
5378        default_severity: Severity::Allow,
5379        warn_since: None,
5380        deny_since: None,
5381    },
5382    Lint {
5383        label: "const_for",
5384        description: r##"# `const_for`
5385
5386Allows `for _ in _` loops in const contexts.
5387
5388The tracking issue for this feature is: [#87575]
5389
5390[#87575]: https://github.com/rust-lang/rust/issues/87575
5391
5392------------------------
5393"##,
5394        default_severity: Severity::Allow,
5395        warn_since: None,
5396        deny_since: None,
5397    },
5398    Lint {
5399        label: "const_format_args",
5400        description: r##"# `const_format_args`
5401
5402
5403
5404This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
5405
5406------------------------
5407"##,
5408        default_severity: Severity::Allow,
5409        warn_since: None,
5410        deny_since: None,
5411    },
5412    Lint {
5413        label: "const_heap",
5414        description: r##"# `const_heap`
5415
5416
5417
5418The tracking issue for this feature is: [#79597]
5419
5420[#79597]: https://github.com/rust-lang/rust/issues/79597
5421
5422------------------------
5423"##,
5424        default_severity: Severity::Allow,
5425        warn_since: None,
5426        deny_since: None,
5427    },
5428    Lint {
5429        label: "const_index",
5430        description: r##"# `const_index`
5431
5432
5433
5434The tracking issue for this feature is: [#143775]
5435
5436[#143775]: https://github.com/rust-lang/rust/issues/143775
5437
5438------------------------
5439"##,
5440        default_severity: Severity::Allow,
5441        warn_since: None,
5442        deny_since: None,
5443    },
5444    Lint {
5445        label: "const_iter",
5446        description: r##"# `const_iter`
5447
5448
5449
5450The tracking issue for this feature is: [#92476]
5451
5452[#92476]: https://github.com/rust-lang/rust/issues/92476
5453
5454------------------------
5455"##,
5456        default_severity: Severity::Allow,
5457        warn_since: None,
5458        deny_since: None,
5459    },
5460    Lint {
5461        label: "const_manually_drop_take",
5462        description: r##"# `const_manually_drop_take`
5463
5464
5465
5466The tracking issue for this feature is: [#148773]
5467
5468[#148773]: https://github.com/rust-lang/rust/issues/148773
5469
5470------------------------
5471"##,
5472        default_severity: Severity::Allow,
5473        warn_since: None,
5474        deny_since: None,
5475    },
5476    Lint {
5477        label: "const_never_short_circuit",
5478        description: r##"# `const_never_short_circuit`
5479
5480
5481
5482This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
5483
5484------------------------
5485"##,
5486        default_severity: Severity::Allow,
5487        warn_since: None,
5488        deny_since: None,
5489    },
5490    Lint {
5491        label: "const_nonnull_with_exposed_provenance",
5492        description: r##"# `const_nonnull_with_exposed_provenance`
5493
5494
5495
5496The tracking issue for this feature is: [#154215]
5497
5498[#154215]: https://github.com/rust-lang/rust/issues/154215
5499
5500------------------------
5501"##,
5502        default_severity: Severity::Allow,
5503        warn_since: None,
5504        deny_since: None,
5505    },
5506    Lint {
5507        label: "const_ops",
5508        description: r##"# `const_ops`
5509
5510
5511
5512The tracking issue for this feature is: [#143802]
5513
5514[#143802]: https://github.com/rust-lang/rust/issues/143802
5515
5516------------------------
5517"##,
5518        default_severity: Severity::Allow,
5519        warn_since: None,
5520        deny_since: None,
5521    },
5522    Lint {
5523        label: "const_option_ops",
5524        description: r##"# `const_option_ops`
5525
5526
5527
5528The tracking issue for this feature is: [#143956]
5529
5530[#143956]: https://github.com/rust-lang/rust/issues/143956
5531
5532------------------------
5533"##,
5534        default_severity: Severity::Allow,
5535        warn_since: None,
5536        deny_since: None,
5537    },
5538    Lint {
5539        label: "const_param_ty_trait",
5540        description: r##"# `const_param_ty_trait`
5541
5542
5543
5544The tracking issue for this feature is: [#95174]
5545
5546[#95174]: https://github.com/rust-lang/rust/issues/95174
5547
5548------------------------
5549"##,
5550        default_severity: Severity::Allow,
5551        warn_since: None,
5552        deny_since: None,
5553    },
5554    Lint {
5555        label: "const_path_separators",
5556        description: r##"# `const_path_separators`
5557
5558
5559
5560The tracking issue for this feature is: [#153106]
5561
5562[#153106]: https://github.com/rust-lang/rust/issues/153106
5563
5564------------------------
5565"##,
5566        default_severity: Severity::Allow,
5567        warn_since: None,
5568        deny_since: None,
5569    },
5570    Lint {
5571        label: "const_precise_live_drops",
5572        description: r##"# `const_precise_live_drops`
5573
5574Be more precise when looking for live drops in a const context.
5575
5576The tracking issue for this feature is: [#73255]
5577
5578[#73255]: https://github.com/rust-lang/rust/issues/73255
5579
5580------------------------
5581"##,
5582        default_severity: Severity::Allow,
5583        warn_since: None,
5584        deny_since: None,
5585    },
5586    Lint {
5587        label: "const_range",
5588        description: r##"# `const_range`
5589
5590
5591
5592This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
5593
5594------------------------
5595"##,
5596        default_severity: Severity::Allow,
5597        warn_since: None,
5598        deny_since: None,
5599    },
5600    Lint {
5601        label: "const_range_bounds",
5602        description: r##"# `const_range_bounds`
5603
5604
5605
5606The tracking issue for this feature is: [#108082]
5607
5608[#108082]: https://github.com/rust-lang/rust/issues/108082
5609
5610------------------------
5611"##,
5612        default_severity: Severity::Allow,
5613        warn_since: None,
5614        deny_since: None,
5615    },
5616    Lint {
5617        label: "const_raw_ptr_comparison",
5618        description: r##"# `const_raw_ptr_comparison`
5619
5620
5621
5622The tracking issue for this feature is: [#53020]
5623
5624[#53020]: https://github.com/rust-lang/rust/issues/53020
5625
5626------------------------
5627"##,
5628        default_severity: Severity::Allow,
5629        warn_since: None,
5630        deny_since: None,
5631    },
5632    Lint {
5633        label: "const_ref_cell",
5634        description: r##"# `const_ref_cell`
5635
5636
5637
5638The tracking issue for this feature is: [#137844]
5639
5640[#137844]: https://github.com/rust-lang/rust/issues/137844
5641
5642------------------------
5643"##,
5644        default_severity: Severity::Allow,
5645        warn_since: None,
5646        deny_since: None,
5647    },
5648    Lint {
5649        label: "const_result_trait_fn",
5650        description: r##"# `const_result_trait_fn`
5651
5652
5653
5654The tracking issue for this feature is: [#144211]
5655
5656[#144211]: https://github.com/rust-lang/rust/issues/144211
5657
5658------------------------
5659"##,
5660        default_severity: Severity::Allow,
5661        warn_since: None,
5662        deny_since: None,
5663    },
5664    Lint {
5665        label: "const_result_unwrap_unchecked",
5666        description: r##"# `const_result_unwrap_unchecked`
5667
5668
5669
5670The tracking issue for this feature is: [#148714]
5671
5672[#148714]: https://github.com/rust-lang/rust/issues/148714
5673
5674------------------------
5675"##,
5676        default_severity: Severity::Allow,
5677        warn_since: None,
5678        deny_since: None,
5679    },
5680    Lint {
5681        label: "const_select_unpredictable",
5682        description: r##"# `const_select_unpredictable`
5683
5684
5685
5686The tracking issue for this feature is: [#145938]
5687
5688[#145938]: https://github.com/rust-lang/rust/issues/145938
5689
5690------------------------
5691"##,
5692        default_severity: Severity::Allow,
5693        warn_since: None,
5694        deny_since: None,
5695    },
5696    Lint {
5697        label: "const_slice_from_mut_ptr_range",
5698        description: r##"# `const_slice_from_mut_ptr_range`
5699
5700
5701
5702The tracking issue for this feature is: [#89792]
5703
5704[#89792]: https://github.com/rust-lang/rust/issues/89792
5705
5706------------------------
5707"##,
5708        default_severity: Severity::Allow,
5709        warn_since: None,
5710        deny_since: None,
5711    },
5712    Lint {
5713        label: "const_slice_from_ptr_range",
5714        description: r##"# `const_slice_from_ptr_range`
5715
5716
5717
5718The tracking issue for this feature is: [#89792]
5719
5720[#89792]: https://github.com/rust-lang/rust/issues/89792
5721
5722------------------------
5723"##,
5724        default_severity: Severity::Allow,
5725        warn_since: None,
5726        deny_since: None,
5727    },
5728    Lint {
5729        label: "const_slice_make_iter",
5730        description: r##"# `const_slice_make_iter`
5731
5732
5733
5734The tracking issue for this feature is: [#137737]
5735
5736[#137737]: https://github.com/rust-lang/rust/issues/137737
5737
5738------------------------
5739"##,
5740        default_severity: Severity::Allow,
5741        warn_since: None,
5742        deny_since: None,
5743    },
5744    Lint {
5745        label: "const_split_off_first_last",
5746        description: r##"# `const_split_off_first_last`
5747
5748
5749
5750The tracking issue for this feature is: [#138539]
5751
5752[#138539]: https://github.com/rust-lang/rust/issues/138539
5753
5754------------------------
5755"##,
5756        default_severity: Severity::Allow,
5757        warn_since: None,
5758        deny_since: None,
5759    },
5760    Lint {
5761        label: "const_swap_with_slice",
5762        description: r##"# `const_swap_with_slice`
5763
5764
5765
5766The tracking issue for this feature is: [#142204]
5767
5768[#142204]: https://github.com/rust-lang/rust/issues/142204
5769
5770------------------------
5771"##,
5772        default_severity: Severity::Allow,
5773        warn_since: None,
5774        deny_since: None,
5775    },
5776    Lint {
5777        label: "const_trait_impl",
5778        description: r##"# `const_trait_impl`
5779
5780Allows `impl const Trait for T` syntax.
5781
5782The tracking issue for this feature is: [#143874]
5783
5784[#143874]: https://github.com/rust-lang/rust/issues/143874
5785
5786------------------------
5787"##,
5788        default_severity: Severity::Allow,
5789        warn_since: None,
5790        deny_since: None,
5791    },
5792    Lint {
5793        label: "const_try",
5794        description: r##"# `const_try`
5795
5796Allows the `?` operator in const contexts.
5797
5798The tracking issue for this feature is: [#74935]
5799
5800[#74935]: https://github.com/rust-lang/rust/issues/74935
5801
5802------------------------
5803"##,
5804        default_severity: Severity::Allow,
5805        warn_since: None,
5806        deny_since: None,
5807    },
5808    Lint {
5809        label: "const_try_residual",
5810        description: r##"# `const_try_residual`
5811
5812
5813
5814The tracking issue for this feature is: [#91285]
5815
5816[#91285]: https://github.com/rust-lang/rust/issues/91285
5817
5818------------------------
5819"##,
5820        default_severity: Severity::Allow,
5821        warn_since: None,
5822        deny_since: None,
5823    },
5824    Lint {
5825        label: "const_type_name",
5826        description: r##"# `const_type_name`
5827
5828
5829
5830The tracking issue for this feature is: [#63084]
5831
5832[#63084]: https://github.com/rust-lang/rust/issues/63084
5833
5834------------------------
5835"##,
5836        default_severity: Severity::Allow,
5837        warn_since: None,
5838        deny_since: None,
5839    },
5840    Lint {
5841        label: "const_unsigned_bigint_helpers",
5842        description: r##"# `const_unsigned_bigint_helpers`
5843
5844
5845
5846The tracking issue for this feature is: [#152015]
5847
5848[#152015]: https://github.com/rust-lang/rust/issues/152015
5849
5850------------------------
5851"##,
5852        default_severity: Severity::Allow,
5853        warn_since: None,
5854        deny_since: None,
5855    },
5856    Lint {
5857        label: "container_error_extra",
5858        description: r##"# `container_error_extra`
5859
5860
5861
5862This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
5863
5864------------------------
5865"##,
5866        default_severity: Severity::Allow,
5867        warn_since: None,
5868        deny_since: None,
5869    },
5870    Lint {
5871        label: "context_ext",
5872        description: r##"# `context_ext`
5873
5874
5875
5876The tracking issue for this feature is: [#123392]
5877
5878[#123392]: https://github.com/rust-lang/rust/issues/123392
5879
5880------------------------
5881"##,
5882        default_severity: Severity::Allow,
5883        warn_since: None,
5884        deny_since: None,
5885    },
5886    Lint {
5887        label: "contracts",
5888        description: r##"# `contracts`
5889
5890Allows use of contracts attributes.
5891
5892The tracking issue for this feature is: [#128044]
5893
5894[#128044]: https://github.com/rust-lang/rust/issues/128044
5895
5896------------------------
5897"##,
5898        default_severity: Severity::Allow,
5899        warn_since: None,
5900        deny_since: None,
5901    },
5902    Lint {
5903        label: "contracts_internals",
5904        description: r##"# `contracts_internals`
5905
5906Allows access to internal machinery used to implement contracts.
5907
5908The tracking issue for this feature is: [#128044]
5909
5910[#128044]: https://github.com/rust-lang/rust/issues/128044
5911
5912------------------------
5913"##,
5914        default_severity: Severity::Allow,
5915        warn_since: None,
5916        deny_since: None,
5917    },
5918    Lint {
5919        label: "control_flow_into_value",
5920        description: r##"# `control_flow_into_value`
5921
5922
5923
5924The tracking issue for this feature is: [#137461]
5925
5926[#137461]: https://github.com/rust-lang/rust/issues/137461
5927
5928------------------------
5929"##,
5930        default_severity: Severity::Allow,
5931        warn_since: None,
5932        deny_since: None,
5933    },
5934    Lint {
5935        label: "convert_float_to_int",
5936        description: r##"# `convert_float_to_int`
5937
5938
5939
5940The tracking issue for this feature is: [#67057]
5941
5942[#67057]: https://github.com/rust-lang/rust/issues/67057
5943
5944------------------------
5945"##,
5946        default_severity: Severity::Allow,
5947        warn_since: None,
5948        deny_since: None,
5949    },
5950    Lint {
5951        label: "copied_into_inner",
5952        description: r##"# `copied_into_inner`
5953
5954
5955
5956This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
5957
5958------------------------
5959"##,
5960        default_severity: Severity::Allow,
5961        warn_since: None,
5962        deny_since: None,
5963    },
5964    Lint {
5965        label: "core_float_math",
5966        description: r##"# `core_float_math`
5967
5968
5969
5970The tracking issue for this feature is: [#137578]
5971
5972[#137578]: https://github.com/rust-lang/rust/issues/137578
5973
5974------------------------
5975"##,
5976        default_severity: Severity::Allow,
5977        warn_since: None,
5978        deny_since: None,
5979    },
5980    Lint {
5981        label: "core_intrinsics",
5982        description: r##"# `core_intrinsics`
5983
5984This feature is internal to the Rust compiler and is not intended for general use.
5985
5986------------------------
5987"##,
5988        default_severity: Severity::Allow,
5989        warn_since: None,
5990        deny_since: None,
5991    },
5992    Lint {
5993        label: "core_intrinsics_fallbacks",
5994        description: r##"# `core_intrinsics_fallbacks`
5995
5996
5997
5998This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
5999
6000------------------------
6001"##,
6002        default_severity: Severity::Allow,
6003        warn_since: None,
6004        deny_since: None,
6005    },
6006    Lint {
6007        label: "core_io_borrowed_buf",
6008        description: r##"# `core_io_borrowed_buf`
6009
6010
6011
6012The tracking issue for this feature is: [#117693]
6013
6014[#117693]: https://github.com/rust-lang/rust/issues/117693
6015
6016------------------------
6017"##,
6018        default_severity: Severity::Allow,
6019        warn_since: None,
6020        deny_since: None,
6021    },
6022    Lint {
6023        label: "core_private_bignum",
6024        description: r##"# `core_private_bignum`
6025
6026This feature is internal to the Rust compiler and is not intended for general use.
6027
6028------------------------
6029"##,
6030        default_severity: Severity::Allow,
6031        warn_since: None,
6032        deny_since: None,
6033    },
6034    Lint {
6035        label: "core_private_diy_float",
6036        description: r##"# `core_private_diy_float`
6037
6038This feature is internal to the Rust compiler and is not intended for general use.
6039
6040------------------------
6041"##,
6042        default_severity: Severity::Allow,
6043        warn_since: None,
6044        deny_since: None,
6045    },
6046    Lint {
6047        label: "coroutine_clone",
6048        description: r##"# `coroutine_clone`
6049
6050Allows coroutines to be cloned.
6051
6052The tracking issue for this feature is: [#95360]
6053
6054[#95360]: https://github.com/rust-lang/rust/issues/95360
6055
6056------------------------
6057"##,
6058        default_severity: Severity::Allow,
6059        warn_since: None,
6060        deny_since: None,
6061    },
6062    Lint {
6063        label: "coroutine_trait",
6064        description: r##"# `coroutine_trait`
6065
6066
6067
6068The tracking issue for this feature is: [#43122]
6069
6070[#43122]: https://github.com/rust-lang/rust/issues/43122
6071
6072------------------------
6073"##,
6074        default_severity: Severity::Allow,
6075        warn_since: None,
6076        deny_since: None,
6077    },
6078    Lint {
6079        label: "coroutines",
6080        description: r##"# `coroutines`
6081
6082The tracking issue for this feature is: [#43122]
6083
6084[#43122]: https://github.com/rust-lang/rust/issues/43122
6085
6086------------------------
6087
6088The `coroutines` feature gate in Rust allows you to define coroutine or
6089coroutine literals. A coroutine is a "resumable function" that syntactically
6090resembles a closure but compiles to much different semantics in the compiler
6091itself. The primary feature of a coroutine is that it can be suspended during
6092execution to be resumed at a later date. Coroutines use the `yield` keyword to
6093"return", and then the caller can `resume` a coroutine to resume execution just
6094after the `yield` keyword.
6095
6096Coroutines are an extra-unstable feature in the compiler right now. Added in
6097[RFC 2033] they're mostly intended right now as a information/constraint
6098gathering phase. The intent is that experimentation can happen on the nightly
6099compiler before actual stabilization. A further RFC will be required to
6100stabilize coroutines and will likely contain at least a few small
6101tweaks to the overall design.
6102
6103[RFC 2033]: https://github.com/rust-lang/rfcs/pull/2033
6104
6105A syntactical example of a coroutine is:
6106
6107```rust
6108#![feature(coroutines, coroutine_trait, stmt_expr_attributes)]
6109
6110use std::ops::{Coroutine, CoroutineState};
6111use std::pin::Pin;
6112
6113fn main() {
6114    let mut coroutine = #[coroutine] || {
6115        yield 1;
6116        return "foo"
6117    };
6118
6119    match Pin::new(&mut coroutine).resume(()) {
6120        CoroutineState::Yielded(1) => {}
6121        _ => panic!("unexpected value from resume"),
6122    }
6123    match Pin::new(&mut coroutine).resume(()) {
6124        CoroutineState::Complete("foo") => {}
6125        _ => panic!("unexpected value from resume"),
6126    }
6127}
6128```
6129
6130Coroutines are closure-like literals which are annotated with `#[coroutine]`
6131and can contain a `yield` statement. The
6132`yield` statement takes an optional expression of a value to yield out of the
6133coroutine. All coroutine literals implement the `Coroutine` trait in the
6134`std::ops` module. The `Coroutine` trait has one main method, `resume`, which
6135resumes execution of the coroutine at the previous suspension point.
6136
6137An example of the control flow of coroutines is that the following example
6138prints all numbers in order:
6139
6140```rust
6141#![feature(coroutines, coroutine_trait, stmt_expr_attributes)]
6142
6143use std::ops::Coroutine;
6144use std::pin::Pin;
6145
6146fn main() {
6147    let mut coroutine = #[coroutine] || {
6148        println!("2");
6149        yield;
6150        println!("4");
6151    };
6152
6153    println!("1");
6154    Pin::new(&mut coroutine).resume(());
6155    println!("3");
6156    Pin::new(&mut coroutine).resume(());
6157    println!("5");
6158}
6159```
6160
6161At this time the main use case of coroutines is an implementation
6162primitive for `async`/`await` and `gen` syntax, but coroutines
6163will likely be extended to other primitives in the future.
6164Feedback on the design and usage is always appreciated!
6165
6166### The `Coroutine` trait
6167
6168The `Coroutine` trait in `std::ops` currently looks like:
6169
6170```rust
6171# #![feature(arbitrary_self_types, coroutine_trait)]
6172# use std::ops::CoroutineState;
6173# use std::pin::Pin;
6174
6175pub trait Coroutine<R = ()> {
6176    type Yield;
6177    type Return;
6178    fn resume(self: Pin<&mut Self>, resume: R) -> CoroutineState<Self::Yield, Self::Return>;
6179}
6180```
6181
6182The `Coroutine::Yield` type is the type of values that can be yielded with the
6183`yield` statement. The `Coroutine::Return` type is the returned type of the
6184coroutine. This is typically the last expression in a coroutine's definition or
6185any value passed to `return` in a coroutine. The `resume` function is the entry
6186point for executing the `Coroutine` itself.
6187
6188The return value of `resume`, `CoroutineState`, looks like:
6189
6190```rust
6191pub enum CoroutineState<Y, R> {
6192    Yielded(Y),
6193    Complete(R),
6194}
6195```
6196
6197The `Yielded` variant indicates that the coroutine can later be resumed. This
6198corresponds to a `yield` point in a coroutine. The `Complete` variant indicates
6199that the coroutine is complete and cannot be resumed again. Calling `resume`
6200after a coroutine has returned `Complete` will likely result in a panic of the
6201program.
6202
6203### Closure-like semantics
6204
6205The closure-like syntax for coroutines alludes to the fact that they also have
6206closure-like semantics. Namely:
6207
6208* When created, a coroutine executes no code. A closure literal does not
6209  actually execute any of the closure's code on construction, and similarly a
6210  coroutine literal does not execute any code inside the coroutine when
6211  constructed.
6212
6213* Coroutines can capture outer variables by reference or by move, and this can
6214  be tweaked with the `move` keyword at the beginning of the closure. Like
6215  closures all coroutines will have an implicit environment which is inferred by
6216  the compiler. Outer variables can be moved into a coroutine for use as the
6217  coroutine progresses.
6218
6219* Coroutine literals produce a value with a unique type which implements the
6220  `std::ops::Coroutine` trait. This allows actual execution of the coroutine
6221  through the `Coroutine::resume` method as well as also naming it in return
6222  types and such.
6223
6224* Traits like `Send` and `Sync` are automatically implemented for a `Coroutine`
6225  depending on the captured variables of the environment. Unlike closures,
6226  coroutines also depend on variables live across suspension points. This means
6227  that although the ambient environment may be `Send` or `Sync`, the coroutine
6228  itself may not be due to internal variables live across `yield` points being
6229  not-`Send` or not-`Sync`. Note that coroutines do
6230  not implement traits like `Copy` or `Clone` automatically.
6231
6232* Whenever a coroutine is dropped it will drop all captured environment
6233  variables.
6234
6235### Coroutines as state machines
6236
6237In the compiler, coroutines are currently compiled as state machines. Each
6238`yield` expression will correspond to a different state that stores all live
6239variables over that suspension point. Resumption of a coroutine will dispatch on
6240the current state and then execute internally until a `yield` is reached, at
6241which point all state is saved off in the coroutine and a value is returned.
6242
6243Let's take a look at an example to see what's going on here:
6244
6245```rust
6246#![feature(coroutines, coroutine_trait, stmt_expr_attributes)]
6247
6248use std::ops::Coroutine;
6249use std::pin::Pin;
6250
6251fn main() {
6252    let ret = "foo";
6253    let mut coroutine = #[coroutine] move || {
6254        yield 1;
6255        return ret
6256    };
6257
6258    Pin::new(&mut coroutine).resume(());
6259    Pin::new(&mut coroutine).resume(());
6260}
6261```
6262
6263This coroutine literal will compile down to something similar to:
6264
6265```rust
6266#![feature(arbitrary_self_types, coroutine_trait)]
6267
6268use std::ops::{Coroutine, CoroutineState};
6269use std::pin::Pin;
6270
6271fn main() {
6272    let ret = "foo";
6273    let mut coroutine = {
6274        enum __Coroutine {
6275            Start(&'static str),
6276            Yield1(&'static str),
6277            Done,
6278        }
6279
6280        impl Coroutine for __Coroutine {
6281            type Yield = i32;
6282            type Return = &'static str;
6283
6284            fn resume(mut self: Pin<&mut Self>, resume: ()) -> CoroutineState<i32, &'static str> {
6285                use std::mem;
6286                match mem::replace(&mut *self, __Coroutine::Done) {
6287                    __Coroutine::Start(s) => {
6288                        *self = __Coroutine::Yield1(s);
6289                        CoroutineState::Yielded(1)
6290                    }
6291
6292                    __Coroutine::Yield1(s) => {
6293                        *self = __Coroutine::Done;
6294                        CoroutineState::Complete(s)
6295                    }
6296
6297                    __Coroutine::Done => {
6298                        panic!("coroutine resumed after completion")
6299                    }
6300                }
6301            }
6302        }
6303
6304        __Coroutine::Start(ret)
6305    };
6306
6307    Pin::new(&mut coroutine).resume(());
6308    Pin::new(&mut coroutine).resume(());
6309}
6310```
6311
6312Notably here we can see that the compiler is generating a fresh type,
6313`__Coroutine` in this case. This type has a number of states (represented here
6314as an `enum`) corresponding to each of the conceptual states of the coroutine.
6315At the beginning we're closing over our outer variable `foo` and then that
6316variable is also live over the `yield` point, so it's stored in both states.
6317
6318When the coroutine starts it'll immediately yield 1, but it saves off its state
6319just before it does so indicating that it has reached the yield point. Upon
6320resuming again we'll execute the `return ret` which returns the `Complete`
6321state.
6322
6323Here we can also note that the `Done` state, if resumed, panics immediately as
6324it's invalid to resume a completed coroutine. It's also worth noting that this
6325is just a rough desugaring, not a normative specification for what the compiler
6326does.
6327"##,
6328        default_severity: Severity::Allow,
6329        warn_since: None,
6330        deny_since: None,
6331    },
6332    Lint {
6333        label: "coverage_attribute",
6334        description: r##"# `coverage_attribute`
6335
6336The tracking issue for this feature is: [#84605]
6337
6338[#84605]: https://github.com/rust-lang/rust/issues/84605
6339
6340---
6341
6342The `coverage` attribute can be used to selectively disable coverage
6343instrumentation in an annotated function. This might be useful to:
6344
6345-   Avoid instrumentation overhead in a performance critical function
6346-   Avoid generating coverage for a function that is not meant to be executed,
6347    but still target 100% coverage for the rest of the program.
6348
6349## Example
6350
6351```rust
6352#![feature(coverage_attribute)]
6353
6354// `foo()` will get coverage instrumentation (by default)
6355fn foo() {
6356  // ...
6357}
6358
6359#[coverage(off)]
6360fn bar() {
6361  // ...
6362}
6363```
6364"##,
6365        default_severity: Severity::Allow,
6366        warn_since: None,
6367        deny_since: None,
6368    },
6369    Lint {
6370        label: "cow_is_borrowed",
6371        description: r##"# `cow_is_borrowed`
6372
6373
6374
6375The tracking issue for this feature is: [#65143]
6376
6377[#65143]: https://github.com/rust-lang/rust/issues/65143
6378
6379------------------------
6380"##,
6381        default_severity: Severity::Allow,
6382        warn_since: None,
6383        deny_since: None,
6384    },
6385    Lint {
6386        label: "csky_target_feature",
6387        description: r##"# `csky_target_feature`
6388
6389Target features on csky.
6390
6391The tracking issue for this feature is: [#150248]
6392
6393[#150248]: https://github.com/rust-lang/rust/issues/150248
6394
6395------------------------
6396"##,
6397        default_severity: Severity::Allow,
6398        warn_since: None,
6399        deny_since: None,
6400    },
6401    Lint {
6402        label: "cstr_bytes",
6403        description: r##"# `cstr_bytes`
6404
6405
6406
6407The tracking issue for this feature is: [#112115]
6408
6409[#112115]: https://github.com/rust-lang/rust/issues/112115
6410
6411------------------------
6412"##,
6413        default_severity: Severity::Allow,
6414        warn_since: None,
6415        deny_since: None,
6416    },
6417    Lint {
6418        label: "cstr_display",
6419        description: r##"# `cstr_display`
6420
6421
6422
6423The tracking issue for this feature is: [#139984]
6424
6425[#139984]: https://github.com/rust-lang/rust/issues/139984
6426
6427------------------------
6428"##,
6429        default_severity: Severity::Allow,
6430        warn_since: None,
6431        deny_since: None,
6432    },
6433    Lint {
6434        label: "cstr_internals",
6435        description: r##"# `cstr_internals`
6436
6437
6438
6439This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
6440
6441------------------------
6442"##,
6443        default_severity: Severity::Allow,
6444        warn_since: None,
6445        deny_since: None,
6446    },
6447    Lint {
6448        label: "current_thread_id",
6449        description: r##"# `current_thread_id`
6450
6451
6452
6453The tracking issue for this feature is: [#147194]
6454
6455[#147194]: https://github.com/rust-lang/rust/issues/147194
6456
6457------------------------
6458"##,
6459        default_severity: Severity::Allow,
6460        warn_since: None,
6461        deny_since: None,
6462    },
6463    Lint {
6464        label: "cursor_split",
6465        description: r##"# `cursor_split`
6466
6467
6468
6469The tracking issue for this feature is: [#86369]
6470
6471[#86369]: https://github.com/rust-lang/rust/issues/86369
6472
6473------------------------
6474"##,
6475        default_severity: Severity::Allow,
6476        warn_since: None,
6477        deny_since: None,
6478    },
6479    Lint {
6480        label: "custom_inner_attributes",
6481        description: r##"# `custom_inner_attributes`
6482
6483Allows non-builtin attributes in inner attribute position.
6484
6485The tracking issue for this feature is: [#54726]
6486
6487[#54726]: https://github.com/rust-lang/rust/issues/54726
6488
6489------------------------
6490"##,
6491        default_severity: Severity::Allow,
6492        warn_since: None,
6493        deny_since: None,
6494    },
6495    Lint {
6496        label: "custom_mir",
6497        description: r##"# `custom_mir`
6498
6499Allows writing custom MIR
6500
6501This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
6502
6503------------------------
6504"##,
6505        default_severity: Severity::Allow,
6506        warn_since: None,
6507        deny_since: None,
6508    },
6509    Lint {
6510        label: "custom_test_frameworks",
6511        description: r##"# `custom_test_frameworks`
6512
6513The tracking issue for this feature is: [#50297]
6514
6515[#50297]: https://github.com/rust-lang/rust/issues/50297
6516
6517------------------------
6518
6519The `custom_test_frameworks` feature allows the use of `#[test_case]` and `#![test_runner]`.
6520Any function, const, or static can be annotated with `#[test_case]` causing it to be aggregated (like `#[test]`)
6521and be passed to the test runner determined by the `#![test_runner]` crate attribute.
6522
6523```rust
6524#![feature(custom_test_frameworks)]
6525#![test_runner(my_runner)]
6526
6527fn my_runner(tests: &[&i32]) {
6528    for t in tests {
6529        if **t == 0 {
6530            println!("PASSED");
6531        } else {
6532            println!("FAILED");
6533        }
6534    }
6535}
6536
6537#[test_case]
6538const WILL_PASS: i32 = 0;
6539
6540#[test_case]
6541const WILL_FAIL: i32 = 4;
6542```
6543"##,
6544        default_severity: Severity::Allow,
6545        warn_since: None,
6546        deny_since: None,
6547    },
6548    Lint {
6549        label: "darwin_objc",
6550        description: r##"# `darwin_objc`
6551
6552
6553
6554The tracking issue for this feature is: [#145496]
6555
6556[#145496]: https://github.com/rust-lang/rust/issues/145496
6557
6558------------------------
6559"##,
6560        default_severity: Severity::Allow,
6561        warn_since: None,
6562        deny_since: None,
6563    },
6564    Lint {
6565        label: "deadline_api",
6566        description: r##"# `deadline_api`
6567
6568
6569
6570The tracking issue for this feature is: [#46316]
6571
6572[#46316]: https://github.com/rust-lang/rust/issues/46316
6573
6574------------------------
6575"##,
6576        default_severity: Severity::Allow,
6577        warn_since: None,
6578        deny_since: None,
6579    },
6580    Lint {
6581        label: "debug_closure_helpers",
6582        description: r##"# `debug_closure_helpers`
6583
6584
6585
6586The tracking issue for this feature is: [#117729]
6587
6588[#117729]: https://github.com/rust-lang/rust/issues/117729
6589
6590------------------------
6591"##,
6592        default_severity: Severity::Allow,
6593        warn_since: None,
6594        deny_since: None,
6595    },
6596    Lint {
6597        label: "dec2flt",
6598        description: r##"# `dec2flt`
6599
6600This feature is internal to the Rust compiler and is not intended for general use.
6601
6602------------------------
6603"##,
6604        default_severity: Severity::Allow,
6605        warn_since: None,
6606        deny_since: None,
6607    },
6608    Lint {
6609        label: "decl_macro",
6610        description: r##"# `decl_macro`
6611
6612Allows declarative macros 2.0 (`macro`).
6613
6614The tracking issue for this feature is: [#39412]
6615
6616[#39412]: https://github.com/rust-lang/rust/issues/39412
6617
6618------------------------
6619"##,
6620        default_severity: Severity::Allow,
6621        warn_since: None,
6622        deny_since: None,
6623    },
6624    Lint {
6625        label: "default_field_values",
6626        description: r##"# `default_field_values`
6627
6628The tracking issue for this feature is: [#132162]
6629
6630[#132162]: https://github.com/rust-lang/rust/issues/132162
6631
6632The RFC for this feature is: [#3681]
6633
6634[#3681]: https://github.com/rust-lang/rfcs/blob/master/text/3681-default-field-values.md
6635
6636------------------------
6637
6638The `default_field_values` feature allows users to specify a const value for
6639individual fields in struct definitions, allowing those to be omitted from
6640initializers.
6641
6642## Examples
6643
6644```rust
6645#![feature(default_field_values)]
6646
6647#[derive(Default)]
6648struct Pet {
6649    name: Option<String>, // impl Default for Pet will use Default::default() for name
6650    age: i128 = 42, // impl Default for Pet will use the literal 42 for age
6651}
6652
6653fn main() {
6654    let a = Pet { name: Some(String::new()), .. }; // Pet { name: Some(""), age: 42 }
6655    let b = Pet::default(); // Pet { name: None, age: 42 }
6656    assert_eq!(a.age, b.age);
6657    // The following would be a compilation error: `name` needs to be specified
6658    // let _ = Pet { .. };
6659}
6660```
6661
6662## `#[derive(Default)]`
6663
6664When deriving Default, the provided values are then used. On enum variants,
6665the variant must still be marked with `#[default]` and have all its fields
6666with default values.
6667
6668```rust
6669#![feature(default_field_values)]
6670
6671#[derive(Default)]
6672enum A {
6673    #[default]
6674    B {
6675        x: i32 = 0,
6676        y: i32 = 0,
6677    },
6678    C,
6679}
6680```
6681
6682## Enum variants
6683
6684This feature also supports enum variants for both specifying default values
6685and `#[derive(Default)]`.
6686
6687## Interaction with `#[non_exhaustive]`
6688
6689A struct or enum variant marked with `#[non_exhaustive]` is not allowed to
6690have default field values.
6691
6692## Lints
6693
6694When manually implementing the `Default` trait for a type that has default
6695field values, if any of these are overridden in the impl the
6696`default_overrides_default_fields` lint will trigger. This lint is in place
6697to avoid surprising diverging behavior between `S { .. }` and
6698`S::default()`, where using the same type in both ways could result in
6699different values. The appropriate way to write a manual `Default`
6700implementation is to use the functional update syntax:
6701
6702```rust
6703#![feature(default_field_values)]
6704
6705struct Pet {
6706    name: String,
6707    age: i128 = 42, // impl Default for Pet will use the literal 42 for age
6708}
6709
6710impl Default for Pet {
6711    fn default() -> Pet {
6712        Pet {
6713            name: "no-name".to_string(),
6714            ..
6715        }
6716    }
6717}
6718```
6719"##,
6720        default_severity: Severity::Allow,
6721        warn_since: None,
6722        deny_since: None,
6723    },
6724    Lint {
6725        label: "deprecated_suggestion",
6726        description: r##"# `deprecated_suggestion`
6727
6728Allows having using `suggestion` in the `#[deprecated]` attribute.
6729
6730The tracking issue for this feature is: [#94785]
6731
6732[#94785]: https://github.com/rust-lang/rust/issues/94785
6733
6734------------------------
6735"##,
6736        default_severity: Severity::Allow,
6737        warn_since: None,
6738        deny_since: None,
6739    },
6740    Lint {
6741        label: "deque_extend_front",
6742        description: r##"# `deque_extend_front`
6743
6744
6745
6746The tracking issue for this feature is: [#146975]
6747
6748[#146975]: https://github.com/rust-lang/rust/issues/146975
6749
6750------------------------
6751"##,
6752        default_severity: Severity::Allow,
6753        warn_since: None,
6754        deny_since: None,
6755    },
6756    Lint {
6757        label: "deref_patterns",
6758        description: r##"# `deref_patterns`
6759
6760The tracking issue for this feature is: [#87121]
6761
6762[#87121]: https://github.com/rust-lang/rust/issues/87121
6763
6764------------------------
6765
6766> **Note**: This feature supersedes [`box_patterns`].
6767
6768This feature permits pattern matching on [smart pointers in the standard library] through their
6769`Deref` target types, either implicitly or with explicit `deref!(_)` patterns (the syntax of which
6770is currently a placeholder).
6771
6772```rust
6773#![feature(deref_patterns)]
6774
6775let mut v = vec![Box::new(Some(0))];
6776
6777// Implicit dereferences are inserted when a pattern can match against the
6778// result of repeatedly dereferencing but can't match against a smart
6779// pointer itself. This works alongside match ergonomics for references.
6780if let [Some(x)] = &mut v {
6781    *x += 1;
6782}
6783
6784// Explicit `deref!(_)` patterns may instead be used when finer control is
6785// needed, e.g. to dereference only a single smart pointer, or to bind the
6786// the result of dereferencing to a variable.
6787if let deref!([deref!(opt_x @ Some(1))]) = &mut v {
6788    opt_x.as_mut().map(|x| *x += 1);
6789}
6790
6791assert_eq!(v, [Box::new(Some(2))]);
6792```
6793
6794Without this feature, it may be necessary to introduce temporaries to represent dereferenced places
6795when matching on nested structures:
6796
6797```rust
6798let mut v = vec![Box::new(Some(0))];
6799if let [b] = &mut *v {
6800    if let Some(x) = &mut **b {
6801        *x += 1;
6802    }
6803}
6804if let [b] = &mut *v {
6805    if let opt_x @ Some(1) = &mut **b {
6806        opt_x.as_mut().map(|x| *x += 1);
6807    }
6808}
6809assert_eq!(v, [Box::new(Some(2))]);
6810```
6811
6812Like [`box_patterns`], deref patterns may move out of boxes:
6813
6814```rust
6815# #![feature(deref_patterns)]
6816struct NoCopy;
6817let deref!(x) = Box::new(NoCopy);
6818drop::<NoCopy>(x);
6819```
6820
6821Additionally, `deref_patterns` implements changes to string and byte string literal patterns,
6822allowing then to be used in deref patterns:
6823
6824```rust
6825# #![feature(deref_patterns)]
6826match ("test".to_string(), Box::from("test"), b"test".to_vec()) {
6827    ("test", "test", b"test") => {}
6828    _ => panic!(),
6829}
6830
6831// This works through multiple layers of reference and smart pointer:
6832match (&Box::new(&"test".to_string()), &&&"test") {
6833    ("test", "test") => {}
6834    _ => panic!(),
6835}
6836
6837// `deref!("...")` syntax may also be used:
6838match "test".to_string() {
6839    deref!("test") => {}
6840    _ => panic!(),
6841}
6842
6843// Matching on slices and arrays using literals is possible elsewhere as well:
6844match *"test" {
6845    "test" => {}
6846    _ => panic!(),
6847}
6848match *b"test" {
6849    b"test" => {}
6850    _ => panic!(),
6851}
6852match *(b"test" as &[u8]) {
6853    b"test" => {}
6854    _ => panic!(),
6855}
6856```
6857
6858[`box_patterns`]: ./box-patterns.md
6859[smart pointers in the standard library]: https://doc.rust-lang.org/std/ops/trait.DerefPure.html#implementors
6860"##,
6861        default_severity: Severity::Allow,
6862        warn_since: None,
6863        deny_since: None,
6864    },
6865    Lint {
6866        label: "deref_pure_trait",
6867        description: r##"# `deref_pure_trait`
6868
6869
6870
6871The tracking issue for this feature is: [#87121]
6872
6873[#87121]: https://github.com/rust-lang/rust/issues/87121
6874
6875------------------------
6876"##,
6877        default_severity: Severity::Allow,
6878        warn_since: None,
6879        deny_since: None,
6880    },
6881    Lint {
6882        label: "derive_clone_copy_internals",
6883        description: r##"# `derive_clone_copy_internals`
6884
6885This feature is internal to the Rust compiler and is not intended for general use.
6886
6887------------------------
6888"##,
6889        default_severity: Severity::Allow,
6890        warn_since: None,
6891        deny_since: None,
6892    },
6893    Lint {
6894        label: "derive_coerce_pointee",
6895        description: r##"# `derive_coerce_pointee`
6896
6897
6898
6899The tracking issue for this feature is: [#123430]
6900
6901[#123430]: https://github.com/rust-lang/rust/issues/123430
6902
6903------------------------
6904"##,
6905        default_severity: Severity::Allow,
6906        warn_since: None,
6907        deny_since: None,
6908    },
6909    Lint {
6910        label: "derive_const",
6911        description: r##"# `derive_const`
6912
6913
6914
6915The tracking issue for this feature is: [#118304]
6916
6917[#118304]: https://github.com/rust-lang/rust/issues/118304
6918
6919------------------------
6920"##,
6921        default_severity: Severity::Allow,
6922        warn_since: None,
6923        deny_since: None,
6924    },
6925    Lint {
6926        label: "derive_eq_internals",
6927        description: r##"# `derive_eq_internals`
6928
6929This feature is internal to the Rust compiler and is not intended for general use.
6930
6931------------------------
6932"##,
6933        default_severity: Severity::Allow,
6934        warn_since: None,
6935        deny_since: None,
6936    },
6937    Lint {
6938        label: "derive_from",
6939        description: r##"# `derive_from`
6940
6941Allows deriving the From trait on single-field structs.
6942
6943The tracking issue for this feature is: [#144889]
6944
6945[#144889]: https://github.com/rust-lang/rust/issues/144889
6946
6947------------------------
6948"##,
6949        default_severity: Severity::Allow,
6950        warn_since: None,
6951        deny_since: None,
6952    },
6953    Lint {
6954        label: "derive_macro_global_path",
6955        description: r##"# `derive_macro_global_path`
6956
6957
6958
6959The tracking issue for this feature is: [#154645]
6960
6961[#154645]: https://github.com/rust-lang/rust/issues/154645
6962
6963------------------------
6964"##,
6965        default_severity: Severity::Allow,
6966        warn_since: None,
6967        deny_since: None,
6968    },
6969    Lint {
6970        label: "diagnostic_on_const",
6971        description: r##"# `diagnostic_on_const`
6972
6973Allows giving non-const impls custom diagnostic messages if attempted to be used as const
6974
6975The tracking issue for this feature is: [#143874]
6976
6977[#143874]: https://github.com/rust-lang/rust/issues/143874
6978
6979------------------------
6980"##,
6981        default_severity: Severity::Allow,
6982        warn_since: None,
6983        deny_since: None,
6984    },
6985    Lint {
6986        label: "diagnostic_on_move",
6987        description: r##"# `diagnostic_on_move`
6988
6989Allows giving on-move borrowck custom diagnostic messages for a type
6990
6991The tracking issue for this feature is: [#154181]
6992
6993[#154181]: https://github.com/rust-lang/rust/issues/154181
6994
6995------------------------
6996"##,
6997        default_severity: Severity::Allow,
6998        warn_since: None,
6999        deny_since: None,
7000    },
7001    Lint {
7002        label: "diagnostic_on_unknown",
7003        description: r##"# `diagnostic_on_unknown`
7004
7005Allows giving unresolved imports a custom diagnostic message
7006
7007The tracking issue for this feature is: [#152900]
7008
7009[#152900]: https://github.com/rust-lang/rust/issues/152900
7010
7011------------------------
7012"##,
7013        default_severity: Severity::Allow,
7014        warn_since: None,
7015        deny_since: None,
7016    },
7017    Lint {
7018        label: "dir_entry_ext2",
7019        description: r##"# `dir_entry_ext2`
7020
7021
7022
7023The tracking issue for this feature is: [#85573]
7024
7025[#85573]: https://github.com/rust-lang/rust/issues/85573
7026
7027------------------------
7028"##,
7029        default_severity: Severity::Allow,
7030        warn_since: None,
7031        deny_since: None,
7032    },
7033    Lint {
7034        label: "dirfd",
7035        description: r##"# `dirfd`
7036
7037
7038
7039The tracking issue for this feature is: [#120426]
7040
7041[#120426]: https://github.com/rust-lang/rust/issues/120426
7042
7043------------------------
7044"##,
7045        default_severity: Severity::Allow,
7046        warn_since: None,
7047        deny_since: None,
7048    },
7049    Lint {
7050        label: "dirhandle",
7051        description: r##"# `dirhandle`
7052
7053
7054
7055The tracking issue for this feature is: [#120426]
7056
7057[#120426]: https://github.com/rust-lang/rust/issues/120426
7058
7059------------------------
7060"##,
7061        default_severity: Severity::Allow,
7062        warn_since: None,
7063        deny_since: None,
7064    },
7065    Lint {
7066        label: "discriminant_kind",
7067        description: r##"# `discriminant_kind`
7068
7069
7070
7071This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
7072
7073------------------------
7074"##,
7075        default_severity: Severity::Allow,
7076        warn_since: None,
7077        deny_since: None,
7078    },
7079    Lint {
7080        label: "disjoint_bitor",
7081        description: r##"# `disjoint_bitor`
7082
7083
7084
7085The tracking issue for this feature is: [#135758]
7086
7087[#135758]: https://github.com/rust-lang/rust/issues/135758
7088
7089------------------------
7090"##,
7091        default_severity: Severity::Allow,
7092        warn_since: None,
7093        deny_since: None,
7094    },
7095    Lint {
7096        label: "dispatch_from_dyn",
7097        description: r##"# `dispatch_from_dyn`
7098
7099
7100
7101This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
7102
7103------------------------
7104"##,
7105        default_severity: Severity::Allow,
7106        warn_since: None,
7107        deny_since: None,
7108    },
7109    Lint {
7110        label: "doc_cfg",
7111        description: r##"# `doc_cfg`
7112
7113The tracking issue for this feature is: [#43781]
7114
7115------
7116
7117The `doc_cfg` feature allows an API be documented as only available in some specific platforms.
7118This attribute has two effects:
7119
71201. In the annotated item's documentation, there will be a message saying "Available on
7121    (platform) only".
7122
71232. The item's doc-tests will only run on the specific platform.
7124
7125In addition to allowing the use of the `#[doc(cfg)]` attribute, this feature enables the use of a
7126special conditional compilation flag, `#[cfg(doc)]`, set whenever building documentation on your
7127crate.
7128
7129This feature was introduced as part of PR [#43348] to allow the platform-specific parts of the
7130standard library be documented.
7131
7132```rust
7133#![feature(doc_cfg)]
7134
7135#[cfg(any(windows, doc))]
7136#[doc(cfg(windows))]
7137/// The application's icon in the notification area (a.k.a. system tray).
7138///
7139/// # Examples
7140///
7141/// ```no_run
7142/// extern crate my_awesome_ui_library;
7143/// use my_awesome_ui_library::current_app;
7144/// use my_awesome_ui_library::windows::notification;
7145///
7146/// let icon = current_app().get::<notification::Icon>();
7147/// icon.show();
7148/// icon.show_message("Hello");
7149/// ```
7150pub struct Icon {
7151    // ...
7152}
7153```
7154
7155[#43781]: https://github.com/rust-lang/rust/issues/43781
7156[#43348]: https://github.com/rust-lang/rust/issues/43348
7157"##,
7158        default_severity: Severity::Allow,
7159        warn_since: None,
7160        deny_since: None,
7161    },
7162    Lint {
7163        label: "doc_masked",
7164        description: r##"# `doc_masked`
7165
7166The tracking issue for this feature is: [#44027]
7167
7168-----
7169
7170The `doc_masked` feature allows a crate to exclude types from a given crate from appearing in lists
7171of trait implementations. The specifics of the feature are as follows:
7172
71731. When rustdoc encounters an `extern crate` statement annotated with a `#[doc(masked)]` attribute,
7174   it marks the crate as being masked.
7175
71762. When listing traits a given type implements, rustdoc ensures that traits from masked crates are
7177   not emitted into the documentation.
7178
71793. When listing types that implement a given trait, rustdoc ensures that types from masked crates
7180   are not emitted into the documentation.
7181
7182This feature was introduced in PR [#44026] to ensure that compiler-internal and
7183implementation-specific types and traits were not included in the standard library's documentation.
7184Such types would introduce broken links into the documentation.
7185
7186[#44026]: https://github.com/rust-lang/rust/pull/44026
7187[#44027]: https://github.com/rust-lang/rust/pull/44027
7188"##,
7189        default_severity: Severity::Allow,
7190        warn_since: None,
7191        deny_since: None,
7192    },
7193    Lint {
7194        label: "doc_notable_trait",
7195        description: r##"# `doc_notable_trait`
7196
7197The tracking issue for this feature is: [#45040]
7198
7199The `doc_notable_trait` feature allows the use of the `#[doc(notable_trait)]`
7200attribute, which will display the trait in a "Notable traits" dialog for
7201functions returning types that implement the trait. For example, this attribute
7202is applied to the `Iterator`, `Future`, `io::Read`, and `io::Write` traits in
7203the standard library.
7204
7205You can do this on your own traits like so:
7206
7207```
7208#![feature(doc_notable_trait)]
7209
7210#[doc(notable_trait)]
7211pub trait MyTrait {}
7212
7213pub struct MyStruct;
7214impl MyTrait for MyStruct {}
7215
7216/// The docs for this function will have a button that displays a dialog about
7217/// `MyStruct` implementing `MyTrait`.
7218pub fn my_fn() -> MyStruct { MyStruct }
7219```
7220
7221This feature was originally implemented in PR [#45039].
7222
7223See also its documentation in [the rustdoc book][rustdoc-book-notable_trait].
7224
7225[#45040]: https://github.com/rust-lang/rust/issues/45040
7226[#45039]: https://github.com/rust-lang/rust/pull/45039
7227[rustdoc-book-notable_trait]: ../../rustdoc/unstable-features.html#adding-your-trait-to-the-notable-traits-dialog
7228"##,
7229        default_severity: Severity::Allow,
7230        warn_since: None,
7231        deny_since: None,
7232    },
7233    Lint {
7234        label: "downcast_unchecked",
7235        description: r##"# `downcast_unchecked`
7236
7237
7238
7239The tracking issue for this feature is: [#90850]
7240
7241[#90850]: https://github.com/rust-lang/rust/issues/90850
7242
7243------------------------
7244"##,
7245        default_severity: Severity::Allow,
7246        warn_since: None,
7247        deny_since: None,
7248    },
7249    Lint {
7250        label: "drain_keep_rest",
7251        description: r##"# `drain_keep_rest`
7252
7253
7254
7255The tracking issue for this feature is: [#101122]
7256
7257[#101122]: https://github.com/rust-lang/rust/issues/101122
7258
7259------------------------
7260"##,
7261        default_severity: Severity::Allow,
7262        warn_since: None,
7263        deny_since: None,
7264    },
7265    Lint {
7266        label: "drop_guard",
7267        description: r##"# `drop_guard`
7268
7269
7270
7271The tracking issue for this feature is: [#144426]
7272
7273[#144426]: https://github.com/rust-lang/rust/issues/144426
7274
7275------------------------
7276"##,
7277        default_severity: Severity::Allow,
7278        warn_since: None,
7279        deny_since: None,
7280    },
7281    Lint {
7282        label: "dropck_eyepatch",
7283        description: r##"# `dropck_eyepatch`
7284
7285Allows using the `may_dangle` attribute (RFC 1327).
7286
7287The tracking issue for this feature is: [#34761]
7288
7289[#34761]: https://github.com/rust-lang/rust/issues/34761
7290
7291------------------------
7292"##,
7293        default_severity: Severity::Allow,
7294        warn_since: None,
7295        deny_since: None,
7296    },
7297    Lint {
7298        label: "duration_constants",
7299        description: r##"# `duration_constants`
7300
7301
7302
7303The tracking issue for this feature is: [#57391]
7304
7305[#57391]: https://github.com/rust-lang/rust/issues/57391
7306
7307------------------------
7308"##,
7309        default_severity: Severity::Allow,
7310        warn_since: None,
7311        deny_since: None,
7312    },
7313    Lint {
7314        label: "duration_constructors",
7315        description: r##"# `duration_constructors`
7316
7317The tracking issue for this feature is: [#120301]
7318
7319[#120301]: https://github.com/rust-lang/rust/issues/120301
7320
7321------------------------
7322
7323Add the methods `from_days` and `from_weeks` to `Duration`.
7324"##,
7325        default_severity: Severity::Allow,
7326        warn_since: None,
7327        deny_since: None,
7328    },
7329    Lint {
7330        label: "duration_integer_division",
7331        description: r##"# `duration_integer_division`
7332
7333
7334
7335The tracking issue for this feature is: [#149573]
7336
7337[#149573]: https://github.com/rust-lang/rust/issues/149573
7338
7339------------------------
7340"##,
7341        default_severity: Severity::Allow,
7342        warn_since: None,
7343        deny_since: None,
7344    },
7345    Lint {
7346        label: "duration_millis_float",
7347        description: r##"# `duration_millis_float`
7348
7349
7350
7351The tracking issue for this feature is: [#122451]
7352
7353[#122451]: https://github.com/rust-lang/rust/issues/122451
7354
7355------------------------
7356"##,
7357        default_severity: Severity::Allow,
7358        warn_since: None,
7359        deny_since: None,
7360    },
7361    Lint {
7362        label: "duration_units",
7363        description: r##"# `duration_units`
7364
7365
7366
7367The tracking issue for this feature is: [#120301]
7368
7369[#120301]: https://github.com/rust-lang/rust/issues/120301
7370
7371------------------------
7372"##,
7373        default_severity: Severity::Allow,
7374        warn_since: None,
7375        deny_since: None,
7376    },
7377    Lint {
7378        label: "edition_panic",
7379        description: r##"# `edition_panic`
7380
7381
7382
7383This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
7384
7385------------------------
7386"##,
7387        default_severity: Severity::Allow,
7388        warn_since: None,
7389        deny_since: None,
7390    },
7391    Lint {
7392        label: "effective_target_features",
7393        description: r##"# `effective_target_features`
7394
7395Allows features to allow target_feature to better interact with traits.
7396
7397The tracking issue for this feature is: [#143352]
7398
7399[#143352]: https://github.com/rust-lang/rust/issues/143352
7400
7401------------------------
7402"##,
7403        default_severity: Severity::Allow,
7404        warn_since: None,
7405        deny_since: None,
7406    },
7407    Lint {
7408        label: "eii_internals",
7409        description: r##"# `eii_internals`
7410
7411Implementation details of externally implementable items
7412
7413This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
7414
7415------------------------
7416"##,
7417        default_severity: Severity::Allow,
7418        warn_since: None,
7419        deny_since: None,
7420    },
7421    Lint {
7422        label: "ergonomic_clones",
7423        description: r##"# `ergonomic_clones`
7424
7425Allows the .use postfix syntax `x.use` and use closures `use |x| { ... }`
7426
7427The tracking issue for this feature is: [#132290]
7428
7429[#132290]: https://github.com/rust-lang/rust/issues/132290
7430
7431------------------------
7432"##,
7433        default_severity: Severity::Allow,
7434        warn_since: None,
7435        deny_since: None,
7436    },
7437    Lint {
7438        label: "ermsb_target_feature",
7439        description: r##"# `ermsb_target_feature`
7440
7441ermsb target feature on x86.
7442
7443The tracking issue for this feature is: [#150249]
7444
7445[#150249]: https://github.com/rust-lang/rust/issues/150249
7446
7447------------------------
7448"##,
7449        default_severity: Severity::Allow,
7450        warn_since: None,
7451        deny_since: None,
7452    },
7453    Lint {
7454        label: "error_generic_member_access",
7455        description: r##"# `error_generic_member_access`
7456
7457
7458
7459The tracking issue for this feature is: [#99301]
7460
7461[#99301]: https://github.com/rust-lang/rust/issues/99301
7462
7463------------------------
7464"##,
7465        default_severity: Severity::Allow,
7466        warn_since: None,
7467        deny_since: None,
7468    },
7469    Lint {
7470        label: "error_iter",
7471        description: r##"# `error_iter`
7472
7473
7474
7475The tracking issue for this feature is: [#58520]
7476
7477[#58520]: https://github.com/rust-lang/rust/issues/58520
7478
7479------------------------
7480"##,
7481        default_severity: Severity::Allow,
7482        warn_since: None,
7483        deny_since: None,
7484    },
7485    Lint {
7486        label: "error_reporter",
7487        description: r##"# `error_reporter`
7488
7489
7490
7491The tracking issue for this feature is: [#90172]
7492
7493[#90172]: https://github.com/rust-lang/rust/issues/90172
7494
7495------------------------
7496"##,
7497        default_severity: Severity::Allow,
7498        warn_since: None,
7499        deny_since: None,
7500    },
7501    Lint {
7502        label: "error_type_id",
7503        description: r##"# `error_type_id`
7504
7505
7506
7507The tracking issue for this feature is: [#60784]
7508
7509[#60784]: https://github.com/rust-lang/rust/issues/60784
7510
7511------------------------
7512"##,
7513        default_severity: Severity::Allow,
7514        warn_since: None,
7515        deny_since: None,
7516    },
7517    Lint {
7518        label: "exact_bitshifts",
7519        description: r##"# `exact_bitshifts`
7520
7521
7522
7523The tracking issue for this feature is: [#144336]
7524
7525[#144336]: https://github.com/rust-lang/rust/issues/144336
7526
7527------------------------
7528"##,
7529        default_severity: Severity::Allow,
7530        warn_since: None,
7531        deny_since: None,
7532    },
7533    Lint {
7534        label: "exact_div",
7535        description: r##"# `exact_div`
7536
7537
7538
7539The tracking issue for this feature is: [#139911]
7540
7541[#139911]: https://github.com/rust-lang/rust/issues/139911
7542
7543------------------------
7544"##,
7545        default_severity: Severity::Allow,
7546        warn_since: None,
7547        deny_since: None,
7548    },
7549    Lint {
7550        label: "exact_size_is_empty",
7551        description: r##"# `exact_size_is_empty`
7552
7553
7554
7555The tracking issue for this feature is: [#35428]
7556
7557[#35428]: https://github.com/rust-lang/rust/issues/35428
7558
7559------------------------
7560"##,
7561        default_severity: Severity::Allow,
7562        warn_since: None,
7563        deny_since: None,
7564    },
7565    Lint {
7566        label: "exclusive_wrapper",
7567        description: r##"# `exclusive_wrapper`
7568
7569
7570
7571The tracking issue for this feature is: [#98407]
7572
7573[#98407]: https://github.com/rust-lang/rust/issues/98407
7574
7575------------------------
7576"##,
7577        default_severity: Severity::Allow,
7578        warn_since: None,
7579        deny_since: None,
7580    },
7581    Lint {
7582        label: "exhaustive_patterns",
7583        description: r##"# `exhaustive_patterns`
7584
7585Allows exhaustive pattern matching on types that contain uninhabited types.
7586
7587The tracking issue for this feature is: [#51085]
7588
7589[#51085]: https://github.com/rust-lang/rust/issues/51085
7590
7591------------------------
7592"##,
7593        default_severity: Severity::Allow,
7594        warn_since: None,
7595        deny_since: None,
7596    },
7597    Lint {
7598        label: "exit_status_error",
7599        description: r##"# `exit_status_error`
7600
7601
7602
7603The tracking issue for this feature is: [#84908]
7604
7605[#84908]: https://github.com/rust-lang/rust/issues/84908
7606
7607------------------------
7608"##,
7609        default_severity: Severity::Allow,
7610        warn_since: None,
7611        deny_since: None,
7612    },
7613    Lint {
7614        label: "exitcode_exit_method",
7615        description: r##"# `exitcode_exit_method`
7616
7617
7618
7619The tracking issue for this feature is: [#97100]
7620
7621[#97100]: https://github.com/rust-lang/rust/issues/97100
7622
7623------------------------
7624"##,
7625        default_severity: Severity::Allow,
7626        warn_since: None,
7627        deny_since: None,
7628    },
7629    Lint {
7630        label: "explicit_extern_abis",
7631        description: r##"# `explicit_extern_abis`
7632
7633The tracking issue for this feature is: [#134986]
7634
7635------
7636
7637Disallow `extern` without an explicit ABI. We should write `extern "C"`
7638(or another ABI) instead of just `extern`.
7639
7640By making the ABI explicit, it becomes much clearer that "C" is just one of the
7641possible choices, rather than the "standard" way for external functions.
7642Removing the default makes it easier to add a new ABI on equal footing as "C".
7643
7644```rust,editionfuture,compile_fail
7645#![feature(explicit_extern_abis)]
7646
7647extern fn function1() {}  // ERROR `extern` declarations without an explicit ABI
7648                          // are disallowed
7649
7650extern "C" fn function2() {} // compiles
7651
7652extern "aapcs" fn function3() {} // compiles
7653```
7654
7655[#134986]: https://github.com/rust-lang/rust/issues/134986
7656"##,
7657        default_severity: Severity::Allow,
7658        warn_since: None,
7659        deny_since: None,
7660    },
7661    Lint {
7662        label: "explicit_tail_calls",
7663        description: r##"# `explicit_tail_calls`
7664
7665Allows explicit tail calls via `become` expression.
7666
7667The tracking issue for this feature is: [#112788]
7668
7669[#112788]: https://github.com/rust-lang/rust/issues/112788
7670
7671------------------------
7672"##,
7673        default_severity: Severity::Allow,
7674        warn_since: None,
7675        deny_since: None,
7676    },
7677    Lint {
7678        label: "export_stable",
7679        description: r##"# `export_stable`
7680
7681Allows using `#[export_stable]` which indicates that an item is exportable.
7682
7683The tracking issue for this feature is: [#139939]
7684
7685[#139939]: https://github.com/rust-lang/rust/issues/139939
7686
7687------------------------
7688"##,
7689        default_severity: Severity::Allow,
7690        warn_since: None,
7691        deny_since: None,
7692    },
7693    Lint {
7694        label: "extend_one",
7695        description: r##"# `extend_one`
7696
7697
7698
7699The tracking issue for this feature is: [#72631]
7700
7701[#72631]: https://github.com/rust-lang/rust/issues/72631
7702
7703------------------------
7704"##,
7705        default_severity: Severity::Allow,
7706        warn_since: None,
7707        deny_since: None,
7708    },
7709    Lint {
7710        label: "extend_one_unchecked",
7711        description: r##"# `extend_one_unchecked`
7712
7713
7714
7715This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
7716
7717------------------------
7718"##,
7719        default_severity: Severity::Allow,
7720        warn_since: None,
7721        deny_since: None,
7722    },
7723    Lint {
7724        label: "extern_item_impls",
7725        description: r##"# `extern_item_impls`
7726
7727Externally implementable items
7728
7729The tracking issue for this feature is: [#125418]
7730
7731[#125418]: https://github.com/rust-lang/rust/issues/125418
7732
7733------------------------
7734"##,
7735        default_severity: Severity::Allow,
7736        warn_since: None,
7737        deny_since: None,
7738    },
7739    Lint {
7740        label: "extern_types",
7741        description: r##"# `extern_types`
7742
7743Allows defining `extern type`s.
7744
7745The tracking issue for this feature is: [#43467]
7746
7747[#43467]: https://github.com/rust-lang/rust/issues/43467
7748
7749------------------------
7750"##,
7751        default_severity: Severity::Allow,
7752        warn_since: None,
7753        deny_since: None,
7754    },
7755    Lint {
7756        label: "f128",
7757        description: r##"# `f128`
7758
7759The tracking issue for this feature is: [#116909]
7760
7761[#116909]: https://github.com/rust-lang/rust/issues/116909
7762
7763---
7764
7765Enable the `f128` type for IEEE 128-bit floating numbers (quad precision).
7766"##,
7767        default_severity: Severity::Allow,
7768        warn_since: None,
7769        deny_since: None,
7770    },
7771    Lint {
7772        label: "f16",
7773        description: r##"# `f16`
7774
7775The tracking issue for this feature is: [#116909]
7776
7777[#116909]: https://github.com/rust-lang/rust/issues/116909
7778
7779---
7780
7781Enable the `f16` type for IEEE 16-bit floating numbers (half precision).
7782"##,
7783        default_severity: Severity::Allow,
7784        warn_since: None,
7785        deny_since: None,
7786    },
7787    Lint {
7788        label: "f32_from_f16",
7789        description: r##"# `f32_from_f16`
7790
7791
7792
7793The tracking issue for this feature is: [#154005]
7794
7795[#154005]: https://github.com/rust-lang/rust/issues/154005
7796
7797------------------------
7798"##,
7799        default_severity: Severity::Allow,
7800        warn_since: None,
7801        deny_since: None,
7802    },
7803    Lint {
7804        label: "fd",
7805        description: r##"# `fd`
7806
7807This feature is internal to the Rust compiler and is not intended for general use.
7808
7809------------------------
7810"##,
7811        default_severity: Severity::Allow,
7812        warn_since: None,
7813        deny_since: None,
7814    },
7815    Lint {
7816        label: "ffi_const",
7817        description: r##"# `ffi_const`
7818
7819The tracking issue for this feature is: [#58328]
7820
7821------
7822
7823The `#[ffi_const]` attribute applies clang's `const` attribute to foreign
7824functions declarations.
7825
7826That is, `#[ffi_const]` functions shall have no effects except for its return
7827value, which can only depend on the values of the function parameters, and is
7828not affected by changes to the observable state of the program.
7829
7830Applying the `#[ffi_const]` attribute to a function that violates these
7831requirements is undefined behaviour.
7832
7833This attribute enables Rust to perform common optimizations, like sub-expression
7834elimination, and it can avoid emitting some calls in repeated invocations of the
7835function with the same argument values regardless of other operations being
7836performed in between these functions calls (as opposed to `#[ffi_pure]`
7837functions).
7838
7839## Pitfalls
7840
7841A `#[ffi_const]` function can only read global memory that would not affect
7842its return value for the whole execution of the program (e.g. immutable global
7843memory). `#[ffi_const]` functions are referentially-transparent and therefore
7844more strict than `#[ffi_pure]` functions.
7845
7846A common pitfall involves applying the `#[ffi_const]` attribute to a
7847function that reads memory through pointer arguments which do not necessarily
7848point to immutable global memory.
7849
7850A `#[ffi_const]` function that returns unit has no effect on the abstract
7851machine's state, and a `#[ffi_const]` function cannot be `#[ffi_pure]`.
7852
7853A `#[ffi_const]` function must not diverge, neither via a side effect (e.g. a
7854call to `abort`) nor by infinite loops.
7855
7856When translating C headers to Rust FFI, it is worth verifying for which targets
7857the `const` attribute is enabled in those headers, and using the appropriate
7858`cfg` macros in the Rust side to match those definitions. While the semantics of
7859`const` are implemented identically by many C and C++ compilers, e.g., clang,
7860[GCC], [ARM C/C++ compiler], [IBM ILE C/C++], etc. they are not necessarily
7861implemented in this way on all of them. It is therefore also worth verifying
7862that the semantics of the C toolchain used to compile the binary being linked
7863against are compatible with those of the `#[ffi_const]`.
7864
7865[#58328]: https://github.com/rust-lang/rust/issues/58328
7866[ARM C/C++ compiler]: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0491c/Cacgigch.html
7867[GCC]: https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-const-function-attribute
7868[IBM ILE C/C++]: https://www.ibm.com/support/knowledgecenter/fr/ssw_ibm_i_71/rzarg/fn_attrib_const.htm
7869"##,
7870        default_severity: Severity::Allow,
7871        warn_since: None,
7872        deny_since: None,
7873    },
7874    Lint {
7875        label: "ffi_pure",
7876        description: r##"# `ffi_pure`
7877
7878The tracking issue for this feature is: [#58329]
7879
7880------
7881
7882The `#[ffi_pure]` attribute applies clang's `pure` attribute to foreign
7883functions declarations.
7884
7885That is, `#[ffi_pure]` functions shall have no effects except for its return
7886value, which shall not change across two consecutive function calls with
7887the same parameters.
7888
7889Applying the `#[ffi_pure]` attribute to a function that violates these
7890requirements is undefined behavior.
7891
7892This attribute enables Rust to perform common optimizations, like sub-expression
7893elimination and loop optimizations. Some common examples of pure functions are
7894`strlen` or `memcmp`.
7895
7896These optimizations are only applicable when the compiler can prove that no
7897program state observable by the `#[ffi_pure]` function has changed between calls
7898of the function, which could alter the result. See also the `#[ffi_const]`
7899attribute, which provides stronger guarantees regarding the allowable behavior
7900of a function, enabling further optimization.
7901
7902## Pitfalls
7903
7904A `#[ffi_pure]` function can read global memory through the function
7905parameters (e.g. pointers), globals, etc. `#[ffi_pure]` functions are not
7906referentially-transparent, and are therefore more relaxed than `#[ffi_const]`
7907functions.
7908
7909However, accessing global memory through volatile or atomic reads can violate the
7910requirement that two consecutive function calls shall return the same value.
7911
7912A `pure` function that returns unit has no effect on the abstract machine's
7913state.
7914
7915A `#[ffi_pure]` function must not diverge, neither via a side effect (e.g. a
7916call to `abort`) nor by infinite loops.
7917
7918When translating C headers to Rust FFI, it is worth verifying for which targets
7919the `pure` attribute is enabled in those headers, and using the appropriate
7920`cfg` macros in the Rust side to match those definitions. While the semantics of
7921`pure` are implemented identically by many C and C++ compilers, e.g., clang,
7922[GCC], [ARM C/C++ compiler], [IBM ILE C/C++], etc. they are not necessarily
7923implemented in this way on all of them. It is therefore also worth verifying
7924that the semantics of the C toolchain used to compile the binary being linked
7925against are compatible with those of the `#[ffi_pure]`.
7926
7927
7928[#58329]: https://github.com/rust-lang/rust/issues/58329
7929[ARM C/C++ compiler]: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0491c/Cacigdac.html
7930[GCC]: https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-pure-function-attribute
7931[IBM ILE C/C++]: https://www.ibm.com/support/knowledgecenter/fr/ssw_ibm_i_71/rzarg/fn_attrib_pure.htm
7932"##,
7933        default_severity: Severity::Allow,
7934        warn_since: None,
7935        deny_since: None,
7936    },
7937    Lint {
7938        label: "field_projections",
7939        description: r##"# `field_projections`
7940
7941Experimental field projections.
7942
7943The tracking issue for this feature is: [#145383]
7944
7945[#145383]: https://github.com/rust-lang/rust/issues/145383
7946
7947------------------------
7948"##,
7949        default_severity: Severity::Allow,
7950        warn_since: None,
7951        deny_since: None,
7952    },
7953    Lint {
7954        label: "field_representing_type_raw",
7955        description: r##"# `field_representing_type_raw`
7956
7957Implementation details of field representing types.
7958
7959This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
7960
7961------------------------
7962"##,
7963        default_severity: Severity::Allow,
7964        warn_since: None,
7965        deny_since: None,
7966    },
7967    Lint {
7968        label: "file_buffered",
7969        description: r##"# `file_buffered`
7970
7971
7972
7973The tracking issue for this feature is: [#130804]
7974
7975[#130804]: https://github.com/rust-lang/rust/issues/130804
7976
7977------------------------
7978"##,
7979        default_severity: Severity::Allow,
7980        warn_since: None,
7981        deny_since: None,
7982    },
7983    Lint {
7984        label: "final_associated_functions",
7985        description: r##"# `final_associated_functions`
7986
7987Allows marking trait functions as `final` to prevent overriding impls
7988
7989The tracking issue for this feature is: [#131179]
7990
7991[#131179]: https://github.com/rust-lang/rust/issues/131179
7992
7993------------------------
7994"##,
7995        default_severity: Severity::Allow,
7996        warn_since: None,
7997        deny_since: None,
7998    },
7999    Lint {
8000        label: "float_algebraic",
8001        description: r##"# `float_algebraic`
8002
8003
8004
8005The tracking issue for this feature is: [#136469]
8006
8007[#136469]: https://github.com/rust-lang/rust/issues/136469
8008
8009------------------------
8010"##,
8011        default_severity: Severity::Allow,
8012        warn_since: None,
8013        deny_since: None,
8014    },
8015    Lint {
8016        label: "float_bits_const",
8017        description: r##"# `float_bits_const`
8018
8019
8020
8021The tracking issue for this feature is: [#151073]
8022
8023[#151073]: https://github.com/rust-lang/rust/issues/151073
8024
8025------------------------
8026"##,
8027        default_severity: Severity::Allow,
8028        warn_since: None,
8029        deny_since: None,
8030    },
8031    Lint {
8032        label: "float_erf",
8033        description: r##"# `float_erf`
8034
8035
8036
8037The tracking issue for this feature is: [#136321]
8038
8039[#136321]: https://github.com/rust-lang/rust/issues/136321
8040
8041------------------------
8042"##,
8043        default_severity: Severity::Allow,
8044        warn_since: None,
8045        deny_since: None,
8046    },
8047    Lint {
8048        label: "float_exact_integer_constants",
8049        description: r##"# `float_exact_integer_constants`
8050
8051
8052
8053The tracking issue for this feature is: [#152466]
8054
8055[#152466]: https://github.com/rust-lang/rust/issues/152466
8056
8057------------------------
8058"##,
8059        default_severity: Severity::Allow,
8060        warn_since: None,
8061        deny_since: None,
8062    },
8063    Lint {
8064        label: "float_gamma",
8065        description: r##"# `float_gamma`
8066
8067
8068
8069The tracking issue for this feature is: [#99842]
8070
8071[#99842]: https://github.com/rust-lang/rust/issues/99842
8072
8073------------------------
8074"##,
8075        default_severity: Severity::Allow,
8076        warn_since: None,
8077        deny_since: None,
8078    },
8079    Lint {
8080        label: "float_minimum_maximum",
8081        description: r##"# `float_minimum_maximum`
8082
8083
8084
8085The tracking issue for this feature is: [#91079]
8086
8087[#91079]: https://github.com/rust-lang/rust/issues/91079
8088
8089------------------------
8090"##,
8091        default_severity: Severity::Allow,
8092        warn_since: None,
8093        deny_since: None,
8094    },
8095    Lint {
8096        label: "flt2dec",
8097        description: r##"# `flt2dec`
8098
8099This feature is internal to the Rust compiler and is not intended for general use.
8100
8101------------------------
8102"##,
8103        default_severity: Severity::Allow,
8104        warn_since: None,
8105        deny_since: None,
8106    },
8107    Lint {
8108        label: "fma4_target_feature",
8109        description: r##"# `fma4_target_feature`
8110
8111fma4 target feature on x86.
8112
8113The tracking issue for this feature is: [#155233]
8114
8115[#155233]: https://github.com/rust-lang/rust/issues/155233
8116
8117------------------------
8118"##,
8119        default_severity: Severity::Allow,
8120        warn_since: None,
8121        deny_since: None,
8122    },
8123    Lint {
8124        label: "fmt_arguments_from_str",
8125        description: r##"# `fmt_arguments_from_str`
8126
8127
8128
8129The tracking issue for this feature is: [#148905]
8130
8131[#148905]: https://github.com/rust-lang/rust/issues/148905
8132
8133------------------------
8134"##,
8135        default_severity: Severity::Allow,
8136        warn_since: None,
8137        deny_since: None,
8138    },
8139    Lint {
8140        label: "fmt_debug",
8141        description: r##"# `fmt_debug`
8142
8143Controlling the behavior of fmt::Debug
8144
8145The tracking issue for this feature is: [#129709]
8146
8147[#129709]: https://github.com/rust-lang/rust/issues/129709
8148
8149------------------------
8150"##,
8151        default_severity: Severity::Allow,
8152        warn_since: None,
8153        deny_since: None,
8154    },
8155    Lint {
8156        label: "fmt_helpers_for_derive",
8157        description: r##"# `fmt_helpers_for_derive`
8158
8159
8160
8161This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
8162
8163------------------------
8164"##,
8165        default_severity: Severity::Allow,
8166        warn_since: None,
8167        deny_since: None,
8168    },
8169    Lint {
8170        label: "fmt_internals",
8171        description: r##"# `fmt_internals`
8172
8173This feature is internal to the Rust compiler and is not intended for general use.
8174
8175------------------------
8176"##,
8177        default_severity: Severity::Allow,
8178        warn_since: None,
8179        deny_since: None,
8180    },
8181    Lint {
8182        label: "fn_align",
8183        description: r##"# `fn_align`
8184
8185Allows using `#[align(...)]` on function items
8186
8187The tracking issue for this feature is: [#82232]
8188
8189[#82232]: https://github.com/rust-lang/rust/issues/82232
8190
8191------------------------
8192"##,
8193        default_severity: Severity::Allow,
8194        warn_since: None,
8195        deny_since: None,
8196    },
8197    Lint {
8198        label: "fn_delegation",
8199        description: r##"# `fn_delegation`
8200
8201Support delegating implementation of functions to other already implemented functions.
8202
8203The tracking issue for this feature is: [#118212]
8204
8205[#118212]: https://github.com/rust-lang/rust/issues/118212
8206
8207------------------------
8208"##,
8209        default_severity: Severity::Allow,
8210        warn_since: None,
8211        deny_since: None,
8212    },
8213    Lint {
8214        label: "fn_ptr_trait",
8215        description: r##"# `fn_ptr_trait`
8216
8217
8218
8219This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
8220
8221------------------------
8222"##,
8223        default_severity: Severity::Allow,
8224        warn_since: None,
8225        deny_since: None,
8226    },
8227    Lint {
8228        label: "fn_traits",
8229        description: r##"# `fn_traits`
8230
8231The tracking issue for this feature is [#29625]
8232
8233See Also: [`unboxed_closures`](../language-features/unboxed-closures.md)
8234
8235[#29625]: https://github.com/rust-lang/rust/issues/29625
8236
8237----
8238
8239The `fn_traits` feature allows for implementation of the [`Fn*`] traits
8240for creating custom closure-like types.
8241
8242[`Fn*`]: ../../std/ops/trait.Fn.html
8243
8244```rust
8245#![feature(unboxed_closures)]
8246#![feature(fn_traits)]
8247
8248struct Adder {
8249    a: u32
8250}
8251
8252impl FnOnce<(u32, )> for Adder {
8253    type Output = u32;
8254    extern "rust-call" fn call_once(self, b: (u32, )) -> Self::Output {
8255        self.a + b.0
8256    }
8257}
8258
8259fn main() {
8260    let adder = Adder { a: 3 };
8261    assert_eq!(adder(2), 5);
8262}
8263```
8264"##,
8265        default_severity: Severity::Allow,
8266        warn_since: None,
8267        deny_since: None,
8268    },
8269    Lint {
8270        label: "forget_unsized",
8271        description: r##"# `forget_unsized`
8272
8273
8274
8275This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
8276
8277------------------------
8278"##,
8279        default_severity: Severity::Allow,
8280        warn_since: None,
8281        deny_since: None,
8282    },
8283    Lint {
8284        label: "format_args_nl",
8285        description: r##"# `format_args_nl`
8286
8287
8288
8289This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
8290
8291------------------------
8292"##,
8293        default_severity: Severity::Allow,
8294        warn_since: None,
8295        deny_since: None,
8296    },
8297    Lint {
8298        label: "formatting_options",
8299        description: r##"# `formatting_options`
8300
8301
8302
8303The tracking issue for this feature is: [#118117]
8304
8305[#118117]: https://github.com/rust-lang/rust/issues/118117
8306
8307------------------------
8308"##,
8309        default_severity: Severity::Allow,
8310        warn_since: None,
8311        deny_since: None,
8312    },
8313    Lint {
8314        label: "freeze",
8315        description: r##"# `freeze`
8316
8317
8318
8319The tracking issue for this feature is: [#121675]
8320
8321[#121675]: https://github.com/rust-lang/rust/issues/121675
8322
8323------------------------
8324"##,
8325        default_severity: Severity::Allow,
8326        warn_since: None,
8327        deny_since: None,
8328    },
8329    Lint {
8330        label: "freeze_impls",
8331        description: r##"# `freeze_impls`
8332
8333Allows impls for the Freeze trait.
8334
8335The tracking issue for this feature is: [#121675]
8336
8337[#121675]: https://github.com/rust-lang/rust/issues/121675
8338
8339------------------------
8340"##,
8341        default_severity: Severity::Allow,
8342        warn_since: None,
8343        deny_since: None,
8344    },
8345    Lint {
8346        label: "frontmatter",
8347        description: r##"# `frontmatter`
8348
8349The tracking issue for this feature is: [#136889]
8350
8351------
8352
8353The `frontmatter` feature allows an extra metadata block at the top of files for consumption by
8354external tools. For example, it can be used by [`cargo-script`] files to specify dependencies.
8355
8356```rust
8357#!/usr/bin/env -S cargo -Zscript
8358---
8359[dependencies]
8360libc = "0.2.172"
8361---
8362#![feature(frontmatter)]
8363# mod libc { pub type c_int = i32; }
8364
8365fn main() {
8366    let x: libc::c_int = 1i32;
8367}
8368```
8369
8370[#136889]: https://github.com/rust-lang/rust/issues/136889
8371[`cargo-script`]: https://rust-lang.github.io/rfcs/3502-cargo-script.html
8372"##,
8373        default_severity: Severity::Allow,
8374        warn_since: None,
8375        deny_since: None,
8376    },
8377    Lint {
8378        label: "fs_set_times",
8379        description: r##"# `fs_set_times`
8380
8381
8382
8383The tracking issue for this feature is: [#147455]
8384
8385[#147455]: https://github.com/rust-lang/rust/issues/147455
8386
8387------------------------
8388"##,
8389        default_severity: Severity::Allow,
8390        warn_since: None,
8391        deny_since: None,
8392    },
8393    Lint {
8394        label: "fundamental",
8395        description: r##"# `fundamental`
8396
8397Allows using the `#[fundamental]` attribute.
8398
8399The tracking issue for this feature is: [#29635]
8400
8401[#29635]: https://github.com/rust-lang/rust/issues/29635
8402
8403------------------------
8404"##,
8405        default_severity: Severity::Allow,
8406        warn_since: None,
8407        deny_since: None,
8408    },
8409    Lint {
8410        label: "funnel_shifts",
8411        description: r##"# `funnel_shifts`
8412
8413
8414
8415The tracking issue for this feature is: [#145686]
8416
8417[#145686]: https://github.com/rust-lang/rust/issues/145686
8418
8419------------------------
8420"##,
8421        default_severity: Severity::Allow,
8422        warn_since: None,
8423        deny_since: None,
8424    },
8425    Lint {
8426        label: "future_join",
8427        description: r##"# `future_join`
8428
8429
8430
8431The tracking issue for this feature is: [#91642]
8432
8433[#91642]: https://github.com/rust-lang/rust/issues/91642
8434
8435------------------------
8436"##,
8437        default_severity: Severity::Allow,
8438        warn_since: None,
8439        deny_since: None,
8440    },
8441    Lint {
8442        label: "gen_blocks",
8443        description: r##"# `gen_blocks`
8444
8445Allows defining gen blocks and `gen fn`.
8446
8447The tracking issue for this feature is: [#117078]
8448
8449[#117078]: https://github.com/rust-lang/rust/issues/117078
8450
8451------------------------
8452"##,
8453        default_severity: Severity::Allow,
8454        warn_since: None,
8455        deny_since: None,
8456    },
8457    Lint {
8458        label: "gen_future",
8459        description: r##"# `gen_future`
8460
8461
8462
8463This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
8464
8465------------------------
8466"##,
8467        default_severity: Severity::Allow,
8468        warn_since: None,
8469        deny_since: None,
8470    },
8471    Lint {
8472        label: "generic_assert",
8473        description: r##"# `generic_assert`
8474
8475Outputs useful `assert!` messages
8476
8477This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
8478
8479------------------------
8480"##,
8481        default_severity: Severity::Allow,
8482        warn_since: None,
8483        deny_since: None,
8484    },
8485    Lint {
8486        label: "generic_assert_internals",
8487        description: r##"# `generic_assert_internals`
8488
8489
8490
8491The tracking issue for this feature is: [#44838]
8492
8493[#44838]: https://github.com/rust-lang/rust/issues/44838
8494
8495------------------------
8496"##,
8497        default_severity: Severity::Allow,
8498        warn_since: None,
8499        deny_since: None,
8500    },
8501    Lint {
8502        label: "generic_atomic",
8503        description: r##"# `generic_atomic`
8504
8505
8506
8507The tracking issue for this feature is: [#130539]
8508
8509[#130539]: https://github.com/rust-lang/rust/issues/130539
8510
8511------------------------
8512"##,
8513        default_severity: Severity::Allow,
8514        warn_since: None,
8515        deny_since: None,
8516    },
8517    Lint {
8518        label: "generic_const_args",
8519        description: r##"# `generic_const_args`
8520
8521Allows using generics in more complex const expressions, based on definitional equality.
8522
8523The tracking issue for this feature is: [#151972]
8524
8525[#151972]: https://github.com/rust-lang/rust/issues/151972
8526
8527------------------------
8528"##,
8529        default_severity: Severity::Allow,
8530        warn_since: None,
8531        deny_since: None,
8532    },
8533    Lint {
8534        label: "generic_const_exprs",
8535        description: r##"# `generic_const_exprs`
8536
8537Allows non-trivial generic constants which have to have wfness manually propagated to callers
8538
8539The tracking issue for this feature is: [#76560]
8540
8541[#76560]: https://github.com/rust-lang/rust/issues/76560
8542
8543------------------------
8544"##,
8545        default_severity: Severity::Allow,
8546        warn_since: None,
8547        deny_since: None,
8548    },
8549    Lint {
8550        label: "generic_const_items",
8551        description: r##"# `generic_const_items`
8552
8553Allows generic parameters and where-clauses on free & associated const items.
8554
8555The tracking issue for this feature is: [#113521]
8556
8557[#113521]: https://github.com/rust-lang/rust/issues/113521
8558
8559------------------------
8560"##,
8561        default_severity: Severity::Allow,
8562        warn_since: None,
8563        deny_since: None,
8564    },
8565    Lint {
8566        label: "generic_const_parameter_types",
8567        description: r##"# `generic_const_parameter_types`
8568
8569Allows the type of const generics to depend on generic parameters
8570
8571The tracking issue for this feature is: [#137626]
8572
8573[#137626]: https://github.com/rust-lang/rust/issues/137626
8574
8575------------------------
8576"##,
8577        default_severity: Severity::Allow,
8578        warn_since: None,
8579        deny_since: None,
8580    },
8581    Lint {
8582        label: "generic_pattern_types",
8583        description: r##"# `generic_pattern_types`
8584
8585Allows any generic constants being used as pattern type range ends
8586
8587The tracking issue for this feature is: [#136574]
8588
8589[#136574]: https://github.com/rust-lang/rust/issues/136574
8590
8591------------------------
8592"##,
8593        default_severity: Severity::Allow,
8594        warn_since: None,
8595        deny_since: None,
8596    },
8597    Lint {
8598        label: "get_disjoint_mut_helpers",
8599        description: r##"# `get_disjoint_mut_helpers`
8600
8601
8602
8603This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
8604
8605------------------------
8606"##,
8607        default_severity: Severity::Allow,
8608        warn_since: None,
8609        deny_since: None,
8610    },
8611    Lint {
8612        label: "get_mut_unchecked",
8613        description: r##"# `get_mut_unchecked`
8614
8615
8616
8617The tracking issue for this feature is: [#63292]
8618
8619[#63292]: https://github.com/rust-lang/rust/issues/63292
8620
8621------------------------
8622"##,
8623        default_severity: Severity::Allow,
8624        warn_since: None,
8625        deny_since: None,
8626    },
8627    Lint {
8628        label: "gethostname",
8629        description: r##"# `gethostname`
8630
8631
8632
8633The tracking issue for this feature is: [#135142]
8634
8635[#135142]: https://github.com/rust-lang/rust/issues/135142
8636
8637------------------------
8638"##,
8639        default_severity: Severity::Allow,
8640        warn_since: None,
8641        deny_since: None,
8642    },
8643    Lint {
8644        label: "global_registration",
8645        description: r##"# `global_registration`
8646
8647Allows registering static items globally, possibly across crates, to iterate over at runtime.
8648
8649The tracking issue for this feature is: [#125119]
8650
8651[#125119]: https://github.com/rust-lang/rust/issues/125119
8652
8653------------------------
8654"##,
8655        default_severity: Severity::Allow,
8656        warn_since: None,
8657        deny_since: None,
8658    },
8659    Lint {
8660        label: "gpu_intrinsics",
8661        description: r##"# `gpu_intrinsics`
8662
8663
8664
8665This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
8666
8667------------------------
8668"##,
8669        default_severity: Severity::Allow,
8670        warn_since: None,
8671        deny_since: None,
8672    },
8673    Lint {
8674        label: "guard_patterns",
8675        description: r##"# `guard_patterns`
8676
8677Allows using guards in patterns.
8678
8679The tracking issue for this feature is: [#129967]
8680
8681[#129967]: https://github.com/rust-lang/rust/issues/129967
8682
8683------------------------
8684"##,
8685        default_severity: Severity::Allow,
8686        warn_since: None,
8687        deny_since: None,
8688    },
8689    Lint {
8690        label: "half_open_range_patterns_in_slices",
8691        description: r##"# `half_open_range_patterns_in_slices`
8692
8693The tracking issue for this feature is: [#67264]
8694It is a future part of the `exclusive_range_pattern` feature,
8695tracked at [#37854].
8696
8697[#67264]: https://github.com/rust-lang/rust/issues/67264
8698[#37854]: https://github.com/rust-lang/rust/issues/37854
8699-----
8700
8701This feature allow using top-level half-open range patterns in slices.
8702
8703```rust
8704#![feature(half_open_range_patterns_in_slices)]
8705
8706fn main() {
8707    let xs = [13, 1, 5, 2, 3, 1, 21, 8];
8708    let [a @ 3.., b @ ..3, c @ 4..6, ..] = xs else { return; };
8709}
8710```
8711
8712Note that this feature is not required if the patterns are wrapped between parenthesis.
8713
8714```rust
8715fn main() {
8716    let xs = [13, 1];
8717    let [(a @ 3..), c] = xs else { return; };
8718}
8719```
8720"##,
8721        default_severity: Severity::Allow,
8722        warn_since: None,
8723        deny_since: None,
8724    },
8725    Lint {
8726        label: "hash_map_internals",
8727        description: r##"# `hash_map_internals`
8728
8729
8730
8731This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
8732
8733------------------------
8734"##,
8735        default_severity: Severity::Allow,
8736        warn_since: None,
8737        deny_since: None,
8738    },
8739    Lint {
8740        label: "hash_map_macro",
8741        description: r##"# `hash_map_macro`
8742
8743
8744
8745The tracking issue for this feature is: [#144032]
8746
8747[#144032]: https://github.com/rust-lang/rust/issues/144032
8748
8749------------------------
8750"##,
8751        default_severity: Severity::Allow,
8752        warn_since: None,
8753        deny_since: None,
8754    },
8755    Lint {
8756        label: "hash_set_entry",
8757        description: r##"# `hash_set_entry`
8758
8759
8760
8761The tracking issue for this feature is: [#60896]
8762
8763[#60896]: https://github.com/rust-lang/rust/issues/60896
8764
8765------------------------
8766"##,
8767        default_severity: Severity::Allow,
8768        warn_since: None,
8769        deny_since: None,
8770    },
8771    Lint {
8772        label: "hasher_prefixfree_extras",
8773        description: r##"# `hasher_prefixfree_extras`
8774
8775
8776
8777The tracking issue for this feature is: [#96762]
8778
8779[#96762]: https://github.com/rust-lang/rust/issues/96762
8780
8781------------------------
8782"##,
8783        default_severity: Severity::Allow,
8784        warn_since: None,
8785        deny_since: None,
8786    },
8787    Lint {
8788        label: "hashmap_internals",
8789        description: r##"# `hashmap_internals`
8790
8791
8792
8793This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
8794
8795------------------------
8796"##,
8797        default_severity: Severity::Allow,
8798        warn_since: None,
8799        deny_since: None,
8800    },
8801    Lint {
8802        label: "hexagon_target_feature",
8803        description: r##"# `hexagon_target_feature`
8804
8805Target features on hexagon.
8806
8807The tracking issue for this feature is: [#150250]
8808
8809[#150250]: https://github.com/rust-lang/rust/issues/150250
8810
8811------------------------
8812"##,
8813        default_severity: Severity::Allow,
8814        warn_since: None,
8815        deny_since: None,
8816    },
8817    Lint {
8818        label: "hint_must_use",
8819        description: r##"# `hint_must_use`
8820
8821
8822
8823The tracking issue for this feature is: [#94745]
8824
8825[#94745]: https://github.com/rust-lang/rust/issues/94745
8826
8827------------------------
8828"##,
8829        default_severity: Severity::Allow,
8830        warn_since: None,
8831        deny_since: None,
8832    },
8833    Lint {
8834        label: "hint_prefetch",
8835        description: r##"# `hint_prefetch`
8836
8837
8838
8839The tracking issue for this feature is: [#146941]
8840
8841[#146941]: https://github.com/rust-lang/rust/issues/146941
8842
8843------------------------
8844"##,
8845        default_severity: Severity::Allow,
8846        warn_since: None,
8847        deny_since: None,
8848    },
8849    Lint {
8850        label: "impl_restriction",
8851        description: r##"# `impl_restriction`
8852
8853Allows `impl(crate) trait Foo` restrictions.
8854
8855The tracking issue for this feature is: [#105077]
8856
8857[#105077]: https://github.com/rust-lang/rust/issues/105077
8858
8859------------------------
8860"##,
8861        default_severity: Severity::Allow,
8862        warn_since: None,
8863        deny_since: None,
8864    },
8865    Lint {
8866        label: "impl_trait_in_assoc_type",
8867        description: r##"# `impl_trait_in_assoc_type`
8868
8869Allows `impl Trait` to be used inside associated types (RFC 2515).
8870
8871The tracking issue for this feature is: [#63063]
8872
8873[#63063]: https://github.com/rust-lang/rust/issues/63063
8874
8875------------------------
8876"##,
8877        default_severity: Severity::Allow,
8878        warn_since: None,
8879        deny_since: None,
8880    },
8881    Lint {
8882        label: "impl_trait_in_bindings",
8883        description: r##"# `impl_trait_in_bindings`
8884
8885Allows `impl Trait` in bindings (`let`).
8886
8887The tracking issue for this feature is: [#63065]
8888
8889[#63065]: https://github.com/rust-lang/rust/issues/63065
8890
8891------------------------
8892"##,
8893        default_severity: Severity::Allow,
8894        warn_since: None,
8895        deny_since: None,
8896    },
8897    Lint {
8898        label: "impl_trait_in_fn_trait_return",
8899        description: r##"# `impl_trait_in_fn_trait_return`
8900
8901Allows `impl Trait` as output type in `Fn` traits in return position of functions.
8902
8903The tracking issue for this feature is: [#99697]
8904
8905[#99697]: https://github.com/rust-lang/rust/issues/99697
8906
8907------------------------
8908"##,
8909        default_severity: Severity::Allow,
8910        warn_since: None,
8911        deny_since: None,
8912    },
8913    Lint {
8914        label: "import_trait_associated_functions",
8915        description: r##"# import_trait_associated_functions
8916
8917The tracking issue for this feature is: [#134691]
8918
8919[#134691]: https://github.com/rust-lang/rust/issues/134691
8920
8921------------------------
8922
8923This feature allows importing associated functions and constants from traits and then using them like regular items.
8924
8925```rust
8926#![feature(import_trait_associated_functions)]
8927
8928use std::ops::Add::add;
8929
8930fn main() {
8931    let numbers = vec![1, 2, 3, 4, 5, 6];
8932    let sum = numbers.into_iter().reduce(add); // instead of `.reduce(Add:add)`
8933
8934    assert_eq!(sum, Some(21));
8935}
8936```
8937"##,
8938        default_severity: Severity::Allow,
8939        warn_since: None,
8940        deny_since: None,
8941    },
8942    Lint {
8943        label: "inherent_associated_types",
8944        description: r##"# `inherent_associated_types`
8945
8946Allows associated types in inherent impls.
8947
8948The tracking issue for this feature is: [#8995]
8949
8950[#8995]: https://github.com/rust-lang/rust/issues/8995
8951
8952------------------------
8953"##,
8954        default_severity: Severity::Allow,
8955        warn_since: None,
8956        deny_since: None,
8957    },
8958    Lint {
8959        label: "inplace_iteration",
8960        description: r##"# `inplace_iteration`
8961
8962
8963
8964This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
8965
8966------------------------
8967"##,
8968        default_severity: Severity::Allow,
8969        warn_since: None,
8970        deny_since: None,
8971    },
8972    Lint {
8973        label: "int_format_into",
8974        description: r##"# `int_format_into`
8975
8976
8977
8978The tracking issue for this feature is: [#138215]
8979
8980[#138215]: https://github.com/rust-lang/rust/issues/138215
8981
8982------------------------
8983"##,
8984        default_severity: Severity::Allow,
8985        warn_since: None,
8986        deny_since: None,
8987    },
8988    Lint {
8989        label: "int_from_ascii",
8990        description: r##"# `int_from_ascii`
8991
8992
8993
8994The tracking issue for this feature is: [#134821]
8995
8996[#134821]: https://github.com/rust-lang/rust/issues/134821
8997
8998------------------------
8999"##,
9000        default_severity: Severity::Allow,
9001        warn_since: None,
9002        deny_since: None,
9003    },
9004    Lint {
9005        label: "int_roundings",
9006        description: r##"# `int_roundings`
9007
9008
9009
9010The tracking issue for this feature is: [#88581]
9011
9012[#88581]: https://github.com/rust-lang/rust/issues/88581
9013
9014------------------------
9015"##,
9016        default_severity: Severity::Allow,
9017        warn_since: None,
9018        deny_since: None,
9019    },
9020    Lint {
9021        label: "integer_atomics",
9022        description: r##"# `integer_atomics`
9023
9024
9025
9026The tracking issue for this feature is: [#99069]
9027
9028[#99069]: https://github.com/rust-lang/rust/issues/99069
9029
9030------------------------
9031"##,
9032        default_severity: Severity::Allow,
9033        warn_since: None,
9034        deny_since: None,
9035    },
9036    Lint {
9037        label: "integer_extend_truncate",
9038        description: r##"# `integer_extend_truncate`
9039
9040
9041
9042The tracking issue for this feature is: [#154330]
9043
9044[#154330]: https://github.com/rust-lang/rust/issues/154330
9045
9046------------------------
9047"##,
9048        default_severity: Severity::Allow,
9049        warn_since: None,
9050        deny_since: None,
9051    },
9052    Lint {
9053        label: "internal_output_capture",
9054        description: r##"# `internal_output_capture`
9055
9056This feature is internal to the Rust compiler and is not intended for general use.
9057
9058------------------------
9059"##,
9060        default_severity: Severity::Allow,
9061        warn_since: None,
9062        deny_since: None,
9063    },
9064    Lint {
9065        label: "intra_doc_pointers",
9066        description: r##"# `intra-doc-pointers`
9067
9068The tracking issue for this feature is: [#80896]
9069
9070[#80896]: https://github.com/rust-lang/rust/issues/80896
9071
9072------------------------
9073
9074Rustdoc does not currently allow disambiguating between `*const` and `*mut`, and
9075raw pointers in intra-doc links are unstable until it does.
9076
9077```rust
9078#![feature(intra_doc_pointers)]
9079//! [pointer::add]
9080```
9081"##,
9082        default_severity: Severity::Allow,
9083        warn_since: None,
9084        deny_since: None,
9085    },
9086    Lint {
9087        label: "intrinsics",
9088        description: r##"# `intrinsics`
9089
9090The tracking issue for this feature is: None.
9091
9092Intrinsics are rarely intended to be stable directly, but are usually
9093exported in some sort of stable manner. Prefer using the stable interfaces to
9094the intrinsic directly when you can.
9095
9096------------------------
9097
9098
9099## Intrinsics with fallback logic
9100
9101Many intrinsics can be written in pure rust, albeit inefficiently or without supporting
9102some features that only exist on some backends. Backends can simply not implement those
9103intrinsics without causing any code miscompilations or failures to compile.
9104All intrinsic fallback bodies are automatically made cross-crate inlineable (like `#[inline]`)
9105by the codegen backend, but not the MIR inliner.
9106
9107```rust
9108#![feature(intrinsics)]
9109#![allow(internal_features)]
9110
9111#[rustc_intrinsic]
9112const unsafe fn const_deallocate(_ptr: *mut u8, _size: usize, _align: usize) {}
9113```
9114
9115Since these are just regular functions, it is perfectly ok to create the intrinsic twice:
9116
9117```rust
9118#![feature(intrinsics)]
9119#![allow(internal_features)]
9120
9121#[rustc_intrinsic]
9122const unsafe fn const_deallocate(_ptr: *mut u8, _size: usize, _align: usize) {}
9123
9124mod foo {
9125    #[rustc_intrinsic]
9126    const unsafe fn const_deallocate(_ptr: *mut u8, _size: usize, _align: usize) {
9127        panic!("noisy const dealloc")
9128    }
9129}
9130
9131```
9132
9133The behaviour on backends that override the intrinsic is exactly the same. On other
9134backends, the intrinsic behaviour depends on which implementation is called, just like
9135with any regular function.
9136
9137## Intrinsics lowered to MIR instructions
9138
9139Various intrinsics have native MIR operations that they correspond to. Instead of requiring
9140backends to implement both the intrinsic and the MIR operation, the `lower_intrinsics` pass
9141will convert the calls to the MIR operation. Backends do not need to know about these intrinsics
9142at all. These intrinsics only make sense without a body, and can be declared as a `#[rustc_intrinsic]`.
9143The body is never used as the lowering pass implements support for all backends, so we never have to
9144use the fallback logic.
9145
9146## Intrinsics without fallback logic
9147
9148These must be implemented by all backends.
9149
9150### `#[rustc_intrinsic]` declarations
9151
9152These are written without a body:
9153```rust
9154#![feature(intrinsics)]
9155#![allow(internal_features)]
9156
9157#[rustc_intrinsic]
9158pub fn abort() -> !;
9159```
9160"##,
9161        default_severity: Severity::Allow,
9162        warn_since: None,
9163        deny_since: None,
9164    },
9165    Lint {
9166        label: "io_const_error",
9167        description: r##"# `io_const_error`
9168
9169
9170
9171The tracking issue for this feature is: [#133448]
9172
9173[#133448]: https://github.com/rust-lang/rust/issues/133448
9174
9175------------------------
9176"##,
9177        default_severity: Severity::Allow,
9178        warn_since: None,
9179        deny_since: None,
9180    },
9181    Lint {
9182        label: "io_const_error_internals",
9183        description: r##"# `io_const_error_internals`
9184
9185
9186
9187This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
9188
9189------------------------
9190"##,
9191        default_severity: Severity::Allow,
9192        warn_since: None,
9193        deny_since: None,
9194    },
9195    Lint {
9196        label: "io_error_inprogress",
9197        description: r##"# `io_error_inprogress`
9198
9199
9200
9201The tracking issue for this feature is: [#130840]
9202
9203[#130840]: https://github.com/rust-lang/rust/issues/130840
9204
9205------------------------
9206"##,
9207        default_severity: Severity::Allow,
9208        warn_since: None,
9209        deny_since: None,
9210    },
9211    Lint {
9212        label: "io_error_more",
9213        description: r##"# `io_error_more`
9214
9215
9216
9217The tracking issue for this feature is: [#86442]
9218
9219[#86442]: https://github.com/rust-lang/rust/issues/86442
9220
9221------------------------
9222"##,
9223        default_severity: Severity::Allow,
9224        warn_since: None,
9225        deny_since: None,
9226    },
9227    Lint {
9228        label: "io_error_uncategorized",
9229        description: r##"# `io_error_uncategorized`
9230
9231
9232
9233This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
9234
9235------------------------
9236"##,
9237        default_severity: Severity::Allow,
9238        warn_since: None,
9239        deny_since: None,
9240    },
9241    Lint {
9242        label: "io_slice_as_bytes",
9243        description: r##"# `io_slice_as_bytes`
9244
9245
9246
9247The tracking issue for this feature is: [#132818]
9248
9249[#132818]: https://github.com/rust-lang/rust/issues/132818
9250
9251------------------------
9252"##,
9253        default_severity: Severity::Allow,
9254        warn_since: None,
9255        deny_since: None,
9256    },
9257    Lint {
9258        label: "ip",
9259        description: r##"# `ip`
9260
9261
9262
9263The tracking issue for this feature is: [#27709]
9264
9265[#27709]: https://github.com/rust-lang/rust/issues/27709
9266
9267------------------------
9268"##,
9269        default_severity: Severity::Allow,
9270        warn_since: None,
9271        deny_since: None,
9272    },
9273    Lint {
9274        label: "ip_as_octets",
9275        description: r##"# `ip_as_octets`
9276
9277
9278
9279The tracking issue for this feature is: [#137259]
9280
9281[#137259]: https://github.com/rust-lang/rust/issues/137259
9282
9283------------------------
9284"##,
9285        default_severity: Severity::Allow,
9286        warn_since: None,
9287        deny_since: None,
9288    },
9289    Lint {
9290        label: "ip_multicast_reserved",
9291        description: r##"# `ip_multicast_reserved`
9292
9293
9294
9295This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
9296
9297------------------------
9298"##,
9299        default_severity: Severity::Allow,
9300        warn_since: None,
9301        deny_since: None,
9302    },
9303    Lint {
9304        label: "is_ascii_octdigit",
9305        description: r##"# `is_ascii_octdigit`
9306
9307
9308
9309The tracking issue for this feature is: [#101288]
9310
9311[#101288]: https://github.com/rust-lang/rust/issues/101288
9312
9313------------------------
9314"##,
9315        default_severity: Severity::Allow,
9316        warn_since: None,
9317        deny_since: None,
9318    },
9319    Lint {
9320        label: "is_loongarch_feature_detected",
9321        description: r##"# `is_loongarch_feature_detected`
9322
9323
9324
9325The tracking issue for this feature is: [#117425]
9326
9327[#117425]: https://github.com/rust-lang/rust/issues/117425
9328
9329------------------------
9330"##,
9331        default_severity: Severity::Allow,
9332        warn_since: None,
9333        deny_since: None,
9334    },
9335    Lint {
9336        label: "is_riscv_feature_detected",
9337        description: r##"# `is_riscv_feature_detected`
9338
9339
9340
9341The tracking issue for this feature is: [#111192]
9342
9343[#111192]: https://github.com/rust-lang/rust/issues/111192
9344
9345------------------------
9346"##,
9347        default_severity: Severity::Allow,
9348        warn_since: None,
9349        deny_since: None,
9350    },
9351    Lint {
9352        label: "iter_advance_by",
9353        description: r##"# `iter_advance_by`
9354
9355
9356
9357The tracking issue for this feature is: [#77404]
9358
9359[#77404]: https://github.com/rust-lang/rust/issues/77404
9360
9361------------------------
9362"##,
9363        default_severity: Severity::Allow,
9364        warn_since: None,
9365        deny_since: None,
9366    },
9367    Lint {
9368        label: "iter_array_chunks",
9369        description: r##"# `iter_array_chunks`
9370
9371
9372
9373The tracking issue for this feature is: [#100450]
9374
9375[#100450]: https://github.com/rust-lang/rust/issues/100450
9376
9377------------------------
9378"##,
9379        default_severity: Severity::Allow,
9380        warn_since: None,
9381        deny_since: None,
9382    },
9383    Lint {
9384        label: "iter_collect_into",
9385        description: r##"# `iter_collect_into`
9386
9387
9388
9389The tracking issue for this feature is: [#94780]
9390
9391[#94780]: https://github.com/rust-lang/rust/issues/94780
9392
9393------------------------
9394"##,
9395        default_severity: Severity::Allow,
9396        warn_since: None,
9397        deny_since: None,
9398    },
9399    Lint {
9400        label: "iter_from_coroutine",
9401        description: r##"# `iter_from_coroutine`
9402
9403
9404
9405The tracking issue for this feature is: [#43122]
9406
9407[#43122]: https://github.com/rust-lang/rust/issues/43122
9408
9409------------------------
9410"##,
9411        default_severity: Severity::Allow,
9412        warn_since: None,
9413        deny_since: None,
9414    },
9415    Lint {
9416        label: "iter_intersperse",
9417        description: r##"# `iter_intersperse`
9418
9419
9420
9421The tracking issue for this feature is: [#79524]
9422
9423[#79524]: https://github.com/rust-lang/rust/issues/79524
9424
9425------------------------
9426"##,
9427        default_severity: Severity::Allow,
9428        warn_since: None,
9429        deny_since: None,
9430    },
9431    Lint {
9432        label: "iter_is_partitioned",
9433        description: r##"# `iter_is_partitioned`
9434
9435
9436
9437The tracking issue for this feature is: [#62544]
9438
9439[#62544]: https://github.com/rust-lang/rust/issues/62544
9440
9441------------------------
9442"##,
9443        default_severity: Severity::Allow,
9444        warn_since: None,
9445        deny_since: None,
9446    },
9447    Lint {
9448        label: "iter_macro",
9449        description: r##"# `iter_macro`
9450
9451
9452
9453The tracking issue for this feature is: [#142269]
9454
9455[#142269]: https://github.com/rust-lang/rust/issues/142269
9456
9457------------------------
9458"##,
9459        default_severity: Severity::Allow,
9460        warn_since: None,
9461        deny_since: None,
9462    },
9463    Lint {
9464        label: "iter_map_windows",
9465        description: r##"# `iter_map_windows`
9466
9467
9468
9469The tracking issue for this feature is: [#87155]
9470
9471[#87155]: https://github.com/rust-lang/rust/issues/87155
9472
9473------------------------
9474"##,
9475        default_severity: Severity::Allow,
9476        warn_since: None,
9477        deny_since: None,
9478    },
9479    Lint {
9480        label: "iter_next_chunk",
9481        description: r##"# `iter_next_chunk`
9482
9483
9484
9485The tracking issue for this feature is: [#98326]
9486
9487[#98326]: https://github.com/rust-lang/rust/issues/98326
9488
9489------------------------
9490"##,
9491        default_severity: Severity::Allow,
9492        warn_since: None,
9493        deny_since: None,
9494    },
9495    Lint {
9496        label: "iter_order_by",
9497        description: r##"# `iter_order_by`
9498
9499
9500
9501The tracking issue for this feature is: [#64295]
9502
9503[#64295]: https://github.com/rust-lang/rust/issues/64295
9504
9505------------------------
9506"##,
9507        default_severity: Severity::Allow,
9508        warn_since: None,
9509        deny_since: None,
9510    },
9511    Lint {
9512        label: "iter_partition_in_place",
9513        description: r##"# `iter_partition_in_place`
9514
9515
9516
9517The tracking issue for this feature is: [#62543]
9518
9519[#62543]: https://github.com/rust-lang/rust/issues/62543
9520
9521------------------------
9522"##,
9523        default_severity: Severity::Allow,
9524        warn_since: None,
9525        deny_since: None,
9526    },
9527    Lint {
9528        label: "iterator_try_collect",
9529        description: r##"# `iterator_try_collect`
9530
9531
9532
9533The tracking issue for this feature is: [#94047]
9534
9535[#94047]: https://github.com/rust-lang/rust/issues/94047
9536
9537------------------------
9538"##,
9539        default_severity: Severity::Allow,
9540        warn_since: None,
9541        deny_since: None,
9542    },
9543    Lint {
9544        label: "iterator_try_reduce",
9545        description: r##"# `iterator_try_reduce`
9546
9547
9548
9549The tracking issue for this feature is: [#87053]
9550
9551[#87053]: https://github.com/rust-lang/rust/issues/87053
9552
9553------------------------
9554"##,
9555        default_severity: Severity::Allow,
9556        warn_since: None,
9557        deny_since: None,
9558    },
9559    Lint {
9560        label: "junction_point",
9561        description: r##"# `junction_point`
9562
9563
9564
9565The tracking issue for this feature is: [#121709]
9566
9567[#121709]: https://github.com/rust-lang/rust/issues/121709
9568
9569------------------------
9570"##,
9571        default_severity: Severity::Allow,
9572        warn_since: None,
9573        deny_since: None,
9574    },
9575    Lint {
9576        label: "lahfsahf_target_feature",
9577        description: r##"# `lahfsahf_target_feature`
9578
9579lahfsahf target feature on x86.
9580
9581The tracking issue for this feature is: [#150251]
9582
9583[#150251]: https://github.com/rust-lang/rust/issues/150251
9584
9585------------------------
9586"##,
9587        default_severity: Severity::Allow,
9588        warn_since: None,
9589        deny_since: None,
9590    },
9591    Lint {
9592        label: "lang_items",
9593        description: r##"# `lang_items`
9594
9595The tracking issue for this feature is: None.
9596
9597------------------------
9598
9599The `rustc` compiler has certain pluggable operations, that is,
9600functionality that isn't hard-coded into the language, but is
9601implemented in libraries, with a special marker to tell the compiler
9602it exists. The marker is the attribute `#[lang = "..."]` and there are
9603various different values of `...`, i.e. various different 'lang
9604items'. Most of them can only be defined once.
9605
9606Lang items are loaded lazily by the compiler; e.g. if one never uses `Box`
9607then there is no need to define a function for `exchange_malloc`.
9608`rustc` will emit an error when an item is needed but not found in the current
9609crate or any that it depends on.
9610
9611Some features provided by lang items:
9612
9613- overloadable operators via traits: the traits corresponding to the
9614  `==`, `<`, dereferencing (`*`) and `+` (etc.) operators are all
9615  marked with lang items; those specific four are `eq`, `partial_ord`,
9616  `deref`/`deref_mut`, and `add` respectively.
9617- panicking: the `panic` and `panic_impl` lang items, among others.
9618- stack unwinding: the lang item `eh_personality` is a function used by the
9619  failure mechanisms of the compiler. This is often mapped to GCC's personality
9620  function (see the [`std` implementation][personality] for more information),
9621  but programs which don't trigger a panic can be assured that this function is
9622  never called. Additionally, a `eh_catch_typeinfo` static is needed for certain
9623  targets which implement Rust panics on top of C++ exceptions.
9624- the traits in `core::marker` used to indicate types of
9625  various kinds; e.g. lang items `sized`, `sync` and `copy`.
9626- memory allocation, see below.
9627
9628Most lang items are defined by `core`, but if you're trying to build
9629an executable without the `std` crate, you might run into the need
9630for lang item definitions.
9631
9632[personality]: https://github.com/rust-lang/rust/blob/HEAD/library/std/src/sys/personality/gcc.rs
9633
9634## Example: Implementing a `Box`
9635
9636`Box` pointers require two lang items: one for the type itself and one for
9637allocation. A freestanding program that uses the `Box` sugar for dynamic
9638allocations via `malloc` and `free`:
9639
9640```rust,ignore (libc-is-finicky)
9641#![feature(lang_items, core_intrinsics, rustc_private, panic_unwind, rustc_attrs)]
9642#![allow(internal_features)]
9643#![no_std]
9644#![no_main]
9645
9646extern crate libc;
9647extern crate unwind;
9648
9649use core::ffi::{c_int, c_void};
9650use core::intrinsics;
9651use core::panic::PanicInfo;
9652use core::ptr::NonNull;
9653
9654pub struct Global; // the global allocator
9655struct Unique<T>(NonNull<T>);
9656
9657#[lang = "owned_box"]
9658pub struct Box<T, A = Global>(Unique<T>, A);
9659
9660impl<T> Box<T> {
9661    pub fn new(x: T) -> Self {
9662        #[rustc_box]
9663        Box::new(x)
9664    }
9665}
9666
9667impl<T, A> Drop for Box<T, A> {
9668    fn drop(&mut self) {
9669        unsafe {
9670            libc::free(self.0.0.as_ptr() as *mut c_void);
9671        }
9672    }
9673}
9674
9675#[lang = "exchange_malloc"]
9676unsafe fn allocate(size: usize, _align: usize) -> *mut u8 {
9677    let p = libc::malloc(size) as *mut u8;
9678
9679    // Check if `malloc` failed:
9680    if p.is_null() {
9681        intrinsics::abort();
9682    }
9683
9684    p
9685}
9686
9687#[no_mangle]
9688extern "C" fn main(_argc: c_int, _argv: *const *const u8) -> c_int {
9689    let _x = Box::new(1);
9690
9691    0
9692}
9693
9694#[lang = "eh_personality"]
9695fn rust_eh_personality() {}
9696
9697#[panic_handler]
9698fn panic_handler(_info: &PanicInfo) -> ! { intrinsics::abort() }
9699```
9700
9701Note the use of `abort`: the `exchange_malloc` lang item is assumed to
9702return a valid pointer, and so needs to do the check internally.
9703
9704## List of all language items
9705
9706An up-to-date list of all language items can be found [here] in the compiler code.
9707
9708[here]: https://github.com/rust-lang/rust/blob/HEAD/compiler/rustc_hir/src/lang_items.rs
9709"##,
9710        default_severity: Severity::Allow,
9711        warn_since: None,
9712        deny_since: None,
9713    },
9714    Lint {
9715        label: "large_assignments",
9716        description: r##"# `large_assignments`
9717
9718Allows setting the threshold for the `large_assignments` lint.
9719
9720The tracking issue for this feature is: [#83518]
9721
9722[#83518]: https://github.com/rust-lang/rust/issues/83518
9723
9724------------------------
9725"##,
9726        default_severity: Severity::Allow,
9727        warn_since: None,
9728        deny_since: None,
9729    },
9730    Lint {
9731        label: "layout_for_ptr",
9732        description: r##"# `layout_for_ptr`
9733
9734
9735
9736The tracking issue for this feature is: [#69835]
9737
9738[#69835]: https://github.com/rust-lang/rust/issues/69835
9739
9740------------------------
9741"##,
9742        default_severity: Severity::Allow,
9743        warn_since: None,
9744        deny_since: None,
9745    },
9746    Lint {
9747        label: "lazy_cell_into_inner",
9748        description: r##"# `lazy_cell_into_inner`
9749
9750
9751
9752The tracking issue for this feature is: [#125623]
9753
9754[#125623]: https://github.com/rust-lang/rust/issues/125623
9755
9756------------------------
9757"##,
9758        default_severity: Severity::Allow,
9759        warn_since: None,
9760        deny_since: None,
9761    },
9762    Lint {
9763        label: "lazy_type_alias",
9764        description: r##"# `lazy_type_alias`
9765
9766Allow to have type alias types for inter-crate use.
9767
9768The tracking issue for this feature is: [#112792]
9769
9770[#112792]: https://github.com/rust-lang/rust/issues/112792
9771
9772------------------------
9773"##,
9774        default_severity: Severity::Allow,
9775        warn_since: None,
9776        deny_since: None,
9777    },
9778    Lint {
9779        label: "legacy_receiver_trait",
9780        description: r##"# `legacy_receiver_trait`
9781
9782
9783
9784This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
9785
9786------------------------
9787"##,
9788        default_severity: Severity::Allow,
9789        warn_since: None,
9790        deny_since: None,
9791    },
9792    Lint {
9793        label: "liballoc_internals",
9794        description: r##"# `liballoc_internals`
9795
9796
9797
9798This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
9799
9800------------------------
9801"##,
9802        default_severity: Severity::Allow,
9803        warn_since: None,
9804        deny_since: None,
9805    },
9806    Lint {
9807        label: "libstd_sys_internals",
9808        description: r##"# `libstd_sys_internals`
9809
9810This feature is internal to the Rust compiler and is not intended for general use.
9811
9812------------------------
9813"##,
9814        default_severity: Severity::Allow,
9815        warn_since: None,
9816        deny_since: None,
9817    },
9818    Lint {
9819        label: "likely_unlikely",
9820        description: r##"# `likely_unlikely`
9821
9822
9823
9824The tracking issue for this feature is: [#151619]
9825
9826[#151619]: https://github.com/rust-lang/rust/issues/151619
9827
9828------------------------
9829"##,
9830        default_severity: Severity::Allow,
9831        warn_since: None,
9832        deny_since: None,
9833    },
9834    Lint {
9835        label: "link_arg_attribute",
9836        description: r##"# `link_arg_attribute`
9837
9838The tracking issue for this feature is: [#99427]
9839
9840------
9841
9842The `link_arg_attribute` feature allows passing arguments into the linker
9843from inside of the source code. Order is preserved for link attributes as
9844they were defined on a single extern block:
9845
9846```rust,no_run
9847#![feature(link_arg_attribute)]
9848
9849#[link(kind = "link-arg", name = "--start-group")]
9850#[link(kind = "static", name = "c")]
9851#[link(kind = "static", name = "gcc")]
9852#[link(kind = "link-arg", name = "--end-group")]
9853extern "C" {}
9854```
9855
9856[#99427]: https://github.com/rust-lang/rust/issues/99427
9857"##,
9858        default_severity: Severity::Allow,
9859        warn_since: None,
9860        deny_since: None,
9861    },
9862    Lint {
9863        label: "link_cfg",
9864        description: r##"# `link_cfg`
9865
9866This feature is internal to the Rust compiler and is not intended for general use.
9867
9868------------------------
9869"##,
9870        default_severity: Severity::Allow,
9871        warn_since: None,
9872        deny_since: None,
9873    },
9874    Lint {
9875        label: "link_llvm_intrinsics",
9876        description: r##"# `link_llvm_intrinsics`
9877
9878Allows using `#[link_name="llvm.*"]`.
9879
9880The tracking issue for this feature is: [#29602]
9881
9882[#29602]: https://github.com/rust-lang/rust/issues/29602
9883
9884------------------------
9885"##,
9886        default_severity: Severity::Allow,
9887        warn_since: None,
9888        deny_since: None,
9889    },
9890    Lint {
9891        label: "linkage",
9892        description: r##"# `linkage`
9893
9894Allows using the `#[linkage = ".."]` attribute.
9895
9896The tracking issue for this feature is: [#29603]
9897
9898[#29603]: https://github.com/rust-lang/rust/issues/29603
9899
9900------------------------
9901"##,
9902        default_severity: Severity::Allow,
9903        warn_since: None,
9904        deny_since: None,
9905    },
9906    Lint {
9907        label: "linked_list_cursors",
9908        description: r##"# `linked_list_cursors`
9909
9910
9911
9912The tracking issue for this feature is: [#58533]
9913
9914[#58533]: https://github.com/rust-lang/rust/issues/58533
9915
9916------------------------
9917"##,
9918        default_severity: Severity::Allow,
9919        warn_since: None,
9920        deny_since: None,
9921    },
9922    Lint {
9923        label: "linked_list_remove",
9924        description: r##"# `linked_list_remove`
9925
9926
9927
9928The tracking issue for this feature is: [#69210]
9929
9930[#69210]: https://github.com/rust-lang/rust/issues/69210
9931
9932------------------------
9933"##,
9934        default_severity: Severity::Allow,
9935        warn_since: None,
9936        deny_since: None,
9937    },
9938    Lint {
9939        label: "linked_list_retain",
9940        description: r##"# `linked_list_retain`
9941
9942
9943
9944The tracking issue for this feature is: [#114135]
9945
9946[#114135]: https://github.com/rust-lang/rust/issues/114135
9947
9948------------------------
9949"##,
9950        default_severity: Severity::Allow,
9951        warn_since: None,
9952        deny_since: None,
9953    },
9954    Lint {
9955        label: "linux_pidfd",
9956        description: r##"# `linux_pidfd`
9957
9958
9959
9960The tracking issue for this feature is: [#82971]
9961
9962[#82971]: https://github.com/rust-lang/rust/issues/82971
9963
9964------------------------
9965"##,
9966        default_severity: Severity::Allow,
9967        warn_since: None,
9968        deny_since: None,
9969    },
9970    Lint {
9971        label: "local_key_cell_update",
9972        description: r##"# `local_key_cell_update`
9973
9974
9975
9976The tracking issue for this feature is: [#143989]
9977
9978[#143989]: https://github.com/rust-lang/rust/issues/143989
9979
9980------------------------
9981"##,
9982        default_severity: Severity::Allow,
9983        warn_since: None,
9984        deny_since: None,
9985    },
9986    Lint {
9987        label: "local_waker",
9988        description: r##"# `local_waker`
9989
9990
9991
9992The tracking issue for this feature is: [#118959]
9993
9994[#118959]: https://github.com/rust-lang/rust/issues/118959
9995
9996------------------------
9997"##,
9998        default_severity: Severity::Allow,
9999        warn_since: None,
10000        deny_since: None,
10001    },
10002    Lint {
10003        label: "lock_value_accessors",
10004        description: r##"# `lock_value_accessors`
10005
10006
10007
10008The tracking issue for this feature is: [#133407]
10009
10010[#133407]: https://github.com/rust-lang/rust/issues/133407
10011
10012------------------------
10013"##,
10014        default_severity: Severity::Allow,
10015        warn_since: None,
10016        deny_since: None,
10017    },
10018    Lint {
10019        label: "log_syntax",
10020        description: r##"# `log_syntax`
10021
10022
10023
10024The tracking issue for this feature is: [#29598]
10025
10026[#29598]: https://github.com/rust-lang/rust/issues/29598
10027
10028------------------------
10029"##,
10030        default_severity: Severity::Allow,
10031        warn_since: None,
10032        deny_since: None,
10033    },
10034    Lint {
10035        label: "loongarch_target_feature",
10036        description: r##"# `loongarch_target_feature`
10037
10038Target features on loongarch.
10039
10040The tracking issue for this feature is: [#150252]
10041
10042[#150252]: https://github.com/rust-lang/rust/issues/150252
10043
10044------------------------
10045"##,
10046        default_severity: Severity::Allow,
10047        warn_since: None,
10048        deny_since: None,
10049    },
10050    Lint {
10051        label: "loop_match",
10052        description: r##"# `loop_match`
10053
10054The tracking issue for this feature is: [#132306]
10055
10056[#132306]: https://github.com/rust-lang/rust/issues/132306
10057
10058------
10059
10060The `#[loop_match]` and `#[const_continue]` attributes can be used to improve the code
10061generation of logic that fits this shape:
10062
10063```ignore (pseudo-rust)
10064loop {
10065    state = 'blk: {
10066        match state {
10067            State::A => {
10068                break 'blk State::B
10069            }
10070            State::B => { /* ... */ }
10071            /* ... */
10072        }
10073    }
10074}
10075```
10076
10077Here the loop itself can be annotated with `#[loop_match]`, and any `break 'blk` with
10078`#[const_continue]` if the value is know at compile time:
10079
10080```ignore (pseudo-rust)
10081#[loop_match]
10082loop {
10083    state = 'blk: {
10084        match state {
10085            State::A => {
10086                #[const_continue]
10087                break 'blk State::B
10088            }
10089            State::B => { /* ... */ }
10090            /* ... */
10091        }
10092    }
10093}
10094```
10095
10096The observable behavior of this loop is exactly the same as without the extra attributes.
10097The difference is in the generated output: normally, when the state is `A`, control flow
10098moves from the `A` branch, back to the top of the loop, then to the `B` branch. With the
10099attributes, The `A` branch will immediately jump to the `B` branch.
10100
10101Removing the indirection can be beneficial for stack usage and branch prediction, and
10102enables other optimizations by clearly splitting out the control flow paths that your
10103program will actually use.
10104"##,
10105        default_severity: Severity::Allow,
10106        warn_since: None,
10107        deny_since: None,
10108    },
10109    Lint {
10110        label: "m68k_target_feature",
10111        description: r##"# `m68k_target_feature`
10112
10113Target features on m68k.
10114
10115The tracking issue for this feature is: [#134328]
10116
10117[#134328]: https://github.com/rust-lang/rust/issues/134328
10118
10119------------------------
10120"##,
10121        default_severity: Severity::Allow,
10122        warn_since: None,
10123        deny_since: None,
10124    },
10125    Lint {
10126        label: "macro_attr",
10127        description: r##"# `macro_attr`
10128
10129Allow `macro_rules!` attribute rules
10130
10131The tracking issue for this feature is: [#143547]
10132
10133[#143547]: https://github.com/rust-lang/rust/issues/143547
10134
10135------------------------
10136"##,
10137        default_severity: Severity::Allow,
10138        warn_since: None,
10139        deny_since: None,
10140    },
10141    Lint {
10142        label: "macro_derive",
10143        description: r##"# `macro_derive`
10144
10145Allow `macro_rules!` derive rules
10146
10147The tracking issue for this feature is: [#143549]
10148
10149[#143549]: https://github.com/rust-lang/rust/issues/143549
10150
10151------------------------
10152"##,
10153        default_severity: Severity::Allow,
10154        warn_since: None,
10155        deny_since: None,
10156    },
10157    Lint {
10158        label: "macro_guard_matcher",
10159        description: r##"# `macro_guard_matcher`
10160
10161Allow `$x:guard` matcher in macros
10162
10163The tracking issue for this feature is: [#153104]
10164
10165[#153104]: https://github.com/rust-lang/rust/issues/153104
10166
10167------------------------
10168"##,
10169        default_severity: Severity::Allow,
10170        warn_since: None,
10171        deny_since: None,
10172    },
10173    Lint {
10174        label: "macro_metavar_expr",
10175        description: r##"# `macro_metavar_expr`
10176
10177The tracking issue for this feature is: [#83527]
10178
10179------------------------
10180
10181> This feature is not to be confused with [`macro_metavar_expr_concat`].
10182
10183[`macro_metavar_expr_concat`]: ./macro-metavar-expr-concat.md
10184[#83527]: https://github.com/rust-lang/rust/issues/83527
10185"##,
10186        default_severity: Severity::Allow,
10187        warn_since: None,
10188        deny_since: None,
10189    },
10190    Lint {
10191        label: "macro_metavar_expr_concat",
10192        description: r##"# `macro_metavar_expr_concat`
10193
10194The tracking issue for this feature is: [#124225]
10195
10196------------------------
10197
10198In stable Rust, there is no way to create new identifiers by joining identifiers to literals or other identifiers without using procedural macros such as [`paste`].
10199 `#![feature(macro_metavar_expr_concat)]` introduces a way to do this, using the concat metavariable expression.
10200
10201> This feature uses the syntax from [`macro_metavar_expr`] but is otherwise
10202> independent. It replaces the since-removed unstable feature
10203> [`concat_idents`].
10204
10205> This is an experimental feature; it and its syntax will require a RFC before stabilization.
10206
10207
10208### Overview
10209
10210`#![feature(macro_metavar_expr_concat)]` provides the `concat` metavariable expression for creating new identifiers:
10211
10212```rust
10213#![feature(macro_metavar_expr_concat)]
10214
10215macro_rules! create_some_structs {
10216    ($name:ident) => {
10217        pub struct ${ concat(First, $name) };
10218        pub struct ${ concat(Second, $name) };
10219        pub struct ${ concat(Third, $name) };
10220    }
10221}
10222
10223create_some_structs!(Thing);
10224```
10225
10226This macro invocation expands to:
10227
10228```rust
10229pub struct FirstThing;
10230pub struct SecondThing;
10231pub struct ThirdThing;
10232```
10233
10234### Syntax
10235
10236This feature builds upon the metavariable expression syntax `${ .. }` as specified in [RFC 3086] ([`macro_metavar_expr`]).
10237 `concat` is available like `${ concat(items) }`, where `items` is a comma separated sequence of idents and/or literals.
10238
10239### Examples
10240
10241#### Create a function or method with a concatenated name
10242
10243```rust
10244#![feature(macro_metavar_expr_concat)]
10245
10246macro_rules! make_getter {
10247    ($name:ident, $field: ident, $ret:ty) => {
10248        impl $name {
10249            pub fn ${ concat(get_, $field) }(&self) -> &$ret {
10250                &self.$field
10251            }
10252        }
10253    }
10254}
10255
10256pub struct Thing {
10257    description: String,
10258}
10259
10260make_getter!(Thing, description, String);
10261```
10262
10263This expands to:
10264
10265```rust
10266pub struct Thing {
10267    description: String,
10268}
10269
10270impl Thing {
10271    pub fn get_description(&self) -> &String {
10272        &self.description
10273    }
10274}
10275```
10276
10277#### Create names for macro generated tests
10278
10279```rust
10280#![feature(macro_metavar_expr_concat)]
10281
10282macro_rules! test_math {
10283    ($integer:ident) => {
10284        #[test]
10285        fn ${ concat(test_, $integer, _, addition) } () {
10286            let a: $integer = 73;
10287            let b: $integer = 42;
10288            assert_eq!(a + b, 115)
10289        }
10290
10291        #[test]
10292        fn ${ concat(test_, $integer, _, subtraction) } () {
10293            let a: $integer = 73;
10294            let b: $integer = 42;
10295            assert_eq!(a - b, 31)
10296        }
10297    }
10298}
10299
10300test_math!(i32);
10301test_math!(u64);
10302test_math!(u128);
10303```
10304
10305Running this returns the following output:
10306
10307```text
10308running 6 tests
10309test test_i32_subtraction ... ok
10310test test_i32_addition ... ok
10311test test_u128_addition ... ok
10312test test_u128_subtraction ... ok
10313test test_u64_addition ... ok
10314test test_u64_subtraction ... ok
10315
10316test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
10317```
10318
10319[`paste`]: https://crates.io/crates/paste
10320[RFC 3086]: https://rust-lang.github.io/rfcs/3086-macro-metavar-expr.html
10321[`macro_metavar_expr`]: ../language-features/macro-metavar-expr.md
10322[`concat_idents`]: https://github.com/rust-lang/rust/issues/29599
10323[#124225]: https://github.com/rust-lang/rust/issues/124225
10324[declarative macros]: https://doc.rust-lang.org/stable/reference/macros-by-example.html
10325"##,
10326        default_severity: Severity::Allow,
10327        warn_since: None,
10328        deny_since: None,
10329    },
10330    Lint {
10331        label: "map_try_insert",
10332        description: r##"# `map_try_insert`
10333
10334
10335
10336The tracking issue for this feature is: [#82766]
10337
10338[#82766]: https://github.com/rust-lang/rust/issues/82766
10339
10340------------------------
10341"##,
10342        default_severity: Severity::Allow,
10343        warn_since: None,
10344        deny_since: None,
10345    },
10346    Lint {
10347        label: "mapped_lock_guards",
10348        description: r##"# `mapped_lock_guards`
10349
10350
10351
10352The tracking issue for this feature is: [#117108]
10353
10354[#117108]: https://github.com/rust-lang/rust/issues/117108
10355
10356------------------------
10357"##,
10358        default_severity: Severity::Allow,
10359        warn_since: None,
10360        deny_since: None,
10361    },
10362    Lint {
10363        label: "marker_trait_attr",
10364        description: r##"# `marker_trait_attr`
10365
10366The tracking issue for this feature is: [#29864]
10367
10368[#29864]: https://github.com/rust-lang/rust/issues/29864
10369
10370------------------------
10371
10372Normally, Rust keeps you from adding trait implementations that could
10373overlap with each other, as it would be ambiguous which to use.  This
10374feature, however, carves out an exception to that rule: a trait can
10375opt-in to having overlapping implementations, at the cost that those
10376implementations are not allowed to override anything (and thus the
10377trait itself cannot have any associated items, as they're pointless
10378when they'd need to do the same thing for every type anyway).
10379
10380```rust
10381#![feature(marker_trait_attr)]
10382
10383#[marker] trait CheapToClone: Clone {}
10384
10385impl<T: Copy> CheapToClone for T {}
10386
10387// These could potentially overlap with the blanket implementation above,
10388// so are only allowed because CheapToClone is a marker trait.
10389impl<T: CheapToClone, U: CheapToClone> CheapToClone for (T, U) {}
10390impl<T: CheapToClone> CheapToClone for std::ops::Range<T> {}
10391
10392fn cheap_clone<T: CheapToClone>(t: T) -> T {
10393    t.clone()
10394}
10395```
10396
10397This is expected to replace the unstable `overlapping_marker_traits`
10398feature, which applied to all empty traits (without needing an opt-in).
10399"##,
10400        default_severity: Severity::Allow,
10401        warn_since: None,
10402        deny_since: None,
10403    },
10404    Lint {
10405        label: "maybe_dangling",
10406        description: r##"# `maybe_dangling`
10407
10408
10409
10410The tracking issue for this feature is: [#118166]
10411
10412[#118166]: https://github.com/rust-lang/rust/issues/118166
10413
10414------------------------
10415"##,
10416        default_severity: Severity::Allow,
10417        warn_since: None,
10418        deny_since: None,
10419    },
10420    Lint {
10421        label: "maybe_uninit_array_assume_init",
10422        description: r##"# `maybe_uninit_array_assume_init`
10423
10424
10425
10426The tracking issue for this feature is: [#96097]
10427
10428[#96097]: https://github.com/rust-lang/rust/issues/96097
10429
10430------------------------
10431"##,
10432        default_severity: Severity::Allow,
10433        warn_since: None,
10434        deny_since: None,
10435    },
10436    Lint {
10437        label: "maybe_uninit_as_bytes",
10438        description: r##"# `maybe_uninit_as_bytes`
10439
10440
10441
10442The tracking issue for this feature is: [#93092]
10443
10444[#93092]: https://github.com/rust-lang/rust/issues/93092
10445
10446------------------------
10447"##,
10448        default_severity: Severity::Allow,
10449        warn_since: None,
10450        deny_since: None,
10451    },
10452    Lint {
10453        label: "maybe_uninit_fill",
10454        description: r##"# `maybe_uninit_fill`
10455
10456
10457
10458The tracking issue for this feature is: [#117428]
10459
10460[#117428]: https://github.com/rust-lang/rust/issues/117428
10461
10462------------------------
10463"##,
10464        default_severity: Severity::Allow,
10465        warn_since: None,
10466        deny_since: None,
10467    },
10468    Lint {
10469        label: "maybe_uninit_uninit_array_transpose",
10470        description: r##"# `maybe_uninit_uninit_array_transpose`
10471
10472
10473
10474The tracking issue for this feature is: [#96097]
10475
10476[#96097]: https://github.com/rust-lang/rust/issues/96097
10477
10478------------------------
10479"##,
10480        default_severity: Severity::Allow,
10481        warn_since: None,
10482        deny_since: None,
10483    },
10484    Lint {
10485        label: "mem_conjure_zst",
10486        description: r##"# `mem_conjure_zst`
10487
10488
10489
10490The tracking issue for this feature is: [#95383]
10491
10492[#95383]: https://github.com/rust-lang/rust/issues/95383
10493
10494------------------------
10495"##,
10496        default_severity: Severity::Allow,
10497        warn_since: None,
10498        deny_since: None,
10499    },
10500    Lint {
10501        label: "mem_copy_fn",
10502        description: r##"# `mem_copy_fn`
10503
10504
10505
10506The tracking issue for this feature is: [#98262]
10507
10508[#98262]: https://github.com/rust-lang/rust/issues/98262
10509
10510------------------------
10511"##,
10512        default_severity: Severity::Allow,
10513        warn_since: None,
10514        deny_since: None,
10515    },
10516    Lint {
10517        label: "mgca_type_const_syntax",
10518        description: r##"# `mgca_type_const_syntax`
10519
10520Enable mgca `type const` syntax before expansion.
10521
10522The tracking issue for this feature is: [#132980]
10523
10524[#132980]: https://github.com/rust-lang/rust/issues/132980
10525
10526------------------------
10527"##,
10528        default_severity: Severity::Allow,
10529        warn_since: None,
10530        deny_since: None,
10531    },
10532    Lint {
10533        label: "min_adt_const_params",
10534        description: r##"# `min_adt_const_params`
10535
10536Allows additional const parameter types, such as [u8; 10] or user defined types. User defined types must not have fields more private than the type itself.
10537
10538The tracking issue for this feature is: [#154042]
10539
10540[#154042]: https://github.com/rust-lang/rust/issues/154042
10541
10542------------------------
10543"##,
10544        default_severity: Severity::Allow,
10545        warn_since: None,
10546        deny_since: None,
10547    },
10548    Lint {
10549        label: "min_generic_const_args",
10550        description: r##"# `min_generic_const_args`
10551
10552Enables the generic const args MVP (only bare paths, not arbitrary computation).
10553
10554The tracking issue for this feature is: [#132980]
10555
10556[#132980]: https://github.com/rust-lang/rust/issues/132980
10557
10558------------------------
10559"##,
10560        default_severity: Severity::Allow,
10561        warn_since: None,
10562        deny_since: None,
10563    },
10564    Lint {
10565        label: "min_specialization",
10566        description: r##"# `min_specialization`
10567
10568A minimal, sound subset of specialization intended to be used by the standard library until the soundness issues with specialization are fixed.
10569
10570The tracking issue for this feature is: [#31844]
10571
10572[#31844]: https://github.com/rust-lang/rust/issues/31844
10573
10574------------------------
10575"##,
10576        default_severity: Severity::Allow,
10577        warn_since: None,
10578        deny_since: None,
10579    },
10580    Lint {
10581        label: "mips_target_feature",
10582        description: r##"# `mips_target_feature`
10583
10584Target features on mips.
10585
10586The tracking issue for this feature is: [#150253]
10587
10588[#150253]: https://github.com/rust-lang/rust/issues/150253
10589
10590------------------------
10591"##,
10592        default_severity: Severity::Allow,
10593        warn_since: None,
10594        deny_since: None,
10595    },
10596    Lint {
10597        label: "more_float_constants",
10598        description: r##"# `more_float_constants`
10599
10600
10601
10602The tracking issue for this feature is: [#146939]
10603
10604[#146939]: https://github.com/rust-lang/rust/issues/146939
10605
10606------------------------
10607"##,
10608        default_severity: Severity::Allow,
10609        warn_since: None,
10610        deny_since: None,
10611    },
10612    Lint {
10613        label: "more_maybe_bounds",
10614        description: r##"# `more_maybe_bounds`
10615
10616Allows using `?Trait` trait bounds in more contexts.
10617
10618This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
10619
10620------------------------
10621"##,
10622        default_severity: Severity::Allow,
10623        warn_since: None,
10624        deny_since: None,
10625    },
10626    Lint {
10627        label: "more_qualified_paths",
10628        description: r##"# `more_qualified_paths`
10629
10630The `more_qualified_paths` feature can be used in order to enable the
10631use of qualified paths in patterns.
10632
10633The tracking issue for this feature is: [#86935](https://github.com/rust-lang/rust/issues/86935).
10634
10635------------------------
10636
10637## Example
10638
10639```rust
10640#![feature(more_qualified_paths)]
10641
10642fn main() {
10643    // destructure through a qualified path
10644    let <Foo as A>::Assoc { br } = StructStruct { br: 2 };
10645}
10646
10647struct StructStruct {
10648    br: i8,
10649}
10650
10651struct Foo;
10652
10653trait A {
10654    type Assoc;
10655}
10656
10657impl A for Foo {
10658    type Assoc = StructStruct;
10659}
10660```
10661"##,
10662        default_severity: Severity::Allow,
10663        warn_since: None,
10664        deny_since: None,
10665    },
10666    Lint {
10667        label: "motor_ext",
10668        description: r##"# `motor_ext`
10669
10670
10671
10672The tracking issue for this feature is: [#147456]
10673
10674[#147456]: https://github.com/rust-lang/rust/issues/147456
10675
10676------------------------
10677"##,
10678        default_severity: Severity::Allow,
10679        warn_since: None,
10680        deny_since: None,
10681    },
10682    Lint {
10683        label: "movrs_target_feature",
10684        description: r##"# `movrs_target_feature`
10685
10686The `movrs` target feature on x86.
10687
10688The tracking issue for this feature is: [#137976]
10689
10690[#137976]: https://github.com/rust-lang/rust/issues/137976
10691
10692------------------------
10693"##,
10694        default_severity: Severity::Allow,
10695        warn_since: None,
10696        deny_since: None,
10697    },
10698    Lint {
10699        label: "mpmc_channel",
10700        description: r##"# `mpmc_channel`
10701
10702
10703
10704The tracking issue for this feature is: [#126840]
10705
10706[#126840]: https://github.com/rust-lang/rust/issues/126840
10707
10708------------------------
10709"##,
10710        default_severity: Severity::Allow,
10711        warn_since: None,
10712        deny_since: None,
10713    },
10714    Lint {
10715        label: "mpsc_is_disconnected",
10716        description: r##"# `mpsc_is_disconnected`
10717
10718
10719
10720The tracking issue for this feature is: [#153668]
10721
10722[#153668]: https://github.com/rust-lang/rust/issues/153668
10723
10724------------------------
10725"##,
10726        default_severity: Severity::Allow,
10727        warn_since: None,
10728        deny_since: None,
10729    },
10730    Lint {
10731        label: "multiple_supertrait_upcastable",
10732        description: r##"# `multiple_supertrait_upcastable`
10733
10734Allows the `multiple_supertrait_upcastable` lint.
10735
10736The tracking issue for this feature is: [#150833]
10737
10738[#150833]: https://github.com/rust-lang/rust/issues/150833
10739
10740------------------------
10741"##,
10742        default_severity: Severity::Allow,
10743        warn_since: None,
10744        deny_since: None,
10745    },
10746    Lint {
10747        label: "must_not_suspend",
10748        description: r##"# `must_not_suspend`
10749
10750Allows the `#[must_not_suspend]` attribute.
10751
10752The tracking issue for this feature is: [#83310]
10753
10754[#83310]: https://github.com/rust-lang/rust/issues/83310
10755
10756------------------------
10757"##,
10758        default_severity: Severity::Allow,
10759        warn_since: None,
10760        deny_since: None,
10761    },
10762    Lint {
10763        label: "mut_ref",
10764        description: r##"# `mut_ref`
10765
10766Allows `mut ref` and `mut ref mut` identifier patterns.
10767
10768The tracking issue for this feature is: [#123076]
10769
10770[#123076]: https://github.com/rust-lang/rust/issues/123076
10771
10772------------------------
10773"##,
10774        default_severity: Severity::Allow,
10775        warn_since: None,
10776        deny_since: None,
10777    },
10778    Lint {
10779        label: "mutex_data_ptr",
10780        description: r##"# `mutex_data_ptr`
10781
10782
10783
10784The tracking issue for this feature is: [#140368]
10785
10786[#140368]: https://github.com/rust-lang/rust/issues/140368
10787
10788------------------------
10789"##,
10790        default_severity: Severity::Allow,
10791        warn_since: None,
10792        deny_since: None,
10793    },
10794    Lint {
10795        label: "naked_functions_rustic_abi",
10796        description: r##"# `naked_functions_rustic_abi`
10797
10798Allows using `#[naked]` on `extern "Rust"` functions.
10799
10800The tracking issue for this feature is: [#138997]
10801
10802[#138997]: https://github.com/rust-lang/rust/issues/138997
10803
10804------------------------
10805"##,
10806        default_severity: Severity::Allow,
10807        warn_since: None,
10808        deny_since: None,
10809    },
10810    Lint {
10811        label: "naked_functions_target_feature",
10812        description: r##"# `naked_functions_target_feature`
10813
10814Allows using `#[target_feature(enable = "...")]` on `#[naked]` on functions.
10815
10816The tracking issue for this feature is: [#138568]
10817
10818[#138568]: https://github.com/rust-lang/rust/issues/138568
10819
10820------------------------
10821"##,
10822        default_severity: Severity::Allow,
10823        warn_since: None,
10824        deny_since: None,
10825    },
10826    Lint {
10827        label: "native_link_modifiers_as_needed",
10828        description: r##"# `native_link_modifiers_as_needed`
10829
10830The tracking issue for this feature is: [#81490]
10831
10832[#81490]: https://github.com/rust-lang/rust/issues/81490
10833
10834------------------------
10835
10836The `native_link_modifiers_as_needed` feature allows you to use the `as-needed` modifier.
10837
10838`as-needed` is only compatible with the `dynamic` and `framework` linking kinds. Using any other kind will result in a compiler error.
10839
10840`+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.
10841
10842This modifier translates to `--as-needed` for ld-like linkers, and to `-dead_strip_dylibs` / `-needed_library` / `-needed_framework` for ld64.
10843The modifier does nothing for linkers that don't support it (e.g. `link.exe`).
10844
10845The 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.
10846"##,
10847        default_severity: Severity::Allow,
10848        warn_since: None,
10849        deny_since: None,
10850    },
10851    Lint {
10852        label: "needs_panic_runtime",
10853        description: r##"# `needs_panic_runtime`
10854
10855Allows declaring with `#![needs_panic_runtime]` that a panic runtime is needed.
10856
10857The tracking issue for this feature is: [#32837]
10858
10859[#32837]: https://github.com/rust-lang/rust/issues/32837
10860
10861------------------------
10862"##,
10863        default_severity: Severity::Allow,
10864        warn_since: None,
10865        deny_since: None,
10866    },
10867    Lint {
10868        label: "negative_bounds",
10869        description: r##"# `negative_bounds`
10870
10871Allow negative trait bounds. This is an internal-only feature for testing the trait solver!
10872
10873This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
10874
10875------------------------
10876"##,
10877        default_severity: Severity::Allow,
10878        warn_since: None,
10879        deny_since: None,
10880    },
10881    Lint {
10882        label: "negative_impls",
10883        description: r##"# `negative_impls`
10884
10885The tracking issue for this feature is [#68318].
10886
10887[#68318]: https://github.com/rust-lang/rust/issues/68318
10888
10889----
10890
10891With the feature gate `negative_impls`, you can write negative impls as well as positive ones:
10892
10893```rust
10894#![feature(negative_impls)]
10895trait DerefMut { }
10896impl<T: ?Sized> !DerefMut for &T { }
10897```
10898
10899Negative 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.
10900
10901Negative impls have the following characteristics:
10902
10903* They do not have any items.
10904* They must obey the orphan rules as if they were a positive impl.
10905* They cannot "overlap" with any positive impls.
10906
10907## Semver interaction
10908
10909It is a breaking change to remove a negative impl. Negative impls are a commitment not to implement the given trait for the named types.
10910
10911## Orphan and overlap rules
10912
10913Negative 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.
10914
10915Similarly, 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.)
10916
10917## Interaction with auto traits
10918
10919Declaring a negative impl `impl !SomeAutoTrait for SomeType` for an
10920auto-trait serves two purposes:
10921
10922* as with any trait, it declares that `SomeType` will never implement `SomeAutoTrait`;
10923* it disables the automatic `SomeType: SomeAutoTrait` impl that would otherwise have been generated.
10924
10925Note that, at present, there is no way to indicate that a given type
10926does not implement an auto trait *but that it may do so in the
10927future*. For ordinary types, this is done by simply not declaring any
10928impl at all, but that is not an option for auto traits. A workaround
10929is that one could embed a marker type as one of the fields, where the
10930marker type is `!AutoTrait`.
10931
10932## Immediate uses
10933
10934Negative 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).
10935
10936This serves two purposes:
10937
10938* For proving the correctness of unsafe code, we can use that impl as evidence that no `DerefMut` or `Clone` impl exists.
10939* It prevents downstream crates from creating such impls.
10940"##,
10941        default_severity: Severity::Allow,
10942        warn_since: None,
10943        deny_since: None,
10944    },
10945    Lint {
10946        label: "never_patterns",
10947        description: r##"# `never_patterns`
10948
10949Allows the `!` pattern.
10950
10951The tracking issue for this feature is: [#118155]
10952
10953[#118155]: https://github.com/rust-lang/rust/issues/118155
10954
10955------------------------
10956"##,
10957        default_severity: Severity::Allow,
10958        warn_since: None,
10959        deny_since: None,
10960    },
10961    Lint {
10962        label: "never_type",
10963        description: r##"# `never_type`
10964
10965Allows the `!` type. Does not imply 'exhaustive_patterns' (below) any more.
10966
10967The tracking issue for this feature is: [#35121]
10968
10969[#35121]: https://github.com/rust-lang/rust/issues/35121
10970
10971------------------------
10972"##,
10973        default_severity: Severity::Allow,
10974        warn_since: None,
10975        deny_since: None,
10976    },
10977    Lint {
10978        label: "new_range",
10979        description: r##"# `new_range`
10980
10981The tracking issue for this feature is: [#123741]
10982
10983[#123741]: https://github.com/rust-lang/rust/issues/123741
10984
10985---
10986
10987Switch the syntaxes `a..`, `a..b`, and `a..=b` to resolve the new range types.
10988"##,
10989        default_severity: Severity::Allow,
10990        warn_since: None,
10991        deny_since: None,
10992    },
10993    Lint {
10994        label: "new_range_api_legacy",
10995        description: r##"# `new_range_api_legacy`
10996
10997
10998
10999The tracking issue for this feature is: [#125687]
11000
11001[#125687]: https://github.com/rust-lang/rust/issues/125687
11002
11003------------------------
11004"##,
11005        default_severity: Severity::Allow,
11006        warn_since: None,
11007        deny_since: None,
11008    },
11009    Lint {
11010        label: "new_range_remainder",
11011        description: r##"# `new_range_remainder`
11012
11013
11014
11015The tracking issue for this feature is: [#154458]
11016
11017[#154458]: https://github.com/rust-lang/rust/issues/154458
11018
11019------------------------
11020"##,
11021        default_severity: Severity::Allow,
11022        warn_since: None,
11023        deny_since: None,
11024    },
11025    Lint {
11026        label: "next_index",
11027        description: r##"# `next_index`
11028
11029
11030
11031The tracking issue for this feature is: [#130711]
11032
11033[#130711]: https://github.com/rust-lang/rust/issues/130711
11034
11035------------------------
11036"##,
11037        default_severity: Severity::Allow,
11038        warn_since: None,
11039        deny_since: None,
11040    },
11041    Lint {
11042        label: "no_core",
11043        description: r##"# `no_core`
11044
11045Allows `#![no_core]`.
11046
11047The tracking issue for this feature is: [#29639]
11048
11049[#29639]: https://github.com/rust-lang/rust/issues/29639
11050
11051------------------------
11052"##,
11053        default_severity: Severity::Allow,
11054        warn_since: None,
11055        deny_since: None,
11056    },
11057    Lint {
11058        label: "non_exhaustive_omitted_patterns_lint",
11059        description: r##"# `non_exhaustive_omitted_patterns_lint`
11060
11061Allows using the `non_exhaustive_omitted_patterns` lint.
11062
11063The tracking issue for this feature is: [#89554]
11064
11065[#89554]: https://github.com/rust-lang/rust/issues/89554
11066
11067------------------------
11068"##,
11069        default_severity: Severity::Allow,
11070        warn_since: None,
11071        deny_since: None,
11072    },
11073    Lint {
11074        label: "non_lifetime_binders",
11075        description: r##"# `non_lifetime_binders`
11076
11077Allows `for<T>` binders in where-clauses
11078
11079The tracking issue for this feature is: [#108185]
11080
11081[#108185]: https://github.com/rust-lang/rust/issues/108185
11082
11083------------------------
11084"##,
11085        default_severity: Severity::Allow,
11086        warn_since: None,
11087        deny_since: None,
11088    },
11089    Lint {
11090        label: "nonpoison_condvar",
11091        description: r##"# `nonpoison_condvar`
11092
11093
11094
11095The tracking issue for this feature is: [#134645]
11096
11097[#134645]: https://github.com/rust-lang/rust/issues/134645
11098
11099------------------------
11100"##,
11101        default_severity: Severity::Allow,
11102        warn_since: None,
11103        deny_since: None,
11104    },
11105    Lint {
11106        label: "nonpoison_mutex",
11107        description: r##"# `nonpoison_mutex`
11108
11109
11110
11111The tracking issue for this feature is: [#134645]
11112
11113[#134645]: https://github.com/rust-lang/rust/issues/134645
11114
11115------------------------
11116"##,
11117        default_severity: Severity::Allow,
11118        warn_since: None,
11119        deny_since: None,
11120    },
11121    Lint {
11122        label: "nonpoison_rwlock",
11123        description: r##"# `nonpoison_rwlock`
11124
11125
11126
11127The tracking issue for this feature is: [#134645]
11128
11129[#134645]: https://github.com/rust-lang/rust/issues/134645
11130
11131------------------------
11132"##,
11133        default_severity: Severity::Allow,
11134        warn_since: None,
11135        deny_since: None,
11136    },
11137    Lint {
11138        label: "nonzero_bitwise",
11139        description: r##"# `nonzero_bitwise`
11140
11141
11142
11143The tracking issue for this feature is: [#128281]
11144
11145[#128281]: https://github.com/rust-lang/rust/issues/128281
11146
11147------------------------
11148"##,
11149        default_severity: Severity::Allow,
11150        warn_since: None,
11151        deny_since: None,
11152    },
11153    Lint {
11154        label: "nonzero_from_mut",
11155        description: r##"# `nonzero_from_mut`
11156
11157
11158
11159The tracking issue for this feature is: [#106290]
11160
11161[#106290]: https://github.com/rust-lang/rust/issues/106290
11162
11163------------------------
11164"##,
11165        default_severity: Severity::Allow,
11166        warn_since: None,
11167        deny_since: None,
11168    },
11169    Lint {
11170        label: "nonzero_from_str_radix",
11171        description: r##"# `nonzero_from_str_radix`
11172
11173
11174
11175The tracking issue for this feature is: [#152193]
11176
11177[#152193]: https://github.com/rust-lang/rust/issues/152193
11178
11179------------------------
11180"##,
11181        default_severity: Severity::Allow,
11182        warn_since: None,
11183        deny_since: None,
11184    },
11185    Lint {
11186        label: "nonzero_internals",
11187        description: r##"# `nonzero_internals`
11188
11189
11190
11191This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
11192
11193------------------------
11194"##,
11195        default_severity: Severity::Allow,
11196        warn_since: None,
11197        deny_since: None,
11198    },
11199    Lint {
11200        label: "nonzero_ops",
11201        description: r##"# `nonzero_ops`
11202
11203
11204
11205The tracking issue for this feature is: [#84186]
11206
11207[#84186]: https://github.com/rust-lang/rust/issues/84186
11208
11209------------------------
11210"##,
11211        default_severity: Severity::Allow,
11212        warn_since: None,
11213        deny_since: None,
11214    },
11215    Lint {
11216        label: "normalize_lexically",
11217        description: r##"# `normalize_lexically`
11218
11219
11220
11221The tracking issue for this feature is: [#134694]
11222
11223[#134694]: https://github.com/rust-lang/rust/issues/134694
11224
11225------------------------
11226"##,
11227        default_severity: Severity::Allow,
11228        warn_since: None,
11229        deny_since: None,
11230    },
11231    Lint {
11232        label: "num_internals",
11233        description: r##"# `num_internals`
11234
11235
11236
11237This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
11238
11239------------------------
11240"##,
11241        default_severity: Severity::Allow,
11242        warn_since: None,
11243        deny_since: None,
11244    },
11245    Lint {
11246        label: "numfmt",
11247        description: r##"# `numfmt`
11248
11249
11250
11251This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
11252
11253------------------------
11254"##,
11255        default_severity: Severity::Allow,
11256        warn_since: None,
11257        deny_since: None,
11258    },
11259    Lint {
11260        label: "nvptx_target_feature",
11261        description: r##"# `nvptx_target_feature`
11262
11263Target feaures on nvptx.
11264
11265The tracking issue for this feature is: [#150254]
11266
11267[#150254]: https://github.com/rust-lang/rust/issues/150254
11268
11269------------------------
11270"##,
11271        default_severity: Severity::Allow,
11272        warn_since: None,
11273        deny_since: None,
11274    },
11275    Lint {
11276        label: "objc_class_variant",
11277        description: r##"# `objc_class_variant`
11278
11279
11280
11281This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
11282
11283------------------------
11284"##,
11285        default_severity: Severity::Allow,
11286        warn_since: None,
11287        deny_since: None,
11288    },
11289    Lint {
11290        label: "objc_selector_variant",
11291        description: r##"# `objc_selector_variant`
11292
11293
11294
11295This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
11296
11297------------------------
11298"##,
11299        default_severity: Severity::Allow,
11300        warn_since: None,
11301        deny_since: None,
11302    },
11303    Lint {
11304        label: "offset_of_enum",
11305        description: r##"# `offset_of_enum`
11306
11307The tracking issue for this feature is: [#120141]
11308
11309[#120141]: https://github.com/rust-lang/rust/issues/120141
11310
11311------------------------
11312
11313When the `offset_of_enum` feature is enabled, the [`offset_of!`] macro may be used to obtain the
11314offsets of fields of `enum`s; to express this, `enum` variants may be traversed as if they were
11315fields. Variants themselves do not have an offset, so they cannot appear as the last path component.
11316
11317```rust
11318#![feature(offset_of_enum)]
11319use std::mem;
11320
11321#[repr(u8)]
11322enum Enum {
11323    A(u8, u16),
11324    B { one: u8, two: u16 },
11325}
11326
11327assert_eq!(mem::offset_of!(Enum, A.0), 1);
11328assert_eq!(mem::offset_of!(Enum, B.two), 2);
11329
11330assert_eq!(mem::offset_of!(Option<&u8>, Some.0), 0);
11331```
11332
11333[`offset_of!`]: ../../std/mem/macro.offset_of.html
11334"##,
11335        default_severity: Severity::Allow,
11336        warn_since: None,
11337        deny_since: None,
11338    },
11339    Lint {
11340        label: "offset_of_slice",
11341        description: r##"# `offset_of_slice`
11342
11343The tracking issue for this feature is: [#126151]
11344
11345[#126151]: https://github.com/rust-lang/rust/issues/126151
11346
11347------------------------
11348
11349When the `offset_of_slice` feature is enabled, the [`offset_of!`] macro may be used to determine
11350the offset of fields whose type is `[T]`, that is, a slice of dynamic size.
11351
11352In general, fields whose type is dynamically sized do not have statically known offsets because
11353they do not have statically known alignments. However, `[T]` has the same alignment as `T`, so
11354it specifically may be allowed.
11355
11356```rust
11357#![feature(offset_of_slice)]
11358
11359#[repr(C)]
11360pub struct Struct {
11361    head: u32,
11362    tail: [u8],
11363}
11364
11365fn main() {
11366    assert_eq!(std::mem::offset_of!(Struct, tail), 4);
11367}
11368```
11369
11370[`offset_of!`]: ../../std/mem/macro.offset_of.html
11371"##,
11372        default_severity: Severity::Allow,
11373        warn_since: None,
11374        deny_since: None,
11375    },
11376    Lint {
11377        label: "once_cell_get_mut",
11378        description: r##"# `once_cell_get_mut`
11379
11380
11381
11382The tracking issue for this feature is: [#121641]
11383
11384[#121641]: https://github.com/rust-lang/rust/issues/121641
11385
11386------------------------
11387"##,
11388        default_severity: Severity::Allow,
11389        warn_since: None,
11390        deny_since: None,
11391    },
11392    Lint {
11393        label: "once_cell_try",
11394        description: r##"# `once_cell_try`
11395
11396
11397
11398The tracking issue for this feature is: [#109737]
11399
11400[#109737]: https://github.com/rust-lang/rust/issues/109737
11401
11402------------------------
11403"##,
11404        default_severity: Severity::Allow,
11405        warn_since: None,
11406        deny_since: None,
11407    },
11408    Lint {
11409        label: "once_cell_try_insert",
11410        description: r##"# `once_cell_try_insert`
11411
11412
11413
11414The tracking issue for this feature is: [#116693]
11415
11416[#116693]: https://github.com/rust-lang/rust/issues/116693
11417
11418------------------------
11419"##,
11420        default_severity: Severity::Allow,
11421        warn_since: None,
11422        deny_since: None,
11423    },
11424    Lint {
11425        label: "one_sided_range",
11426        description: r##"# `one_sided_range`
11427
11428
11429
11430The tracking issue for this feature is: [#69780]
11431
11432[#69780]: https://github.com/rust-lang/rust/issues/69780
11433
11434------------------------
11435"##,
11436        default_severity: Severity::Allow,
11437        warn_since: None,
11438        deny_since: None,
11439    },
11440    Lint {
11441        label: "oneshot_channel",
11442        description: r##"# `oneshot_channel`
11443
11444
11445
11446The tracking issue for this feature is: [#143674]
11447
11448[#143674]: https://github.com/rust-lang/rust/issues/143674
11449
11450------------------------
11451"##,
11452        default_severity: Severity::Allow,
11453        warn_since: None,
11454        deny_since: None,
11455    },
11456    Lint {
11457        label: "optimize_attribute",
11458        description: r##"# `optimize_attribute`
11459
11460Allows using `#[optimize(X)]`.
11461
11462The tracking issue for this feature is: [#54882]
11463
11464[#54882]: https://github.com/rust-lang/rust/issues/54882
11465
11466------------------------
11467"##,
11468        default_severity: Severity::Allow,
11469        warn_since: None,
11470        deny_since: None,
11471    },
11472    Lint {
11473        label: "option_array_transpose",
11474        description: r##"# `option_array_transpose`
11475
11476
11477
11478The tracking issue for this feature is: [#130828]
11479
11480[#130828]: https://github.com/rust-lang/rust/issues/130828
11481
11482------------------------
11483"##,
11484        default_severity: Severity::Allow,
11485        warn_since: None,
11486        deny_since: None,
11487    },
11488    Lint {
11489        label: "option_get_or_try_insert_with",
11490        description: r##"# `option_get_or_try_insert_with`
11491
11492
11493
11494The tracking issue for this feature is: [#143648]
11495
11496[#143648]: https://github.com/rust-lang/rust/issues/143648
11497
11498------------------------
11499"##,
11500        default_severity: Severity::Allow,
11501        warn_since: None,
11502        deny_since: None,
11503    },
11504    Lint {
11505        label: "option_into_flat_iter",
11506        description: r##"# `option_into_flat_iter`
11507
11508
11509
11510The tracking issue for this feature is: [#148441]
11511
11512[#148441]: https://github.com/rust-lang/rust/issues/148441
11513
11514------------------------
11515"##,
11516        default_severity: Severity::Allow,
11517        warn_since: None,
11518        deny_since: None,
11519    },
11520    Lint {
11521        label: "option_reduce",
11522        description: r##"# `option_reduce`
11523
11524
11525
11526The tracking issue for this feature is: [#144273]
11527
11528[#144273]: https://github.com/rust-lang/rust/issues/144273
11529
11530------------------------
11531"##,
11532        default_severity: Severity::Allow,
11533        warn_since: None,
11534        deny_since: None,
11535    },
11536    Lint {
11537        label: "option_reference_flattening",
11538        description: r##"# `option_reference_flattening`
11539
11540
11541
11542The tracking issue for this feature is: [#149221]
11543
11544[#149221]: https://github.com/rust-lang/rust/issues/149221
11545
11546------------------------
11547"##,
11548        default_severity: Severity::Allow,
11549        warn_since: None,
11550        deny_since: None,
11551    },
11552    Lint {
11553        label: "option_zip",
11554        description: r##"# `option_zip`
11555
11556
11557
11558The tracking issue for this feature is: [#70086]
11559
11560[#70086]: https://github.com/rust-lang/rust/issues/70086
11561
11562------------------------
11563"##,
11564        default_severity: Severity::Allow,
11565        warn_since: None,
11566        deny_since: None,
11567    },
11568    Lint {
11569        label: "os_str_slice",
11570        description: r##"# `os_str_slice`
11571
11572
11573
11574The tracking issue for this feature is: [#118485]
11575
11576[#118485]: https://github.com/rust-lang/rust/issues/118485
11577
11578------------------------
11579"##,
11580        default_severity: Severity::Allow,
11581        warn_since: None,
11582        deny_since: None,
11583    },
11584    Lint {
11585        label: "os_string_truncate",
11586        description: r##"# `os_string_truncate`
11587
11588
11589
11590The tracking issue for this feature is: [#133262]
11591
11592[#133262]: https://github.com/rust-lang/rust/issues/133262
11593
11594------------------------
11595"##,
11596        default_severity: Severity::Allow,
11597        warn_since: None,
11598        deny_since: None,
11599    },
11600    Lint {
11601        label: "panic_abort",
11602        description: r##"# `panic_abort`
11603
11604
11605
11606The tracking issue for this feature is: [#32837]
11607
11608[#32837]: https://github.com/rust-lang/rust/issues/32837
11609
11610------------------------
11611"##,
11612        default_severity: Severity::Allow,
11613        warn_since: None,
11614        deny_since: None,
11615    },
11616    Lint {
11617        label: "panic_always_abort",
11618        description: r##"# `panic_always_abort`
11619
11620
11621
11622The tracking issue for this feature is: [#84438]
11623
11624[#84438]: https://github.com/rust-lang/rust/issues/84438
11625
11626------------------------
11627"##,
11628        default_severity: Severity::Allow,
11629        warn_since: None,
11630        deny_since: None,
11631    },
11632    Lint {
11633        label: "panic_backtrace_config",
11634        description: r##"# `panic_backtrace_config`
11635
11636
11637
11638The tracking issue for this feature is: [#93346]
11639
11640[#93346]: https://github.com/rust-lang/rust/issues/93346
11641
11642------------------------
11643"##,
11644        default_severity: Severity::Allow,
11645        warn_since: None,
11646        deny_since: None,
11647    },
11648    Lint {
11649        label: "panic_can_unwind",
11650        description: r##"# `panic_can_unwind`
11651
11652
11653
11654The tracking issue for this feature is: [#92988]
11655
11656[#92988]: https://github.com/rust-lang/rust/issues/92988
11657
11658------------------------
11659"##,
11660        default_severity: Severity::Allow,
11661        warn_since: None,
11662        deny_since: None,
11663    },
11664    Lint {
11665        label: "panic_internals",
11666        description: r##"# `panic_internals`
11667
11668
11669
11670This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
11671
11672------------------------
11673"##,
11674        default_severity: Severity::Allow,
11675        warn_since: None,
11676        deny_since: None,
11677    },
11678    Lint {
11679        label: "panic_runtime",
11680        description: r##"# `panic_runtime`
11681
11682Allows using the `#![panic_runtime]` attribute.
11683
11684The tracking issue for this feature is: [#32837]
11685
11686[#32837]: https://github.com/rust-lang/rust/issues/32837
11687
11688------------------------
11689"##,
11690        default_severity: Severity::Allow,
11691        warn_since: None,
11692        deny_since: None,
11693    },
11694    Lint {
11695        label: "panic_unwind",
11696        description: r##"# `panic_unwind`
11697
11698
11699
11700The tracking issue for this feature is: [#32837]
11701
11702[#32837]: https://github.com/rust-lang/rust/issues/32837
11703
11704------------------------
11705"##,
11706        default_severity: Severity::Allow,
11707        warn_since: None,
11708        deny_since: None,
11709    },
11710    Lint {
11711        label: "panic_update_hook",
11712        description: r##"# `panic_update_hook`
11713
11714
11715
11716The tracking issue for this feature is: [#92649]
11717
11718[#92649]: https://github.com/rust-lang/rust/issues/92649
11719
11720------------------------
11721"##,
11722        default_severity: Severity::Allow,
11723        warn_since: None,
11724        deny_since: None,
11725    },
11726    Lint {
11727        label: "partial_ord_chaining_methods",
11728        description: r##"# `partial_ord_chaining_methods`
11729
11730
11731
11732This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
11733
11734------------------------
11735"##,
11736        default_severity: Severity::Allow,
11737        warn_since: None,
11738        deny_since: None,
11739    },
11740    Lint {
11741        label: "patchable_function_entry",
11742        description: r##"# `patchable_function_entry`
11743
11744Allows specifying nop padding on functions for dynamic patching.
11745
11746The tracking issue for this feature is: [#123115]
11747
11748[#123115]: https://github.com/rust-lang/rust/issues/123115
11749
11750------------------------
11751"##,
11752        default_severity: Severity::Allow,
11753        warn_since: None,
11754        deny_since: None,
11755    },
11756    Lint {
11757        label: "path_absolute_method",
11758        description: r##"# `path_absolute_method`
11759
11760
11761
11762The tracking issue for this feature is: [#153328]
11763
11764[#153328]: https://github.com/rust-lang/rust/issues/153328
11765
11766------------------------
11767"##,
11768        default_severity: Severity::Allow,
11769        warn_since: None,
11770        deny_since: None,
11771    },
11772    Lint {
11773        label: "path_is_empty",
11774        description: r##"# `path_is_empty`
11775
11776
11777
11778The tracking issue for this feature is: [#148494]
11779
11780[#148494]: https://github.com/rust-lang/rust/issues/148494
11781
11782------------------------
11783"##,
11784        default_severity: Severity::Allow,
11785        warn_since: None,
11786        deny_since: None,
11787    },
11788    Lint {
11789        label: "path_trailing_sep",
11790        description: r##"# `path_trailing_sep`
11791
11792
11793
11794The tracking issue for this feature is: [#142503]
11795
11796[#142503]: https://github.com/rust-lang/rust/issues/142503
11797
11798------------------------
11799"##,
11800        default_severity: Severity::Allow,
11801        warn_since: None,
11802        deny_since: None,
11803    },
11804    Lint {
11805        label: "pattern",
11806        description: r##"# `pattern`
11807
11808
11809
11810The tracking issue for this feature is: [#27721]
11811
11812[#27721]: https://github.com/rust-lang/rust/issues/27721
11813
11814------------------------
11815"##,
11816        default_severity: Severity::Allow,
11817        warn_since: None,
11818        deny_since: None,
11819    },
11820    Lint {
11821        label: "pattern_complexity_limit",
11822        description: r##"# `pattern_complexity_limit`
11823
11824Set the maximum pattern complexity allowed (not limited by default).
11825
11826This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
11827
11828------------------------
11829"##,
11830        default_severity: Severity::Allow,
11831        warn_since: None,
11832        deny_since: None,
11833    },
11834    Lint {
11835        label: "pattern_type_macro",
11836        description: r##"# `pattern_type_macro`
11837
11838
11839
11840The tracking issue for this feature is: [#123646]
11841
11842[#123646]: https://github.com/rust-lang/rust/issues/123646
11843
11844------------------------
11845"##,
11846        default_severity: Severity::Allow,
11847        warn_since: None,
11848        deny_since: None,
11849    },
11850    Lint {
11851        label: "pattern_type_range_trait",
11852        description: r##"# `pattern_type_range_trait`
11853
11854
11855
11856The tracking issue for this feature is: [#123646]
11857
11858[#123646]: https://github.com/rust-lang/rust/issues/123646
11859
11860------------------------
11861"##,
11862        default_severity: Severity::Allow,
11863        warn_since: None,
11864        deny_since: None,
11865    },
11866    Lint {
11867        label: "pattern_types",
11868        description: r##"# `pattern_types`
11869
11870Allows using pattern types.
11871
11872The tracking issue for this feature is: [#123646]
11873
11874[#123646]: https://github.com/rust-lang/rust/issues/123646
11875
11876------------------------
11877"##,
11878        default_severity: Severity::Allow,
11879        warn_since: None,
11880        deny_since: None,
11881    },
11882    Lint {
11883        label: "peer_credentials_unix_socket",
11884        description: r##"# `peer_credentials_unix_socket`
11885
11886
11887
11888The tracking issue for this feature is: [#42839]
11889
11890[#42839]: https://github.com/rust-lang/rust/issues/42839
11891
11892------------------------
11893"##,
11894        default_severity: Severity::Allow,
11895        warn_since: None,
11896        deny_since: None,
11897    },
11898    Lint {
11899        label: "phantom_variance_markers",
11900        description: r##"# `phantom_variance_markers`
11901
11902
11903
11904The tracking issue for this feature is: [#135806]
11905
11906[#135806]: https://github.com/rust-lang/rust/issues/135806
11907
11908------------------------
11909"##,
11910        default_severity: Severity::Allow,
11911        warn_since: None,
11912        deny_since: None,
11913    },
11914    Lint {
11915        label: "pin_coerce_unsized_trait",
11916        description: r##"# `pin_coerce_unsized_trait`
11917
11918
11919
11920The tracking issue for this feature is: [#150112]
11921
11922[#150112]: https://github.com/rust-lang/rust/issues/150112
11923
11924------------------------
11925"##,
11926        default_severity: Severity::Allow,
11927        warn_since: None,
11928        deny_since: None,
11929    },
11930    Lint {
11931        label: "pin_derefmut_internals",
11932        description: r##"# `pin_derefmut_internals`
11933
11934
11935
11936This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
11937
11938------------------------
11939"##,
11940        default_severity: Severity::Allow,
11941        warn_since: None,
11942        deny_since: None,
11943    },
11944    Lint {
11945        label: "pin_ergonomics",
11946        description: r##"# `pin_ergonomics`
11947
11948Experimental features that make `Pin` more ergonomic.
11949
11950The tracking issue for this feature is: [#130494]
11951
11952[#130494]: https://github.com/rust-lang/rust/issues/130494
11953
11954------------------------
11955"##,
11956        default_severity: Severity::Allow,
11957        warn_since: None,
11958        deny_since: None,
11959    },
11960    Lint {
11961        label: "pointer_is_aligned_to",
11962        description: r##"# `pointer_is_aligned_to`
11963
11964
11965
11966The tracking issue for this feature is: [#96284]
11967
11968[#96284]: https://github.com/rust-lang/rust/issues/96284
11969
11970------------------------
11971"##,
11972        default_severity: Severity::Allow,
11973        warn_since: None,
11974        deny_since: None,
11975    },
11976    Lint {
11977        label: "pointer_try_cast_aligned",
11978        description: r##"# `pointer_try_cast_aligned`
11979
11980
11981
11982The tracking issue for this feature is: [#141221]
11983
11984[#141221]: https://github.com/rust-lang/rust/issues/141221
11985
11986------------------------
11987"##,
11988        default_severity: Severity::Allow,
11989        warn_since: None,
11990        deny_since: None,
11991    },
11992    Lint {
11993        label: "portable_simd",
11994        description: r##"# `portable_simd`
11995
11996
11997
11998The tracking issue for this feature is: [#86656]
11999
12000[#86656]: https://github.com/rust-lang/rust/issues/86656
12001
12002------------------------
12003"##,
12004        default_severity: Severity::Allow,
12005        warn_since: None,
12006        deny_since: None,
12007    },
12008    Lint {
12009        label: "postfix_match",
12010        description: r##"# `postfix-match`
12011
12012`postfix-match` adds the feature for matching upon values postfix
12013the expressions that generate the values.
12014
12015The tracking issue for this feature is: [#121618](https://github.com/rust-lang/rust/issues/121618).
12016
12017------------------------
12018
12019```rust,edition2021
12020#![feature(postfix_match)]
12021
12022enum Foo {
12023    Bar,
12024    Baz
12025}
12026
12027fn get_foo() -> Foo {
12028    Foo::Bar
12029}
12030
12031get_foo().match {
12032    Foo::Bar => {},
12033    Foo::Baz => panic!(),
12034}
12035```
12036"##,
12037        default_severity: Severity::Allow,
12038        warn_since: None,
12039        deny_since: None,
12040    },
12041    Lint {
12042        label: "powerpc_target_feature",
12043        description: r##"# `powerpc_target_feature`
12044
12045Target features on powerpc.
12046
12047The tracking issue for this feature is: [#150255]
12048
12049[#150255]: https://github.com/rust-lang/rust/issues/150255
12050
12051------------------------
12052"##,
12053        default_severity: Severity::Allow,
12054        warn_since: None,
12055        deny_since: None,
12056    },
12057    Lint {
12058        label: "prelude_future",
12059        description: r##"# `prelude_future`
12060
12061
12062
12063This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
12064
12065------------------------
12066"##,
12067        default_severity: Severity::Allow,
12068        warn_since: None,
12069        deny_since: None,
12070    },
12071    Lint {
12072        label: "prelude_import",
12073        description: r##"# `prelude_import`
12074
12075Allows using `#[prelude_import]` on glob `use` items.
12076
12077This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
12078
12079------------------------
12080"##,
12081        default_severity: Severity::Allow,
12082        warn_since: None,
12083        deny_since: None,
12084    },
12085    Lint {
12086        label: "prelude_next",
12087        description: r##"# `prelude_next`
12088
12089
12090
12091This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
12092
12093------------------------
12094"##,
12095        default_severity: Severity::Allow,
12096        warn_since: None,
12097        deny_since: None,
12098    },
12099    Lint {
12100        label: "prfchw_target_feature",
12101        description: r##"# `prfchw_target_feature`
12102
12103The prfchw target feature on x86.
12104
12105The tracking issue for this feature is: [#150256]
12106
12107[#150256]: https://github.com/rust-lang/rust/issues/150256
12108
12109------------------------
12110"##,
12111        default_severity: Severity::Allow,
12112        warn_since: None,
12113        deny_since: None,
12114    },
12115    Lint {
12116        label: "print_internals",
12117        description: r##"# `print_internals`
12118
12119This feature is internal to the Rust compiler and is not intended for general use.
12120
12121------------------------
12122"##,
12123        default_severity: Severity::Allow,
12124        warn_since: None,
12125        deny_since: None,
12126    },
12127    Lint {
12128        label: "proc_macro_def_site",
12129        description: r##"# `proc_macro_def_site`
12130
12131
12132
12133The tracking issue for this feature is: [#54724]
12134
12135[#54724]: https://github.com/rust-lang/rust/issues/54724
12136
12137------------------------
12138"##,
12139        default_severity: Severity::Allow,
12140        warn_since: None,
12141        deny_since: None,
12142    },
12143    Lint {
12144        label: "proc_macro_diagnostic",
12145        description: r##"# `proc_macro_diagnostic`
12146
12147
12148
12149The tracking issue for this feature is: [#54140]
12150
12151[#54140]: https://github.com/rust-lang/rust/issues/54140
12152
12153------------------------
12154"##,
12155        default_severity: Severity::Allow,
12156        warn_since: None,
12157        deny_since: None,
12158    },
12159    Lint {
12160        label: "proc_macro_expand",
12161        description: r##"# `proc_macro_expand`
12162
12163
12164
12165The tracking issue for this feature is: [#90765]
12166
12167[#90765]: https://github.com/rust-lang/rust/issues/90765
12168
12169------------------------
12170"##,
12171        default_severity: Severity::Allow,
12172        warn_since: None,
12173        deny_since: None,
12174    },
12175    Lint {
12176        label: "proc_macro_hygiene",
12177        description: r##"# `proc_macro_hygiene`
12178
12179Allows macro attributes on expressions, statements and non-inline modules.
12180
12181The tracking issue for this feature is: [#54727]
12182
12183[#54727]: https://github.com/rust-lang/rust/issues/54727
12184
12185------------------------
12186"##,
12187        default_severity: Severity::Allow,
12188        warn_since: None,
12189        deny_since: None,
12190    },
12191    Lint {
12192        label: "proc_macro_internals",
12193        description: r##"# `proc_macro_internals`
12194
12195
12196
12197The tracking issue for this feature is: [#27812]
12198
12199[#27812]: https://github.com/rust-lang/rust/issues/27812
12200
12201------------------------
12202"##,
12203        default_severity: Severity::Allow,
12204        warn_since: None,
12205        deny_since: None,
12206    },
12207    Lint {
12208        label: "proc_macro_quote",
12209        description: r##"# `proc_macro_quote`
12210
12211
12212
12213The tracking issue for this feature is: [#54722]
12214
12215[#54722]: https://github.com/rust-lang/rust/issues/54722
12216
12217------------------------
12218"##,
12219        default_severity: Severity::Allow,
12220        warn_since: None,
12221        deny_since: None,
12222    },
12223    Lint {
12224        label: "proc_macro_span",
12225        description: r##"# `proc_macro_span`
12226
12227
12228
12229The tracking issue for this feature is: [#54725]
12230
12231[#54725]: https://github.com/rust-lang/rust/issues/54725
12232
12233------------------------
12234"##,
12235        default_severity: Severity::Allow,
12236        warn_since: None,
12237        deny_since: None,
12238    },
12239    Lint {
12240        label: "proc_macro_totokens",
12241        description: r##"# `proc_macro_totokens`
12242
12243
12244
12245The tracking issue for this feature is: [#130977]
12246
12247[#130977]: https://github.com/rust-lang/rust/issues/130977
12248
12249------------------------
12250"##,
12251        default_severity: Severity::Allow,
12252        warn_since: None,
12253        deny_since: None,
12254    },
12255    Lint {
12256        label: "proc_macro_tracked_env",
12257        description: r##"# `proc_macro_tracked_env`
12258
12259
12260
12261The tracking issue for this feature is: [#99515]
12262
12263[#99515]: https://github.com/rust-lang/rust/issues/99515
12264
12265------------------------
12266"##,
12267        default_severity: Severity::Allow,
12268        warn_since: None,
12269        deny_since: None,
12270    },
12271    Lint {
12272        label: "proc_macro_tracked_path",
12273        description: r##"# `proc_macro_tracked_path`
12274
12275
12276
12277The tracking issue for this feature is: [#99515]
12278
12279[#99515]: https://github.com/rust-lang/rust/issues/99515
12280
12281------------------------
12282"##,
12283        default_severity: Severity::Allow,
12284        warn_since: None,
12285        deny_since: None,
12286    },
12287    Lint {
12288        label: "proc_macro_value",
12289        description: r##"# `proc_macro_value`
12290
12291
12292
12293The tracking issue for this feature is: [#136652]
12294
12295[#136652]: https://github.com/rust-lang/rust/issues/136652
12296
12297------------------------
12298"##,
12299        default_severity: Severity::Allow,
12300        warn_since: None,
12301        deny_since: None,
12302    },
12303    Lint {
12304        label: "process_chroot",
12305        description: r##"# `process_chroot`
12306
12307
12308
12309The tracking issue for this feature is: [#141298]
12310
12311[#141298]: https://github.com/rust-lang/rust/issues/141298
12312
12313------------------------
12314"##,
12315        default_severity: Severity::Allow,
12316        warn_since: None,
12317        deny_since: None,
12318    },
12319    Lint {
12320        label: "process_exitcode_internals",
12321        description: r##"# `process_exitcode_internals`
12322
12323
12324
12325This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
12326
12327------------------------
12328"##,
12329        default_severity: Severity::Allow,
12330        warn_since: None,
12331        deny_since: None,
12332    },
12333    Lint {
12334        label: "process_internals",
12335        description: r##"# `process_internals`
12336
12337
12338
12339This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
12340
12341------------------------
12342"##,
12343        default_severity: Severity::Allow,
12344        warn_since: None,
12345        deny_since: None,
12346    },
12347    Lint {
12348        label: "process_setsid",
12349        description: r##"# `process_setsid`
12350
12351
12352
12353The tracking issue for this feature is: [#105376]
12354
12355[#105376]: https://github.com/rust-lang/rust/issues/105376
12356
12357------------------------
12358"##,
12359        default_severity: Severity::Allow,
12360        warn_since: None,
12361        deny_since: None,
12362    },
12363    Lint {
12364        label: "profiler_runtime",
12365        description: r##"# `profiler_runtime`
12366
12367The tracking issue for this feature is: [#42524](https://github.com/rust-lang/rust/issues/42524).
12368
12369------------------------
12370"##,
12371        default_severity: Severity::Allow,
12372        warn_since: None,
12373        deny_since: None,
12374    },
12375    Lint {
12376        label: "profiler_runtime_lib",
12377        description: r##"# `profiler_runtime_lib`
12378
12379This feature is internal to the Rust compiler and is not intended for general use.
12380
12381------------------------
12382"##,
12383        default_severity: Severity::Allow,
12384        warn_since: None,
12385        deny_since: None,
12386    },
12387    Lint {
12388        label: "profiling_marker_api",
12389        description: r##"# `profiling_marker_api`
12390
12391
12392
12393The tracking issue for this feature is: [#148197]
12394
12395[#148197]: https://github.com/rust-lang/rust/issues/148197
12396
12397------------------------
12398"##,
12399        default_severity: Severity::Allow,
12400        warn_since: None,
12401        deny_since: None,
12402    },
12403    Lint {
12404        label: "ptr_alignment_type",
12405        description: r##"# `ptr_alignment_type`
12406
12407
12408
12409The tracking issue for this feature is: [#102070]
12410
12411[#102070]: https://github.com/rust-lang/rust/issues/102070
12412
12413------------------------
12414"##,
12415        default_severity: Severity::Allow,
12416        warn_since: None,
12417        deny_since: None,
12418    },
12419    Lint {
12420        label: "ptr_as_uninit",
12421        description: r##"# `ptr_as_uninit`
12422
12423
12424
12425The tracking issue for this feature is: [#75402]
12426
12427[#75402]: https://github.com/rust-lang/rust/issues/75402
12428
12429------------------------
12430"##,
12431        default_severity: Severity::Allow,
12432        warn_since: None,
12433        deny_since: None,
12434    },
12435    Lint {
12436        label: "ptr_cast_array",
12437        description: r##"# `ptr_cast_array`
12438
12439
12440
12441The tracking issue for this feature is: [#144514]
12442
12443[#144514]: https://github.com/rust-lang/rust/issues/144514
12444
12445------------------------
12446"##,
12447        default_severity: Severity::Allow,
12448        warn_since: None,
12449        deny_since: None,
12450    },
12451    Lint {
12452        label: "ptr_cast_slice",
12453        description: r##"# `ptr_cast_slice`
12454
12455
12456
12457The tracking issue for this feature is: [#149103]
12458
12459[#149103]: https://github.com/rust-lang/rust/issues/149103
12460
12461------------------------
12462"##,
12463        default_severity: Severity::Allow,
12464        warn_since: None,
12465        deny_since: None,
12466    },
12467    Lint {
12468        label: "ptr_internals",
12469        description: r##"# `ptr_internals`
12470
12471
12472
12473This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
12474
12475------------------------
12476"##,
12477        default_severity: Severity::Allow,
12478        warn_since: None,
12479        deny_since: None,
12480    },
12481    Lint {
12482        label: "ptr_mask",
12483        description: r##"# `ptr_mask`
12484
12485
12486
12487The tracking issue for this feature is: [#98290]
12488
12489[#98290]: https://github.com/rust-lang/rust/issues/98290
12490
12491------------------------
12492"##,
12493        default_severity: Severity::Allow,
12494        warn_since: None,
12495        deny_since: None,
12496    },
12497    Lint {
12498        label: "ptr_metadata",
12499        description: r##"# `ptr_metadata`
12500
12501
12502
12503The tracking issue for this feature is: [#81513]
12504
12505[#81513]: https://github.com/rust-lang/rust/issues/81513
12506
12507------------------------
12508"##,
12509        default_severity: Severity::Allow,
12510        warn_since: None,
12511        deny_since: None,
12512    },
12513    Lint {
12514        label: "pub_crate_should_not_need_unstable_attr",
12515        description: r##"# `pub_crate_should_not_need_unstable_attr`
12516
12517
12518
12519This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
12520
12521------------------------
12522"##,
12523        default_severity: Severity::Allow,
12524        warn_since: None,
12525        deny_since: None,
12526    },
12527    Lint {
12528        label: "random",
12529        description: r##"# `random`
12530
12531
12532
12533The tracking issue for this feature is: [#130703]
12534
12535[#130703]: https://github.com/rust-lang/rust/issues/130703
12536
12537------------------------
12538"##,
12539        default_severity: Severity::Allow,
12540        warn_since: None,
12541        deny_since: None,
12542    },
12543    Lint {
12544        label: "range_bounds_is_empty",
12545        description: r##"# `range_bounds_is_empty`
12546
12547
12548
12549The tracking issue for this feature is: [#137300]
12550
12551[#137300]: https://github.com/rust-lang/rust/issues/137300
12552
12553------------------------
12554"##,
12555        default_severity: Severity::Allow,
12556        warn_since: None,
12557        deny_since: None,
12558    },
12559    Lint {
12560        label: "range_into_bounds",
12561        description: r##"# `range_into_bounds`
12562
12563
12564
12565The tracking issue for this feature is: [#136903]
12566
12567[#136903]: https://github.com/rust-lang/rust/issues/136903
12568
12569------------------------
12570"##,
12571        default_severity: Severity::Allow,
12572        warn_since: None,
12573        deny_since: None,
12574    },
12575    Lint {
12576        label: "raw_dylib_elf",
12577        description: r##"# `raw_dylib_elf`
12578
12579Allows the use of raw-dylibs on ELF platforms
12580
12581The tracking issue for this feature is: [#135694]
12582
12583[#135694]: https://github.com/rust-lang/rust/issues/135694
12584
12585------------------------
12586"##,
12587        default_severity: Severity::Allow,
12588        warn_since: None,
12589        deny_since: None,
12590    },
12591    Lint {
12592        label: "raw_os_error_ty",
12593        description: r##"# `raw_os_error_ty`
12594
12595
12596
12597The tracking issue for this feature is: [#107792]
12598
12599[#107792]: https://github.com/rust-lang/rust/issues/107792
12600
12601------------------------
12602"##,
12603        default_severity: Severity::Allow,
12604        warn_since: None,
12605        deny_since: None,
12606    },
12607    Lint {
12608        label: "raw_slice_split",
12609        description: r##"# `raw_slice_split`
12610
12611
12612
12613The tracking issue for this feature is: [#95595]
12614
12615[#95595]: https://github.com/rust-lang/rust/issues/95595
12616
12617------------------------
12618"##,
12619        default_severity: Severity::Allow,
12620        warn_since: None,
12621        deny_since: None,
12622    },
12623    Lint {
12624        label: "raw_vec_internals",
12625        description: r##"# `raw_vec_internals`
12626
12627
12628
12629This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
12630
12631------------------------
12632"##,
12633        default_severity: Severity::Allow,
12634        warn_since: None,
12635        deny_since: None,
12636    },
12637    Lint {
12638        label: "read_array",
12639        description: r##"# `read_array`
12640
12641
12642
12643The tracking issue for this feature is: [#148848]
12644
12645[#148848]: https://github.com/rust-lang/rust/issues/148848
12646
12647------------------------
12648"##,
12649        default_severity: Severity::Allow,
12650        warn_since: None,
12651        deny_since: None,
12652    },
12653    Lint {
12654        label: "read_buf",
12655        description: r##"# `read_buf`
12656
12657
12658
12659The tracking issue for this feature is: [#78485]
12660
12661[#78485]: https://github.com/rust-lang/rust/issues/78485
12662
12663------------------------
12664"##,
12665        default_severity: Severity::Allow,
12666        warn_since: None,
12667        deny_since: None,
12668    },
12669    Lint {
12670        label: "read_buf_at",
12671        description: r##"# `read_buf_at`
12672
12673
12674
12675The tracking issue for this feature is: [#140771]
12676
12677[#140771]: https://github.com/rust-lang/rust/issues/140771
12678
12679------------------------
12680"##,
12681        default_severity: Severity::Allow,
12682        warn_since: None,
12683        deny_since: None,
12684    },
12685    Lint {
12686        label: "reborrow",
12687        description: r##"# `reborrow`
12688
12689
12690
12691The tracking issue for this feature is: [#145612]
12692
12693[#145612]: https://github.com/rust-lang/rust/issues/145612
12694
12695------------------------
12696"##,
12697        default_severity: Severity::Allow,
12698        warn_since: None,
12699        deny_since: None,
12700    },
12701    Lint {
12702        label: "reentrant_lock",
12703        description: r##"# `reentrant_lock`
12704
12705
12706
12707The tracking issue for this feature is: [#121440]
12708
12709[#121440]: https://github.com/rust-lang/rust/issues/121440
12710
12711------------------------
12712"##,
12713        default_severity: Severity::Allow,
12714        warn_since: None,
12715        deny_since: None,
12716    },
12717    Lint {
12718        label: "reentrant_lock_data_ptr",
12719        description: r##"# `reentrant_lock_data_ptr`
12720
12721
12722
12723The tracking issue for this feature is: [#140368]
12724
12725[#140368]: https://github.com/rust-lang/rust/issues/140368
12726
12727------------------------
12728"##,
12729        default_severity: Severity::Allow,
12730        warn_since: None,
12731        deny_since: None,
12732    },
12733    Lint {
12734        label: "ref_pat_eat_one_layer_2024",
12735        description: r##"# `ref_pat_eat_one_layer_2024`
12736
12737The tracking issue for this feature is: [#123076]
12738
12739[#123076]: https://github.com/rust-lang/rust/issues/123076
12740
12741---
12742
12743This feature is incomplete and not yet intended for general use.
12744
12745This implements experimental, Edition-dependent match ergonomics under consideration for inclusion
12746in Rust, allowing `&` patterns in more places. For example:
12747
12748```rust,edition2024
12749#![feature(ref_pat_eat_one_layer_2024)]
12750#![allow(incomplete_features)]
12751#
12752# // Tests type equality in a way that avoids coercing `&&T` or `&mut T` to `&T`.
12753# trait Eq<T> {}
12754# impl<T> Eq<T> for T {}
12755# fn has_type<T>(_: impl Eq<T>) {}
12756
12757// `&` can match against a `ref` binding mode instead of a reference type:
12758let (x, &y) = &(0, 1);
12759has_type::<&u8>(x);
12760has_type::<u8>(y);
12761
12762// `&` can match against `&mut` references:
12763let &z = &mut 2;
12764has_type::<u8>(z);
12765```
12766
12767For specifics, see the corresponding typing rules for [Editions 2021 and earlier] and for
12768[Editions 2024 and later]. For more information on binding modes, see [The Rust Reference].
12769
12770For alternative experimental match ergonomics, see the feature
12771[`ref_pat_eat_one_layer_2024_structural`](./ref-pat-eat-one-layer-2024-structural.md).
12772
12773[Editions 2021 and earlier]: https://nadrieril.github.io/typing-rust-patterns/?compare=false&opts1=AQEBAQIBAQABAAAAAQEBAAEBAAABAAA%3D&mode=rules&do_cmp=false
12774[Editions 2024 and later]: https://nadrieril.github.io/typing-rust-patterns/?compare=false&opts1=AQEBAAABAQABAgIAAQEBAAEBAAABAAA%3D&mode=rules&do_cmp=false
12775[The Rust Reference]: https://doc.rust-lang.org/reference/patterns.html#binding-modes
12776"##,
12777        default_severity: Severity::Allow,
12778        warn_since: None,
12779        deny_since: None,
12780    },
12781    Lint {
12782        label: "ref_pat_eat_one_layer_2024_structural",
12783        description: r##"# `ref_pat_eat_one_layer_2024_structural`
12784
12785The tracking issue for this feature is: [#123076]
12786
12787[#123076]: https://github.com/rust-lang/rust/issues/123076
12788
12789---
12790
12791This feature is incomplete and not yet intended for general use.
12792
12793This implements experimental, Edition-dependent match ergonomics under consideration for inclusion
12794in Rust, allowing `&` patterns in more places. For example:
12795```rust,edition2024
12796#![feature(ref_pat_eat_one_layer_2024_structural)]
12797#![allow(incomplete_features)]
12798#
12799# // Tests type equality in a way that avoids coercing `&&T` or `&mut T` to `&T`.
12800# trait Eq<T> {}
12801# impl<T> Eq<T> for T {}
12802# fn has_type<T>(_: impl Eq<T>) {}
12803
12804// `&` can match against a `ref` binding mode instead of a reference type:
12805let (x, &y) = &(0, 1);
12806has_type::<&u8>(x);
12807has_type::<u8>(y);
12808
12809// `&` can match against `&mut` references:
12810let &z = &mut 2;
12811has_type::<u8>(z);
12812```
12813
12814For specifics, see the corresponding typing rules for [Editions 2021 and earlier] and for
12815[Editions 2024 and later]. For more information on binding modes, see [The Rust Reference].
12816
12817For alternative experimental match ergonomics, see the feature
12818[`ref_pat_eat_one_layer_2024`](./ref-pat-eat-one-layer-2024.md).
12819
12820[Editions 2021 and earlier]: https://nadrieril.github.io/typing-rust-patterns/?compare=false&opts1=AQEBAQIBAQEBAAAAAAAAAAAAAAAAAAA%3D&mode=rules&do_cmp=false
12821[Editions 2024 and later]: https://nadrieril.github.io/typing-rust-patterns/?compare=false&opts1=AQEBAgEBAQEBAgIAAAAAAAAAAAAAAAA%3D&mode=rules&do_cmp=false
12822[The Rust Reference]: https://doc.rust-lang.org/reference/patterns.html#binding-modes
12823"##,
12824        default_severity: Severity::Allow,
12825        warn_since: None,
12826        deny_since: None,
12827    },
12828    Lint {
12829        label: "refcell_try_map",
12830        description: r##"# `refcell_try_map`
12831
12832
12833
12834The tracking issue for this feature is: [#143801]
12835
12836[#143801]: https://github.com/rust-lang/rust/issues/143801
12837
12838------------------------
12839"##,
12840        default_severity: Severity::Allow,
12841        warn_since: None,
12842        deny_since: None,
12843    },
12844    Lint {
12845        label: "register_tool",
12846        description: r##"# `register_tool`
12847
12848The tracking issue for this feature is: [#66079]
12849
12850[#66079]: https://github.com/rust-lang/rust/issues/66079
12851
12852------------------------
12853
12854The `register_tool` language feature informs the compiler that attributes in your code are meant to be used with tools other than the compiler itself. This can be useful if your code has semantic meaning without the external tool, but enables additional features when the tool is present.
12855
12856`register_tool` also allows configuring lint levels for external tools.
12857
12858Tool attributes are only meant for ignorable attributes. If your code *changes* meaning when the attribute is present, it should not use a tool attribute (because it cannot be compiled with anything other than the external tool, and in a sense is a fork of the language).
12859
12860------------------------
12861
12862`#![register_tool(tool)]` is an attribute, and is only valid at the crate root.
12863Attributes using the registered tool are checked for valid syntax, and lint attributes are checked to be in a valid format. However, the compiler cannot validate the semantics of the attribute, nor can it tell whether the configured lint is present in the external tool.
12864
12865Semantically, `clippy::*`, `rustdoc::*`, and `rustfmt::*` lints and attributes all behave as if `#![register_tool(clippy, rustdoc, rustfmt)]` were injected into the crate root, except that the `rustdoc` namespace can only be used for lints, not for attributes.
12866When compiling with `-Z unstable-features`, `rustc::*` lints can also be used. Like `rustdoc`, the `rustc` namespace can only be used with lints, not attributes.
12867
12868The compiler will emit an error if it encounters a lint/attribute whose namespace isn't a registered tool.
12869
12870Tool namespaces cannot be nested; `register_tool(main_tool::subtool)` is an error.
12871
12872## Examples
12873
12874Tool attributes:
12875
12876```rust
12877#![feature(register_tool)]
12878#![register_tool(c2rust)]
12879
12880// Mark which C header file this module was generated from.
12881#[c2rust::header_src = "operations.h"]
12882pub mod operations_h {
12883    use std::ffi::c_int;
12884
12885    // Mark which source line this struct was generated from.
12886    #[c2rust::src_loc = "11:0"]
12887    pub struct Point {
12888        pub x: c_int,
12889        pub y: c_int,
12890    }
12891}
12892```
12893
12894Tool lints:
12895
12896```
12897#![feature(register_tool)]
12898#![register_tool(bevy)]
12899#![deny(bevy::duplicate_bevy_dependencies)]
12900```
12901"##,
12902        default_severity: Severity::Allow,
12903        warn_since: None,
12904        deny_since: None,
12905    },
12906    Lint {
12907        label: "repr_simd",
12908        description: r##"# `repr_simd`
12909
12910Allows `repr(simd)` and importing the various simd intrinsics.
12911
12912The tracking issue for this feature is: [#27731]
12913
12914[#27731]: https://github.com/rust-lang/rust/issues/27731
12915
12916------------------------
12917"##,
12918        default_severity: Severity::Allow,
12919        warn_since: None,
12920        deny_since: None,
12921    },
12922    Lint {
12923        label: "restricted_std",
12924        description: r##"# `restricted_std`
12925
12926
12927
12928This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
12929
12930------------------------
12931"##,
12932        default_severity: Severity::Allow,
12933        warn_since: None,
12934        deny_since: None,
12935    },
12936    Lint {
12937        label: "result_option_map_or_default",
12938        description: r##"# `result_option_map_or_default`
12939
12940
12941
12942The tracking issue for this feature is: [#138099]
12943
12944[#138099]: https://github.com/rust-lang/rust/issues/138099
12945
12946------------------------
12947"##,
12948        default_severity: Severity::Allow,
12949        warn_since: None,
12950        deny_since: None,
12951    },
12952    Lint {
12953        label: "return_type_notation",
12954        description: r##"# `return_type_notation`
12955
12956Allows bounding the return type of AFIT/RPITIT.
12957
12958The tracking issue for this feature is: [#109417]
12959
12960[#109417]: https://github.com/rust-lang/rust/issues/109417
12961
12962------------------------
12963"##,
12964        default_severity: Severity::Allow,
12965        warn_since: None,
12966        deny_since: None,
12967    },
12968    Lint {
12969        label: "rev_into_inner",
12970        description: r##"# `rev_into_inner`
12971
12972
12973
12974The tracking issue for this feature is: [#144277]
12975
12976[#144277]: https://github.com/rust-lang/rust/issues/144277
12977
12978------------------------
12979"##,
12980        default_severity: Severity::Allow,
12981        warn_since: None,
12982        deny_since: None,
12983    },
12984    Lint {
12985        label: "riscv_target_feature",
12986        description: r##"# `riscv_target_feature`
12987
12988Target features on riscv.
12989
12990The tracking issue for this feature is: [#150257]
12991
12992[#150257]: https://github.com/rust-lang/rust/issues/150257
12993
12994------------------------
12995"##,
12996        default_severity: Severity::Allow,
12997        warn_since: None,
12998        deny_since: None,
12999    },
13000    Lint {
13001        label: "rt",
13002        description: r##"# `rt`
13003
13004This feature is internal to the Rust compiler and is not intended for general use.
13005
13006------------------------
13007"##,
13008        default_severity: Severity::Allow,
13009        warn_since: None,
13010        deny_since: None,
13011    },
13012    Lint {
13013        label: "rtm_target_feature",
13014        description: r##"# `rtm_target_feature`
13015
13016The rtm target feature on x86.
13017
13018The tracking issue for this feature is: [#150258]
13019
13020[#150258]: https://github.com/rust-lang/rust/issues/150258
13021
13022------------------------
13023"##,
13024        default_severity: Severity::Allow,
13025        warn_since: None,
13026        deny_since: None,
13027    },
13028    Lint {
13029        label: "rust_cold_cc",
13030        description: r##"# `rust_cold_cc`
13031
13032Allows `extern "rust-cold"`.
13033
13034The tracking issue for this feature is: [#97544]
13035
13036[#97544]: https://github.com/rust-lang/rust/issues/97544
13037
13038------------------------
13039"##,
13040        default_severity: Severity::Allow,
13041        warn_since: None,
13042        deny_since: None,
13043    },
13044    Lint {
13045        label: "rust_preserve_none_cc",
13046        description: r##"# `rust_preserve_none_cc`
13047
13048Allows `extern "rust-preserve-none"`.
13049
13050The tracking issue for this feature is: [#151401]
13051
13052[#151401]: https://github.com/rust-lang/rust/issues/151401
13053
13054------------------------
13055"##,
13056        default_severity: Severity::Allow,
13057        warn_since: None,
13058        deny_since: None,
13059    },
13060    Lint {
13061        label: "rustc_attrs",
13062        description: r##"# `rustc_attrs`
13063
13064This feature has no tracking issue, and is therefore internal to
13065the compiler, not being intended for general use.
13066
13067Note: `rustc_attrs` enables many rustc-internal attributes and this page
13068only discuss a few of them.
13069
13070------------------------
13071
13072The `rustc_attrs` feature allows debugging rustc type layouts by using
13073`#[rustc_dump_layout(...)]` to debug layout at compile time (it even works
13074with `cargo check`) as an alternative to `rustc -Z print-type-sizes`
13075that is way more verbose.
13076
13077Options provided by `#[rustc_dump_layout(...)]` are `backend_repr`, `align`,
13078`debug`, `homogeneous_aggregate` and `size`.
13079Note that it only works on sized types without generics.
13080
13081## Examples
13082
13083```rust,compile_fail
13084#![feature(rustc_attrs)]
13085
13086#[rustc_dump_layout(backend_repr, size)]
13087pub enum X {
13088    Y(u8, u8, u8),
13089    Z(isize),
13090}
13091```
13092
13093When that is compiled, the compiler will error with something like
13094
13095```text
13096error: backend_repr: Aggregate { sized: true }
13097 --> src/lib.rs:4:1
13098  |
130994 | / pub enum T {
131005 | |     Y(u8, u8, u8),
131016 | |     Z(isize),
131027 | | }
13103  | |_^
13104
13105error: size: Size { raw: 16 }
13106 --> src/lib.rs:4:1
13107  |
131084 | / pub enum T {
131095 | |     Y(u8, u8, u8),
131106 | |     Z(isize),
131117 | | }
13112  | |_^
13113
13114error: aborting due to 2 previous errors
13115```
13116"##,
13117        default_severity: Severity::Allow,
13118        warn_since: None,
13119        deny_since: None,
13120    },
13121    Lint {
13122        label: "rustc_private",
13123        description: r##"# `rustc_private`
13124
13125The tracking issue for this feature is: [#27812]
13126
13127[#27812]: https://github.com/rust-lang/rust/issues/27812
13128
13129------------------------
13130
13131This feature allows access to unstable internal compiler crates such as `rustc_driver`.
13132
13133The presence of this feature changes the way the linkage format for dylibs is calculated in a way
13134that is necessary for linking against dylibs that statically link `std` (such as `rustc_driver`).
13135This makes this feature "viral" in linkage; its use in a given crate makes its use required in
13136dependent crates which link to it (including integration tests, which are built as separate crates).
13137
13138## Common linker failures related to missing LLVM libraries
13139
13140### When using `rustc-private` with Official Toolchains
13141
13142When using the `rustc_private` feature with official toolchains distributed via rustup, you'll need to install:
13143
131441. The `rustc-dev` component (provides compiler libraries)
131452. The `llvm-tools` component (provides LLVM libraries needed for linking)
13146
13147You can install these components using `rustup`:
13148
13149```text
13150rustup component add rustc-dev llvm-tools
13151```
13152
13153Without the `llvm-tools` component, you may encounter linking errors like:
13154
13155```text
13156error: linking with `cc` failed: exit status: 1
13157  |
13158  = note: rust-lld: error: unable to find library -lLLVM-{version}
13159```
13160
13161### When using `rustc-private` with Custom Toolchains
13162
13163For custom-built toolchains or environments not using rustup, different configuration may be required:
13164
13165- Ensure LLVM libraries are available in your library search paths
13166- You might need to configure library paths explicitly depending on your LLVM installation
13167"##,
13168        default_severity: Severity::Allow,
13169        warn_since: None,
13170        deny_since: None,
13171    },
13172    Lint {
13173        label: "rustdoc_internals",
13174        description: r##"# `rustdoc_internals`
13175
13176Allows using internal rustdoc features like `doc(keyword)`.
13177
13178The tracking issue for this feature is: [#90418]
13179
13180[#90418]: https://github.com/rust-lang/rust/issues/90418
13181
13182------------------------
13183"##,
13184        default_severity: Severity::Allow,
13185        warn_since: None,
13186        deny_since: None,
13187    },
13188    Lint {
13189        label: "rustdoc_missing_doc_code_examples",
13190        description: r##"# `rustdoc_missing_doc_code_examples`
13191
13192Allows using the `rustdoc::missing_doc_code_examples` lint
13193
13194The tracking issue for this feature is: [#101730]
13195
13196[#101730]: https://github.com/rust-lang/rust/issues/101730
13197
13198------------------------
13199"##,
13200        default_severity: Severity::Allow,
13201        warn_since: None,
13202        deny_since: None,
13203    },
13204    Lint {
13205        label: "rwlock_data_ptr",
13206        description: r##"# `rwlock_data_ptr`
13207
13208
13209
13210The tracking issue for this feature is: [#140368]
13211
13212[#140368]: https://github.com/rust-lang/rust/issues/140368
13213
13214------------------------
13215"##,
13216        default_severity: Severity::Allow,
13217        warn_since: None,
13218        deny_since: None,
13219    },
13220    Lint {
13221        label: "s390x_target_feature",
13222        description: r##"# `s390x_target_feature`
13223
13224Target features on s390x.
13225
13226The tracking issue for this feature is: [#150259]
13227
13228[#150259]: https://github.com/rust-lang/rust/issues/150259
13229
13230------------------------
13231"##,
13232        default_severity: Severity::Allow,
13233        warn_since: None,
13234        deny_since: None,
13235    },
13236    Lint {
13237        label: "sanitize",
13238        description: r##"# `sanitize`
13239
13240The tracking issue for this feature is: [#39699]
13241
13242[#39699]: https://github.com/rust-lang/rust/issues/39699
13243
13244------------------------
13245
13246The `sanitize` attribute can be used to selectively disable or enable sanitizer
13247instrumentation in an annotated function. This might be useful to: avoid
13248instrumentation overhead in a performance critical function, or avoid
13249instrumenting code that contains constructs unsupported by given sanitizer.
13250
13251The precise effect of this annotation depends on particular sanitizer in use.
13252For example, with `sanitize(thread = "off")`, the thread sanitizer will no
13253longer instrument non-atomic store / load operations, but it will instrument
13254atomic operations to avoid reporting false positives and provide meaning full
13255stack traces.
13256
13257This attribute was previously named `no_sanitize`.
13258
13259## Examples
13260
13261``` rust
13262#![feature(sanitize)]
13263
13264#[sanitize(address = "off")]
13265fn foo() {
13266  // ...
13267}
13268```
13269
13270It is also possible to disable sanitizers for entire modules and enable them
13271for single items or functions.
13272
13273```rust
13274#![feature(sanitize)]
13275
13276#[sanitize(address = "off")]
13277mod foo {
13278  fn unsanitized() {
13279    // ...
13280  }
13281
13282  #[sanitize(address = "on")]
13283  fn sanitized() {
13284    // ...
13285  }
13286}
13287```
13288
13289It's also applicable to impl blocks.
13290
13291```rust
13292#![feature(sanitize)]
13293
13294trait MyTrait {
13295  fn foo(&self);
13296  fn bar(&self);
13297}
13298
13299#[sanitize(address = "off")]
13300impl MyTrait for () {
13301  fn foo(&self) {
13302    // ...
13303  }
13304
13305  #[sanitize(address = "on")]
13306  fn bar(&self) {
13307    // ...
13308  }
13309}
13310```
13311"##,
13312        default_severity: Severity::Allow,
13313        warn_since: None,
13314        deny_since: None,
13315    },
13316    Lint {
13317        label: "sealed",
13318        description: r##"# `sealed`
13319
13320
13321
13322This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
13323
13324------------------------
13325"##,
13326        default_severity: Severity::Allow,
13327        warn_since: None,
13328        deny_since: None,
13329    },
13330    Lint {
13331        label: "seek_io_take_position",
13332        description: r##"# `seek_io_take_position`
13333
13334
13335
13336The tracking issue for this feature is: [#97227]
13337
13338[#97227]: https://github.com/rust-lang/rust/issues/97227
13339
13340------------------------
13341"##,
13342        default_severity: Severity::Allow,
13343        warn_since: None,
13344        deny_since: None,
13345    },
13346    Lint {
13347        label: "seek_stream_len",
13348        description: r##"# `seek_stream_len`
13349
13350
13351
13352The tracking issue for this feature is: [#59359]
13353
13354[#59359]: https://github.com/rust-lang/rust/issues/59359
13355
13356------------------------
13357"##,
13358        default_severity: Severity::Allow,
13359        warn_since: None,
13360        deny_since: None,
13361    },
13362    Lint {
13363        label: "set_permissions_nofollow",
13364        description: r##"# `set_permissions_nofollow`
13365
13366
13367
13368The tracking issue for this feature is: [#141607]
13369
13370[#141607]: https://github.com/rust-lang/rust/issues/141607
13371
13372------------------------
13373"##,
13374        default_severity: Severity::Allow,
13375        warn_since: None,
13376        deny_since: None,
13377    },
13378    Lint {
13379        label: "set_ptr_value",
13380        description: r##"# `set_ptr_value`
13381
13382
13383
13384The tracking issue for this feature is: [#75091]
13385
13386[#75091]: https://github.com/rust-lang/rust/issues/75091
13387
13388------------------------
13389"##,
13390        default_severity: Severity::Allow,
13391        warn_since: None,
13392        deny_since: None,
13393    },
13394    Lint {
13395        label: "setgroups",
13396        description: r##"# `setgroups`
13397
13398
13399
13400The tracking issue for this feature is: [#90747]
13401
13402[#90747]: https://github.com/rust-lang/rust/issues/90747
13403
13404------------------------
13405"##,
13406        default_severity: Severity::Allow,
13407        warn_since: None,
13408        deny_since: None,
13409    },
13410    Lint {
13411        label: "sgx_platform",
13412        description: r##"# `sgx_platform`
13413
13414
13415
13416The tracking issue for this feature is: [#56975]
13417
13418[#56975]: https://github.com/rust-lang/rust/issues/56975
13419
13420------------------------
13421"##,
13422        default_severity: Severity::Allow,
13423        warn_since: None,
13424        deny_since: None,
13425    },
13426    Lint {
13427        label: "signed_bigint_helpers",
13428        description: r##"# `signed_bigint_helpers`
13429
13430
13431
13432The tracking issue for this feature is: [#151989]
13433
13434[#151989]: https://github.com/rust-lang/rust/issues/151989
13435
13436------------------------
13437"##,
13438        default_severity: Severity::Allow,
13439        warn_since: None,
13440        deny_since: None,
13441    },
13442    Lint {
13443        label: "simd_ffi",
13444        description: r##"# `simd_ffi`
13445
13446Allows the use of SIMD types in functions declared in `extern` blocks.
13447
13448The tracking issue for this feature is: [#27731]
13449
13450[#27731]: https://github.com/rust-lang/rust/issues/27731
13451
13452------------------------
13453"##,
13454        default_severity: Severity::Allow,
13455        warn_since: None,
13456        deny_since: None,
13457    },
13458    Lint {
13459        label: "sized_hierarchy",
13460        description: r##"# `sized_hierarchy`
13461
13462Introduces a hierarchy of `Sized` traits (RFC 3729).
13463
13464The tracking issue for this feature is: [#144404]
13465
13466[#144404]: https://github.com/rust-lang/rust/issues/144404
13467
13468------------------------
13469"##,
13470        default_severity: Severity::Allow,
13471        warn_since: None,
13472        deny_since: None,
13473    },
13474    Lint {
13475        label: "sized_type_properties",
13476        description: r##"# `sized_type_properties`
13477
13478
13479
13480This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
13481
13482------------------------
13483"##,
13484        default_severity: Severity::Allow,
13485        warn_since: None,
13486        deny_since: None,
13487    },
13488    Lint {
13489        label: "slice_concat_ext",
13490        description: r##"# `slice_concat_ext`
13491
13492
13493
13494The tracking issue for this feature is: [#27747]
13495
13496[#27747]: https://github.com/rust-lang/rust/issues/27747
13497
13498------------------------
13499"##,
13500        default_severity: Severity::Allow,
13501        warn_since: None,
13502        deny_since: None,
13503    },
13504    Lint {
13505        label: "slice_concat_trait",
13506        description: r##"# `slice_concat_trait`
13507
13508
13509
13510The tracking issue for this feature is: [#27747]
13511
13512[#27747]: https://github.com/rust-lang/rust/issues/27747
13513
13514------------------------
13515"##,
13516        default_severity: Severity::Allow,
13517        warn_since: None,
13518        deny_since: None,
13519    },
13520    Lint {
13521        label: "slice_from_ptr_range",
13522        description: r##"# `slice_from_ptr_range`
13523
13524
13525
13526The tracking issue for this feature is: [#89792]
13527
13528[#89792]: https://github.com/rust-lang/rust/issues/89792
13529
13530------------------------
13531"##,
13532        default_severity: Severity::Allow,
13533        warn_since: None,
13534        deny_since: None,
13535    },
13536    Lint {
13537        label: "slice_index_methods",
13538        description: r##"# `slice_index_methods`
13539
13540
13541
13542This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
13543
13544------------------------
13545"##,
13546        default_severity: Severity::Allow,
13547        warn_since: None,
13548        deny_since: None,
13549    },
13550    Lint {
13551        label: "slice_internals",
13552        description: r##"# `slice_internals`
13553
13554
13555
13556This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
13557
13558------------------------
13559"##,
13560        default_severity: Severity::Allow,
13561        warn_since: None,
13562        deny_since: None,
13563    },
13564    Lint {
13565        label: "slice_iter_mut_as_mut_slice",
13566        description: r##"# `slice_iter_mut_as_mut_slice`
13567
13568
13569
13570The tracking issue for this feature is: [#93079]
13571
13572[#93079]: https://github.com/rust-lang/rust/issues/93079
13573
13574------------------------
13575"##,
13576        default_severity: Severity::Allow,
13577        warn_since: None,
13578        deny_since: None,
13579    },
13580    Lint {
13581        label: "slice_partial_sort_unstable",
13582        description: r##"# `slice_partial_sort_unstable`
13583
13584
13585
13586The tracking issue for this feature is: [#149046]
13587
13588[#149046]: https://github.com/rust-lang/rust/issues/149046
13589
13590------------------------
13591"##,
13592        default_severity: Severity::Allow,
13593        warn_since: None,
13594        deny_since: None,
13595    },
13596    Lint {
13597        label: "slice_partition_dedup",
13598        description: r##"# `slice_partition_dedup`
13599
13600
13601
13602The tracking issue for this feature is: [#54279]
13603
13604[#54279]: https://github.com/rust-lang/rust/issues/54279
13605
13606------------------------
13607"##,
13608        default_severity: Severity::Allow,
13609        warn_since: None,
13610        deny_since: None,
13611    },
13612    Lint {
13613        label: "slice_pattern",
13614        description: r##"# `slice_pattern`
13615
13616
13617
13618The tracking issue for this feature is: [#56345]
13619
13620[#56345]: https://github.com/rust-lang/rust/issues/56345
13621
13622------------------------
13623"##,
13624        default_severity: Severity::Allow,
13625        warn_since: None,
13626        deny_since: None,
13627    },
13628    Lint {
13629        label: "slice_ptr_get",
13630        description: r##"# `slice_ptr_get`
13631
13632
13633
13634The tracking issue for this feature is: [#74265]
13635
13636[#74265]: https://github.com/rust-lang/rust/issues/74265
13637
13638------------------------
13639"##,
13640        default_severity: Severity::Allow,
13641        warn_since: None,
13642        deny_since: None,
13643    },
13644    Lint {
13645        label: "slice_range",
13646        description: r##"# `slice_range`
13647
13648
13649
13650The tracking issue for this feature is: [#76393]
13651
13652[#76393]: https://github.com/rust-lang/rust/issues/76393
13653
13654------------------------
13655"##,
13656        default_severity: Severity::Allow,
13657        warn_since: None,
13658        deny_since: None,
13659    },
13660    Lint {
13661        label: "slice_shift",
13662        description: r##"# `slice_shift`
13663
13664
13665
13666The tracking issue for this feature is: [#151772]
13667
13668[#151772]: https://github.com/rust-lang/rust/issues/151772
13669
13670------------------------
13671"##,
13672        default_severity: Severity::Allow,
13673        warn_since: None,
13674        deny_since: None,
13675    },
13676    Lint {
13677        label: "slice_split_once",
13678        description: r##"# `slice_split_once`
13679
13680
13681
13682The tracking issue for this feature is: [#112811]
13683
13684[#112811]: https://github.com/rust-lang/rust/issues/112811
13685
13686------------------------
13687"##,
13688        default_severity: Severity::Allow,
13689        warn_since: None,
13690        deny_since: None,
13691    },
13692    Lint {
13693        label: "slice_swap_unchecked",
13694        description: r##"# `slice_swap_unchecked`
13695
13696
13697
13698The tracking issue for this feature is: [#88539]
13699
13700[#88539]: https://github.com/rust-lang/rust/issues/88539
13701
13702------------------------
13703"##,
13704        default_severity: Severity::Allow,
13705        warn_since: None,
13706        deny_since: None,
13707    },
13708    Lint {
13709        label: "sliceindex_wrappers",
13710        description: r##"# `sliceindex_wrappers`
13711
13712
13713
13714The tracking issue for this feature is: [#146179]
13715
13716[#146179]: https://github.com/rust-lang/rust/issues/146179
13717
13718------------------------
13719"##,
13720        default_severity: Severity::Allow,
13721        warn_since: None,
13722        deny_since: None,
13723    },
13724    Lint {
13725        label: "smart_pointer_try_map",
13726        description: r##"# `smart_pointer_try_map`
13727
13728
13729
13730The tracking issue for this feature is: [#144419]
13731
13732[#144419]: https://github.com/rust-lang/rust/issues/144419
13733
13734------------------------
13735"##,
13736        default_severity: Severity::Allow,
13737        warn_since: None,
13738        deny_since: None,
13739    },
13740    Lint {
13741        label: "solid_ext",
13742        description: r##"# `solid_ext`
13743
13744
13745
13746This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
13747
13748------------------------
13749"##,
13750        default_severity: Severity::Allow,
13751        warn_since: None,
13752        deny_since: None,
13753    },
13754    Lint {
13755        label: "sort_floats",
13756        description: r##"# `sort_floats`
13757
13758
13759
13760The tracking issue for this feature is: [#93396]
13761
13762[#93396]: https://github.com/rust-lang/rust/issues/93396
13763
13764------------------------
13765"##,
13766        default_severity: Severity::Allow,
13767        warn_since: None,
13768        deny_since: None,
13769    },
13770    Lint {
13771        label: "sparc_target_feature",
13772        description: r##"# `sparc_target_feature`
13773
13774Target features on sparc.
13775
13776The tracking issue for this feature is: [#132783]
13777
13778[#132783]: https://github.com/rust-lang/rust/issues/132783
13779
13780------------------------
13781"##,
13782        default_severity: Severity::Allow,
13783        warn_since: None,
13784        deny_since: None,
13785    },
13786    Lint {
13787        label: "specialization",
13788        description: r##"# `specialization`
13789
13790Allows specialization of implementations (RFC 1210).
13791
13792The tracking issue for this feature is: [#31844]
13793
13794[#31844]: https://github.com/rust-lang/rust/issues/31844
13795
13796------------------------
13797"##,
13798        default_severity: Severity::Allow,
13799        warn_since: None,
13800        deny_since: None,
13801    },
13802    Lint {
13803        label: "split_array",
13804        description: r##"# `split_array`
13805
13806
13807
13808The tracking issue for this feature is: [#90091]
13809
13810[#90091]: https://github.com/rust-lang/rust/issues/90091
13811
13812------------------------
13813"##,
13814        default_severity: Severity::Allow,
13815        warn_since: None,
13816        deny_since: None,
13817    },
13818    Lint {
13819        label: "split_as_slice",
13820        description: r##"# `split_as_slice`
13821
13822
13823
13824The tracking issue for this feature is: [#96137]
13825
13826[#96137]: https://github.com/rust-lang/rust/issues/96137
13827
13828------------------------
13829"##,
13830        default_severity: Severity::Allow,
13831        warn_since: None,
13832        deny_since: None,
13833    },
13834    Lint {
13835        label: "staged_api",
13836        description: r##"# `staged_api`
13837
13838Allows using the `#[stable]` and `#[unstable]` attributes.
13839
13840This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
13841
13842------------------------
13843"##,
13844        default_severity: Severity::Allow,
13845        warn_since: None,
13846        deny_since: None,
13847    },
13848    Lint {
13849        label: "static_align",
13850        description: r##"# `static_align`
13851
13852Allows using `#[rustc_align_static(...)]` on static items.
13853
13854The tracking issue for this feature is: [#146177]
13855
13856[#146177]: https://github.com/rust-lang/rust/issues/146177
13857
13858------------------------
13859"##,
13860        default_severity: Severity::Allow,
13861        warn_since: None,
13862        deny_since: None,
13863    },
13864    Lint {
13865        label: "std_internals",
13866        description: r##"# `std_internals`
13867
13868
13869
13870This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
13871
13872------------------------
13873"##,
13874        default_severity: Severity::Allow,
13875        warn_since: None,
13876        deny_since: None,
13877    },
13878    Lint {
13879        label: "stdarch_aarch64_feature_detection",
13880        description: r##"# `stdarch_aarch64_feature_detection`
13881
13882
13883
13884The tracking issue for this feature is: [#127764]
13885
13886[#127764]: https://github.com/rust-lang/rust/issues/127764
13887
13888------------------------
13889"##,
13890        default_severity: Severity::Allow,
13891        warn_since: None,
13892        deny_since: None,
13893    },
13894    Lint {
13895        label: "stdarch_arm_feature_detection",
13896        description: r##"# `stdarch_arm_feature_detection`
13897
13898
13899
13900The tracking issue for this feature is: [#111190]
13901
13902[#111190]: https://github.com/rust-lang/rust/issues/111190
13903
13904------------------------
13905"##,
13906        default_severity: Severity::Allow,
13907        warn_since: None,
13908        deny_since: None,
13909    },
13910    Lint {
13911        label: "stdarch_internal",
13912        description: r##"# `stdarch_internal`
13913
13914
13915
13916This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
13917
13918------------------------
13919"##,
13920        default_severity: Severity::Allow,
13921        warn_since: None,
13922        deny_since: None,
13923    },
13924    Lint {
13925        label: "stdarch_loongarch_feature_detection",
13926        description: r##"# `stdarch_loongarch_feature_detection`
13927
13928
13929
13930The tracking issue for this feature is: [#117425]
13931
13932[#117425]: https://github.com/rust-lang/rust/issues/117425
13933
13934------------------------
13935"##,
13936        default_severity: Severity::Allow,
13937        warn_since: None,
13938        deny_since: None,
13939    },
13940    Lint {
13941        label: "stdarch_mips_feature_detection",
13942        description: r##"# `stdarch_mips_feature_detection`
13943
13944
13945
13946The tracking issue for this feature is: [#111188]
13947
13948[#111188]: https://github.com/rust-lang/rust/issues/111188
13949
13950------------------------
13951"##,
13952        default_severity: Severity::Allow,
13953        warn_since: None,
13954        deny_since: None,
13955    },
13956    Lint {
13957        label: "stdarch_powerpc_feature_detection",
13958        description: r##"# `stdarch_powerpc_feature_detection`
13959
13960
13961
13962The tracking issue for this feature is: [#111191]
13963
13964[#111191]: https://github.com/rust-lang/rust/issues/111191
13965
13966------------------------
13967"##,
13968        default_severity: Severity::Allow,
13969        warn_since: None,
13970        deny_since: None,
13971    },
13972    Lint {
13973        label: "stdarch_riscv_feature_detection",
13974        description: r##"# `stdarch_riscv_feature_detection`
13975
13976
13977
13978The tracking issue for this feature is: [#111192]
13979
13980[#111192]: https://github.com/rust-lang/rust/issues/111192
13981
13982------------------------
13983"##,
13984        default_severity: Severity::Allow,
13985        warn_since: None,
13986        deny_since: None,
13987    },
13988    Lint {
13989        label: "stdio_fd_consts",
13990        description: r##"# `stdio_fd_consts`
13991
13992
13993
13994The tracking issue for this feature is: [#150836]
13995
13996[#150836]: https://github.com/rust-lang/rust/issues/150836
13997
13998------------------------
13999"##,
14000        default_severity: Severity::Allow,
14001        warn_since: None,
14002        deny_since: None,
14003    },
14004    Lint {
14005        label: "stdio_makes_pipe",
14006        description: r##"# `stdio_makes_pipe`
14007
14008
14009
14010The tracking issue for this feature is: [#98288]
14011
14012[#98288]: https://github.com/rust-lang/rust/issues/98288
14013
14014------------------------
14015"##,
14016        default_severity: Severity::Allow,
14017        warn_since: None,
14018        deny_since: None,
14019    },
14020    Lint {
14021        label: "stdio_swap",
14022        description: r##"# `stdio_swap`
14023
14024
14025
14026The tracking issue for this feature is: [#150667]
14027
14028[#150667]: https://github.com/rust-lang/rust/issues/150667
14029
14030------------------------
14031"##,
14032        default_severity: Severity::Allow,
14033        warn_since: None,
14034        deny_since: None,
14035    },
14036    Lint {
14037        label: "step_trait",
14038        description: r##"# `step_trait`
14039
14040
14041
14042The tracking issue for this feature is: [#42168]
14043
14044[#42168]: https://github.com/rust-lang/rust/issues/42168
14045
14046------------------------
14047"##,
14048        default_severity: Severity::Allow,
14049        warn_since: None,
14050        deny_since: None,
14051    },
14052    Lint {
14053        label: "stmt_expr_attributes",
14054        description: r##"# `stmt_expr_attributes`
14055
14056Allows attributes on expressions and non-item statements.
14057
14058The tracking issue for this feature is: [#15701]
14059
14060[#15701]: https://github.com/rust-lang/rust/issues/15701
14061
14062------------------------
14063"##,
14064        default_severity: Severity::Allow,
14065        warn_since: None,
14066        deny_since: None,
14067    },
14068    Lint {
14069        label: "str_as_str",
14070        description: r##"# `str_as_str`
14071
14072
14073
14074The tracking issue for this feature is: [#130366]
14075
14076[#130366]: https://github.com/rust-lang/rust/issues/130366
14077
14078------------------------
14079"##,
14080        default_severity: Severity::Allow,
14081        warn_since: None,
14082        deny_since: None,
14083    },
14084    Lint {
14085        label: "str_from_raw_parts",
14086        description: r##"# `str_from_raw_parts`
14087
14088
14089
14090The tracking issue for this feature is: [#119206]
14091
14092[#119206]: https://github.com/rust-lang/rust/issues/119206
14093
14094------------------------
14095"##,
14096        default_severity: Severity::Allow,
14097        warn_since: None,
14098        deny_since: None,
14099    },
14100    Lint {
14101        label: "str_from_utf16_endian",
14102        description: r##"# `str_from_utf16_endian`
14103
14104
14105
14106The tracking issue for this feature is: [#116258]
14107
14108[#116258]: https://github.com/rust-lang/rust/issues/116258
14109
14110------------------------
14111"##,
14112        default_severity: Severity::Allow,
14113        warn_since: None,
14114        deny_since: None,
14115    },
14116    Lint {
14117        label: "str_internals",
14118        description: r##"# `str_internals`
14119
14120This feature is internal to the Rust compiler and is not intended for general use.
14121
14122------------------------
14123"##,
14124        default_severity: Severity::Allow,
14125        warn_since: None,
14126        deny_since: None,
14127    },
14128    Lint {
14129        label: "str_lines_remainder",
14130        description: r##"# `str_lines_remainder`
14131
14132
14133
14134The tracking issue for this feature is: [#77998]
14135
14136[#77998]: https://github.com/rust-lang/rust/issues/77998
14137
14138------------------------
14139"##,
14140        default_severity: Severity::Allow,
14141        warn_since: None,
14142        deny_since: None,
14143    },
14144    Lint {
14145        label: "str_split_inclusive_remainder",
14146        description: r##"# `str_split_inclusive_remainder`
14147
14148
14149
14150The tracking issue for this feature is: [#77998]
14151
14152[#77998]: https://github.com/rust-lang/rust/issues/77998
14153
14154------------------------
14155"##,
14156        default_severity: Severity::Allow,
14157        warn_since: None,
14158        deny_since: None,
14159    },
14160    Lint {
14161        label: "str_split_remainder",
14162        description: r##"# `str_split_remainder`
14163
14164
14165
14166The tracking issue for this feature is: [#77998]
14167
14168[#77998]: https://github.com/rust-lang/rust/issues/77998
14169
14170------------------------
14171"##,
14172        default_severity: Severity::Allow,
14173        warn_since: None,
14174        deny_since: None,
14175    },
14176    Lint {
14177        label: "str_split_whitespace_remainder",
14178        description: r##"# `str_split_whitespace_remainder`
14179
14180
14181
14182The tracking issue for this feature is: [#77998]
14183
14184[#77998]: https://github.com/rust-lang/rust/issues/77998
14185
14186------------------------
14187"##,
14188        default_severity: Severity::Allow,
14189        warn_since: None,
14190        deny_since: None,
14191    },
14192    Lint {
14193        label: "strict_provenance_lints",
14194        description: r##"# `strict_provenance_lints`
14195
14196The tracking issue for this feature is: [#130351]
14197
14198[#130351]: https://github.com/rust-lang/rust/issues/130351
14199-----
14200
14201The `strict_provenance_lints` feature allows to enable the `fuzzy_provenance_casts` and `lossy_provenance_casts` lints.
14202These lint on casts between integers and pointers, that are recommended against or invalid in the strict provenance model.
14203
14204## Example
14205
14206```rust
14207#![feature(strict_provenance_lints)]
14208#![warn(fuzzy_provenance_casts)]
14209
14210fn main() {
14211    let _dangling = 16_usize as *const u8;
14212    //~^ WARNING: strict provenance disallows casting integer `usize` to pointer `*const u8`
14213}
14214```
14215"##,
14216        default_severity: Severity::Allow,
14217        warn_since: None,
14218        deny_since: None,
14219    },
14220    Lint {
14221        label: "string_from_utf8_lossy_owned",
14222        description: r##"# `string_from_utf8_lossy_owned`
14223
14224
14225
14226The tracking issue for this feature is: [#129436]
14227
14228[#129436]: https://github.com/rust-lang/rust/issues/129436
14229
14230------------------------
14231"##,
14232        default_severity: Severity::Allow,
14233        warn_since: None,
14234        deny_since: None,
14235    },
14236    Lint {
14237        label: "string_into_chars",
14238        description: r##"# `string_into_chars`
14239
14240
14241
14242The tracking issue for this feature is: [#133125]
14243
14244[#133125]: https://github.com/rust-lang/rust/issues/133125
14245
14246------------------------
14247"##,
14248        default_severity: Severity::Allow,
14249        warn_since: None,
14250        deny_since: None,
14251    },
14252    Lint {
14253        label: "string_remove_matches",
14254        description: r##"# `string_remove_matches`
14255
14256
14257
14258The tracking issue for this feature is: [#72826]
14259
14260[#72826]: https://github.com/rust-lang/rust/issues/72826
14261
14262------------------------
14263"##,
14264        default_severity: Severity::Allow,
14265        warn_since: None,
14266        deny_since: None,
14267    },
14268    Lint {
14269        label: "string_replace_in_place",
14270        description: r##"# `string_replace_in_place`
14271
14272
14273
14274The tracking issue for this feature is: [#147949]
14275
14276[#147949]: https://github.com/rust-lang/rust/issues/147949
14277
14278------------------------
14279"##,
14280        default_severity: Severity::Allow,
14281        warn_since: None,
14282        deny_since: None,
14283    },
14284    Lint {
14285        label: "strip_circumfix",
14286        description: r##"# `strip_circumfix`
14287
14288
14289
14290The tracking issue for this feature is: [#147946]
14291
14292[#147946]: https://github.com/rust-lang/rust/issues/147946
14293
14294------------------------
14295"##,
14296        default_severity: Severity::Allow,
14297        warn_since: None,
14298        deny_since: None,
14299    },
14300    Lint {
14301        label: "structural_match",
14302        description: r##"# `structural_match`
14303
14304Allows using `#[structural_match]` which indicates that a type is structurally matchable. FIXME: Subsumed by trait `StructuralPartialEq`, cannot move to removed until a library feature with the same name exists.
14305
14306The tracking issue for this feature is: [#31434]
14307
14308[#31434]: https://github.com/rust-lang/rust/issues/31434
14309
14310------------------------
14311"##,
14312        default_severity: Severity::Allow,
14313        warn_since: None,
14314        deny_since: None,
14315    },
14316    Lint {
14317        label: "substr_range",
14318        description: r##"# `substr_range`
14319
14320
14321
14322The tracking issue for this feature is: [#126769]
14323
14324[#126769]: https://github.com/rust-lang/rust/issues/126769
14325
14326------------------------
14327"##,
14328        default_severity: Severity::Allow,
14329        warn_since: None,
14330        deny_since: None,
14331    },
14332    Lint {
14333        label: "super_let",
14334        description: r##"# `super_let`
14335
14336Allows `super let` statements.
14337
14338The tracking issue for this feature is: [#139076]
14339
14340[#139076]: https://github.com/rust-lang/rust/issues/139076
14341
14342------------------------
14343"##,
14344        default_severity: Severity::Allow,
14345        warn_since: None,
14346        deny_since: None,
14347    },
14348    Lint {
14349        label: "supertrait_item_shadowing",
14350        description: r##"# `supertrait_item_shadowing`
14351
14352Allows subtrait items to shadow supertrait items.
14353
14354The tracking issue for this feature is: [#89151]
14355
14356[#89151]: https://github.com/rust-lang/rust/issues/89151
14357
14358------------------------
14359"##,
14360        default_severity: Severity::Allow,
14361        warn_since: None,
14362        deny_since: None,
14363    },
14364    Lint {
14365        label: "sync_nonpoison",
14366        description: r##"# `sync_nonpoison`
14367
14368
14369
14370The tracking issue for this feature is: [#134645]
14371
14372[#134645]: https://github.com/rust-lang/rust/issues/134645
14373
14374------------------------
14375"##,
14376        default_severity: Severity::Allow,
14377        warn_since: None,
14378        deny_since: None,
14379    },
14380    Lint {
14381        label: "sync_poison_mod",
14382        description: r##"# `sync_poison_mod`
14383
14384
14385
14386The tracking issue for this feature is: [#134646]
14387
14388[#134646]: https://github.com/rust-lang/rust/issues/134646
14389
14390------------------------
14391"##,
14392        default_severity: Severity::Allow,
14393        warn_since: None,
14394        deny_since: None,
14395    },
14396    Lint {
14397        label: "sync_unsafe_cell",
14398        description: r##"# `sync_unsafe_cell`
14399
14400
14401
14402The tracking issue for this feature is: [#95439]
14403
14404[#95439]: https://github.com/rust-lang/rust/issues/95439
14405
14406------------------------
14407"##,
14408        default_severity: Severity::Allow,
14409        warn_since: None,
14410        deny_since: None,
14411    },
14412    Lint {
14413        label: "target_feature_inline_always",
14414        description: r##"# `target_feature_inline_always`
14415
14416Allows the use of target_feature when a function is marked inline(always).
14417
14418The tracking issue for this feature is: [#145574]
14419
14420[#145574]: https://github.com/rust-lang/rust/issues/145574
14421
14422------------------------
14423"##,
14424        default_severity: Severity::Allow,
14425        warn_since: None,
14426        deny_since: None,
14427    },
14428    Lint {
14429        label: "tcp_deferaccept",
14430        description: r##"# `tcp_deferaccept`
14431
14432
14433
14434The tracking issue for this feature is: [#119639]
14435
14436[#119639]: https://github.com/rust-lang/rust/issues/119639
14437
14438------------------------
14439"##,
14440        default_severity: Severity::Allow,
14441        warn_since: None,
14442        deny_since: None,
14443    },
14444    Lint {
14445        label: "tcp_linger",
14446        description: r##"# `tcp_linger`
14447
14448
14449
14450The tracking issue for this feature is: [#88494]
14451
14452[#88494]: https://github.com/rust-lang/rust/issues/88494
14453
14454------------------------
14455"##,
14456        default_severity: Severity::Allow,
14457        warn_since: None,
14458        deny_since: None,
14459    },
14460    Lint {
14461        label: "tcplistener_into_incoming",
14462        description: r##"# `tcplistener_into_incoming`
14463
14464
14465
14466The tracking issue for this feature is: [#88373]
14467
14468[#88373]: https://github.com/rust-lang/rust/issues/88373
14469
14470------------------------
14471"##,
14472        default_severity: Severity::Allow,
14473        warn_since: None,
14474        deny_since: None,
14475    },
14476    Lint {
14477        label: "temporary_niche_types",
14478        description: r##"# `temporary_niche_types`
14479
14480
14481
14482This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
14483
14484------------------------
14485"##,
14486        default_severity: Severity::Allow,
14487        warn_since: None,
14488        deny_since: None,
14489    },
14490    Lint {
14491        label: "test",
14492        description: r##"# `test`
14493
14494The tracking issue for this feature is: None.
14495
14496------------------------
14497
14498The internals of the `test` crate are unstable, behind the `test` flag.  The
14499most widely used part of the `test` crate are benchmark tests, which can test
14500the performance of your code.  Let's make our `src/lib.rs` look like this
14501(comments elided):
14502
14503```rust,no_run
14504#![feature(test)]
14505
14506extern crate test;
14507
14508pub fn add_two(a: i32) -> i32 {
14509    a + 2
14510}
14511
14512#[cfg(test)]
14513mod tests {
14514    use super::*;
14515    use test::Bencher;
14516
14517    #[test]
14518    fn it_works() {
14519        assert_eq!(4, add_two(2));
14520    }
14521
14522    #[bench]
14523    fn bench_add_two(b: &mut Bencher) {
14524        b.iter(|| add_two(2));
14525    }
14526}
14527```
14528
14529Note the `test` feature gate, which enables this unstable feature.
14530
14531We've imported the `test` crate, which contains our benchmarking support.
14532We have a new function as well, with the `bench` attribute. Unlike regular
14533tests, which take no arguments, benchmark tests take a `&mut Bencher`. This
14534`Bencher` provides an `iter` method, which takes a closure. This closure
14535contains the code we'd like to benchmark.
14536
14537We can run benchmark tests with `cargo bench`:
14538
14539```bash
14540$ cargo bench
14541   Compiling adder v0.0.1 (file:///home/steve/tmp/adder)
14542     Running target/release/adder-91b3e234d4ed382a
14543
14544running 2 tests
14545test tests::it_works ... ignored
14546test tests::bench_add_two ... bench:         1 ns/iter (+/- 0)
14547
14548test result: ok. 0 passed; 0 failed; 1 ignored; 1 measured
14549```
14550
14551Our non-benchmark test was ignored. You may have noticed that `cargo bench`
14552takes a bit longer than `cargo test`. This is because Rust runs our benchmark
14553a number of times, and then takes the average. Because we're doing so little
14554work in this example, we have a `1 ns/iter (+/- 0)`, but this would show
14555the variance if there was one.
14556
14557Advice on writing benchmarks:
14558
14559
14560* Move setup code outside the `iter` loop; only put the part you want to measure inside
14561* Make the code do "the same thing" on each iteration; do not accumulate or change state
14562* Make the outer function idempotent too; the benchmark runner is likely to run
14563  it many times
14564*  Make the inner `iter` loop short and fast so benchmark runs are fast and the
14565   calibrator can adjust the run-length at fine resolution
14566* Make the code in the `iter` loop do something simple, to assist in pinpointing
14567  performance improvements (or regressions)
14568
14569## Gotcha: optimizations
14570
14571There's another tricky part to writing benchmarks: benchmarks compiled with
14572optimizations activated can be dramatically changed by the optimizer so that
14573the benchmark is no longer benchmarking what one expects. For example, the
14574compiler might recognize that some calculation has no external effects and
14575remove it entirely.
14576
14577```rust,no_run
14578#![feature(test)]
14579
14580extern crate test;
14581use test::Bencher;
14582
14583#[bench]
14584fn bench_xor_1000_ints(b: &mut Bencher) {
14585    b.iter(|| {
14586        (0..1000).fold(0, |old, new| old ^ new);
14587    });
14588}
14589```
14590
14591gives the following results
14592
14593```text
14594running 1 test
14595test bench_xor_1000_ints ... bench:         0 ns/iter (+/- 0)
14596
14597test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
14598```
14599
14600The benchmarking runner offers two ways to avoid this. Either, the closure that
14601the `iter` method receives can return an arbitrary value which forces the
14602optimizer to consider the result used and ensures it cannot remove the
14603computation entirely. This could be done for the example above by adjusting the
14604`b.iter` call to
14605
14606```rust
14607# struct X;
14608# impl X { fn iter<T, F>(&self, _: F) where F: FnMut() -> T {} } let b = X;
14609b.iter(|| {
14610    // Note lack of `;` (could also use an explicit `return`).
14611    (0..1000).fold(0, |old, new| old ^ new)
14612});
14613```
14614
14615Or, the other option is to call the generic `test::black_box` function, which
14616is an opaque "black box" to the optimizer and so forces it to consider any
14617argument as used.
14618
14619```rust
14620#![feature(test)]
14621
14622extern crate test;
14623
14624# fn main() {
14625# struct X;
14626# impl X { fn iter<T, F>(&self, _: F) where F: FnMut() -> T {} } let b = X;
14627b.iter(|| {
14628    let n = test::black_box(1000);
14629
14630    (0..n).fold(0, |a, b| a ^ b)
14631})
14632# }
14633```
14634
14635Neither of these read or modify the value, and are very cheap for small values.
14636Larger values can be passed indirectly to reduce overhead (e.g.
14637`black_box(&huge_struct)`).
14638
14639Performing either of the above changes gives the following benchmarking results
14640
14641```text
14642running 1 test
14643test bench_xor_1000_ints ... bench:       131 ns/iter (+/- 3)
14644
14645test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
14646```
14647
14648However, the optimizer can still modify a testcase in an undesirable manner
14649even when using either of the above.
14650"##,
14651        default_severity: Severity::Allow,
14652        warn_since: None,
14653        deny_since: None,
14654    },
14655    Lint {
14656        label: "test_incomplete_feature",
14657        description: r##"# `test_incomplete_feature`
14658
14659Perma-unstable, only used to test the `incomplete_features` lint.
14660
14661This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
14662
14663------------------------
14664"##,
14665        default_severity: Severity::Allow,
14666        warn_since: None,
14667        deny_since: None,
14668    },
14669    Lint {
14670        label: "test_unstable_lint",
14671        description: r##"# `test_unstable_lint`
14672
14673Added for testing unstable lints; perma-unstable.
14674
14675This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
14676
14677------------------------
14678"##,
14679        default_severity: Severity::Allow,
14680        warn_since: None,
14681        deny_since: None,
14682    },
14683    Lint {
14684        label: "thin_box",
14685        description: r##"# `thin_box`
14686
14687
14688
14689The tracking issue for this feature is: [#92791]
14690
14691[#92791]: https://github.com/rust-lang/rust/issues/92791
14692
14693------------------------
14694"##,
14695        default_severity: Severity::Allow,
14696        warn_since: None,
14697        deny_since: None,
14698    },
14699    Lint {
14700        label: "thread_id_value",
14701        description: r##"# `thread_id_value`
14702
14703
14704
14705The tracking issue for this feature is: [#67939]
14706
14707[#67939]: https://github.com/rust-lang/rust/issues/67939
14708
14709------------------------
14710"##,
14711        default_severity: Severity::Allow,
14712        warn_since: None,
14713        deny_since: None,
14714    },
14715    Lint {
14716        label: "thread_local",
14717        description: r##"# `thread_local`
14718
14719Allows using `#[thread_local]` on `static` items.
14720
14721The tracking issue for this feature is: [#29594]
14722
14723[#29594]: https://github.com/rust-lang/rust/issues/29594
14724
14725------------------------
14726"##,
14727        default_severity: Severity::Allow,
14728        warn_since: None,
14729        deny_since: None,
14730    },
14731    Lint {
14732        label: "thread_local_internals",
14733        description: r##"# `thread_local_internals`
14734
14735This feature is internal to the Rust compiler and is not intended for general use.
14736
14737------------------------
14738"##,
14739        default_severity: Severity::Allow,
14740        warn_since: None,
14741        deny_since: None,
14742    },
14743    Lint {
14744        label: "thread_raw",
14745        description: r##"# `thread_raw`
14746
14747
14748
14749The tracking issue for this feature is: [#97523]
14750
14751[#97523]: https://github.com/rust-lang/rust/issues/97523
14752
14753------------------------
14754"##,
14755        default_severity: Severity::Allow,
14756        warn_since: None,
14757        deny_since: None,
14758    },
14759    Lint {
14760        label: "thread_sleep_until",
14761        description: r##"# `thread_sleep_until`
14762
14763
14764
14765The tracking issue for this feature is: [#113752]
14766
14767[#113752]: https://github.com/rust-lang/rust/issues/113752
14768
14769------------------------
14770"##,
14771        default_severity: Severity::Allow,
14772        warn_since: None,
14773        deny_since: None,
14774    },
14775    Lint {
14776        label: "thread_spawn_hook",
14777        description: r##"# `thread_spawn_hook`
14778
14779
14780
14781The tracking issue for this feature is: [#132951]
14782
14783[#132951]: https://github.com/rust-lang/rust/issues/132951
14784
14785------------------------
14786"##,
14787        default_severity: Severity::Allow,
14788        warn_since: None,
14789        deny_since: None,
14790    },
14791    Lint {
14792        label: "time_saturating_systemtime",
14793        description: r##"# `time_saturating_systemtime`
14794
14795
14796
14797The tracking issue for this feature is: [#151199]
14798
14799[#151199]: https://github.com/rust-lang/rust/issues/151199
14800
14801------------------------
14802"##,
14803        default_severity: Severity::Allow,
14804        warn_since: None,
14805        deny_since: None,
14806    },
14807    Lint {
14808        label: "time_systemtime_limits",
14809        description: r##"# `time_systemtime_limits`
14810
14811
14812
14813The tracking issue for this feature is: [#149067]
14814
14815[#149067]: https://github.com/rust-lang/rust/issues/149067
14816
14817------------------------
14818"##,
14819        default_severity: Severity::Allow,
14820        warn_since: None,
14821        deny_since: None,
14822    },
14823    Lint {
14824        label: "titlecase",
14825        description: r##"# `titlecase`
14826
14827
14828
14829The tracking issue for this feature is: [#153892]
14830
14831[#153892]: https://github.com/rust-lang/rust/issues/153892
14832
14833------------------------
14834"##,
14835        default_severity: Severity::Allow,
14836        warn_since: None,
14837        deny_since: None,
14838    },
14839    Lint {
14840        label: "trace_macros",
14841        description: r##"# `trace_macros`
14842
14843The tracking issue for this feature is [#29598].
14844
14845[#29598]: https://github.com/rust-lang/rust/issues/29598
14846
14847------------------------
14848
14849With `trace_macros` you can trace the expansion of macros in your code.
14850
14851## Examples
14852
14853```rust
14854#![feature(trace_macros)]
14855
14856fn main() {
14857    trace_macros!(true);
14858    println!("Hello, Rust!");
14859    trace_macros!(false);
14860}
14861```
14862
14863The `cargo build` output:
14864
14865```txt
14866note: trace_macro
14867 --> src/main.rs:5:5
14868  |
148695 |     println!("Hello, Rust!");
14870  |     ^^^^^^^^^^^^^^^^^^^^^^^^^
14871  |
14872  = note: expanding `println! { "Hello, Rust!" }`
14873  = note: to `print ! ( concat ! ( "Hello, Rust!" , "\n" ) )`
14874  = note: expanding `print! { concat ! ( "Hello, Rust!" , "\n" ) }`
14875  = note: to `$crate :: io :: _print ( format_args ! ( concat ! ( "Hello, Rust!" , "\n" ) )
14876          )`
14877
14878    Finished dev [unoptimized + debuginfo] target(s) in 0.60 secs
14879```
14880"##,
14881        default_severity: Severity::Allow,
14882        warn_since: None,
14883        deny_since: None,
14884    },
14885    Lint {
14886        label: "trait_alias",
14887        description: r##"# `trait_alias`
14888
14889The tracking issue for this feature is: [#41517]
14890
14891[#41517]: https://github.com/rust-lang/rust/issues/41517
14892
14893------------------------
14894
14895The `trait_alias` feature adds support for trait aliases. These allow aliases
14896to be created for one or more traits (currently just a single regular trait plus
14897any number of auto-traits), and used wherever traits would normally be used as
14898either bounds or trait objects.
14899
14900```rust
14901#![feature(trait_alias)]
14902
14903trait Foo = std::fmt::Debug + Send;
14904trait Bar = Foo + Sync;
14905
14906// Use trait alias as bound on type parameter.
14907fn foo<T: Foo>(v: &T) {
14908    println!("{:?}", v);
14909}
14910
14911pub fn main() {
14912    foo(&1);
14913
14914    // Use trait alias for trait objects.
14915    let a: &Bar = &123;
14916    println!("{:?}", a);
14917    let b = Box::new(456) as Box<dyn Foo>;
14918    println!("{:?}", b);
14919}
14920```
14921"##,
14922        default_severity: Severity::Allow,
14923        warn_since: None,
14924        deny_since: None,
14925    },
14926    Lint {
14927        label: "transmutability",
14928        description: r##"# `transmutability`
14929
14930
14931
14932The tracking issue for this feature is: [#99571]
14933
14934[#99571]: https://github.com/rust-lang/rust/issues/99571
14935
14936------------------------
14937"##,
14938        default_severity: Severity::Allow,
14939        warn_since: None,
14940        deny_since: None,
14941    },
14942    Lint {
14943        label: "transmute_generic_consts",
14944        description: r##"# `transmute_generic_consts`
14945
14946Allows for transmuting between arrays with sizes that contain generic consts.
14947
14948The tracking issue for this feature is: [#109929]
14949
14950[#109929]: https://github.com/rust-lang/rust/issues/109929
14951
14952------------------------
14953"##,
14954        default_severity: Severity::Allow,
14955        warn_since: None,
14956        deny_since: None,
14957    },
14958    Lint {
14959        label: "transmute_neo",
14960        description: r##"# `transmute_neo`
14961
14962
14963
14964The tracking issue for this feature is: [#155079]
14965
14966[#155079]: https://github.com/rust-lang/rust/issues/155079
14967
14968------------------------
14969"##,
14970        default_severity: Severity::Allow,
14971        warn_since: None,
14972        deny_since: None,
14973    },
14974    Lint {
14975        label: "transmute_prefix",
14976        description: r##"# `transmute_prefix`
14977
14978
14979
14980The tracking issue for this feature is: [#155079]
14981
14982[#155079]: https://github.com/rust-lang/rust/issues/155079
14983
14984------------------------
14985"##,
14986        default_severity: Severity::Allow,
14987        warn_since: None,
14988        deny_since: None,
14989    },
14990    Lint {
14991        label: "transparent_unions",
14992        description: r##"# `transparent_unions`
14993
14994The tracking issue for this feature is [#60405]
14995
14996[#60405]: https://github.com/rust-lang/rust/issues/60405
14997
14998----
14999
15000The `transparent_unions` feature allows you mark `union`s as
15001`#[repr(transparent)]`. A `union` may be `#[repr(transparent)]` in exactly the
15002same conditions in which a `struct` may be `#[repr(transparent)]` (generally,
15003this means the `union` must have exactly one non-zero-sized field). Some
15004concrete illustrations follow.
15005
15006```rust
15007#![feature(transparent_unions)]
15008
15009// This union has the same representation as `f32`.
15010#[repr(transparent)]
15011union SingleFieldUnion {
15012    field: f32,
15013}
15014
15015// This union has the same representation as `usize`.
15016#[repr(transparent)]
15017union MultiFieldUnion {
15018    field: usize,
15019    nothing: (),
15020}
15021```
15022
15023For consistency with transparent `struct`s, `union`s must have exactly one
15024non-zero-sized field. If all fields are zero-sized, the `union` must not be
15025`#[repr(transparent)]`:
15026
15027```rust
15028#![feature(transparent_unions)]
15029
15030// This (non-transparent) union is already valid in stable Rust:
15031pub union GoodUnion {
15032    pub nothing: (),
15033}
15034
15035// Error: transparent union needs exactly one non-zero-sized field, but has 0
15036// #[repr(transparent)]
15037// pub union BadUnion {
15038//     pub nothing: (),
15039// }
15040```
15041
15042The one exception is if the `union` is generic over `T` and has a field of type
15043`T`, it may be `#[repr(transparent)]` even if `T` is a zero-sized type:
15044
15045```rust
15046#![feature(transparent_unions)]
15047
15048// This union has the same representation as `T`.
15049#[repr(transparent)]
15050pub union GenericUnion<T: Copy> { // Unions with non-`Copy` fields are unstable.
15051    pub field: T,
15052    pub nothing: (),
15053}
15054
15055// This is okay even though `()` is a zero-sized type.
15056pub const THIS_IS_OKAY: GenericUnion<()> = GenericUnion { field: () };
15057```
15058
15059Like transparent `struct`s, a transparent `union` of type `U` has the same
15060layout, size, and ABI as its single non-ZST field. If it is generic over a type
15061`T`, and all its fields are ZSTs except for exactly one field of type `T`, then
15062it has the same layout and ABI as `T` (even if `T` is a ZST when monomorphized).
15063
15064Like transparent `struct`s, transparent `union`s are FFI-safe if and only if
15065their underlying representation type is also FFI-safe.
15066
15067A `union` may not be eligible for the same nonnull-style optimizations that a
15068`struct` or `enum` (with the same fields) are eligible for. Adding
15069`#[repr(transparent)]` to  `union` does not change this. To give a more concrete
15070example, it is unspecified whether `size_of::<T>()` is equal to
15071`size_of::<Option<T>>()`, where `T` is a `union` (regardless of whether or not
15072it is transparent). The Rust compiler is free to perform this optimization if
15073possible, but is not required to, and different compiler versions may differ in
15074their application of these optimizations.
15075"##,
15076        default_severity: Severity::Allow,
15077        warn_since: None,
15078        deny_since: None,
15079    },
15080    Lint {
15081        label: "trim_prefix_suffix",
15082        description: r##"# `trim_prefix_suffix`
15083
15084
15085
15086The tracking issue for this feature is: [#142312]
15087
15088[#142312]: https://github.com/rust-lang/rust/issues/142312
15089
15090------------------------
15091"##,
15092        default_severity: Severity::Allow,
15093        warn_since: None,
15094        deny_since: None,
15095    },
15096    Lint {
15097        label: "trivial_bounds",
15098        description: r##"# `trivial_bounds`
15099
15100Allows inconsistent bounds in where clauses.
15101
15102The tracking issue for this feature is: [#48214]
15103
15104[#48214]: https://github.com/rust-lang/rust/issues/48214
15105
15106------------------------
15107"##,
15108        default_severity: Severity::Allow,
15109        warn_since: None,
15110        deny_since: None,
15111    },
15112    Lint {
15113        label: "trivial_clone",
15114        description: r##"# `trivial_clone`
15115
15116
15117
15118This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
15119
15120------------------------
15121"##,
15122        default_severity: Severity::Allow,
15123        warn_since: None,
15124        deny_since: None,
15125    },
15126    Lint {
15127        label: "trusted_fused",
15128        description: r##"# `trusted_fused`
15129
15130
15131
15132This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
15133
15134------------------------
15135"##,
15136        default_severity: Severity::Allow,
15137        warn_since: None,
15138        deny_since: None,
15139    },
15140    Lint {
15141        label: "trusted_len",
15142        description: r##"# `trusted_len`
15143
15144
15145
15146The tracking issue for this feature is: [#37572]
15147
15148[#37572]: https://github.com/rust-lang/rust/issues/37572
15149
15150------------------------
15151"##,
15152        default_severity: Severity::Allow,
15153        warn_since: None,
15154        deny_since: None,
15155    },
15156    Lint {
15157        label: "trusted_len_next_unchecked",
15158        description: r##"# `trusted_len_next_unchecked`
15159
15160
15161
15162The tracking issue for this feature is: [#37572]
15163
15164[#37572]: https://github.com/rust-lang/rust/issues/37572
15165
15166------------------------
15167"##,
15168        default_severity: Severity::Allow,
15169        warn_since: None,
15170        deny_since: None,
15171    },
15172    Lint {
15173        label: "trusted_random_access",
15174        description: r##"# `trusted_random_access`
15175
15176
15177
15178This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
15179
15180------------------------
15181"##,
15182        default_severity: Severity::Allow,
15183        warn_since: None,
15184        deny_since: None,
15185    },
15186    Lint {
15187        label: "trusted_step",
15188        description: r##"# `trusted_step`
15189
15190
15191
15192The tracking issue for this feature is: [#85731]
15193
15194[#85731]: https://github.com/rust-lang/rust/issues/85731
15195
15196------------------------
15197"##,
15198        default_severity: Severity::Allow,
15199        warn_since: None,
15200        deny_since: None,
15201    },
15202    Lint {
15203        label: "try_as_dyn",
15204        description: r##"# `try_as_dyn`
15205
15206
15207
15208The tracking issue for this feature is: [#144361]
15209
15210[#144361]: https://github.com/rust-lang/rust/issues/144361
15211
15212------------------------
15213"##,
15214        default_severity: Severity::Allow,
15215        warn_since: None,
15216        deny_since: None,
15217    },
15218    Lint {
15219        label: "try_blocks",
15220        description: r##"# `try_blocks`
15221
15222The tracking issue for this feature is: [#154391]
15223
15224[#154391]: https://github.com/rust-lang/rust/issues/154391
15225
15226------------------------
15227
15228The `try_blocks` feature adds support for `try` blocks. A `try`
15229block creates a new scope one can use the `?` operator in.
15230
15231```rust,edition2018
15232#![feature(try_blocks)]
15233
15234use std::num::ParseIntError;
15235
15236let result = try {
15237    "1".parse::<i32>()?
15238        + "2".parse::<i32>()?
15239        + "3".parse::<i32>()?
15240};
15241assert_eq!(result, Ok(6));
15242
15243let result = try {
15244    "1".parse::<i32>()?
15245        + "foo".parse::<i32>()?
15246        + "3".parse::<i32>()?
15247};
15248assert!(result.is_err());
15249```
15250"##,
15251        default_severity: Severity::Allow,
15252        warn_since: None,
15253        deny_since: None,
15254    },
15255    Lint {
15256        label: "try_blocks_heterogeneous",
15257        description: r##"# `try_blocks_heterogeneous`
15258
15259Allows using `try bikeshed TargetType {...}` expressions.
15260
15261The tracking issue for this feature is: [#149488]
15262
15263[#149488]: https://github.com/rust-lang/rust/issues/149488
15264
15265------------------------
15266"##,
15267        default_severity: Severity::Allow,
15268        warn_since: None,
15269        deny_since: None,
15270    },
15271    Lint {
15272        label: "try_find",
15273        description: r##"# `try_find`
15274
15275
15276
15277The tracking issue for this feature is: [#63178]
15278
15279[#63178]: https://github.com/rust-lang/rust/issues/63178
15280
15281------------------------
15282"##,
15283        default_severity: Severity::Allow,
15284        warn_since: None,
15285        deny_since: None,
15286    },
15287    Lint {
15288        label: "try_from_int_error_kind",
15289        description: r##"# `try_from_int_error_kind`
15290
15291
15292
15293The tracking issue for this feature is: [#153978]
15294
15295[#153978]: https://github.com/rust-lang/rust/issues/153978
15296
15297------------------------
15298"##,
15299        default_severity: Severity::Allow,
15300        warn_since: None,
15301        deny_since: None,
15302    },
15303    Lint {
15304        label: "try_reserve_kind",
15305        description: r##"# `try_reserve_kind`
15306
15307
15308
15309The tracking issue for this feature is: [#48043]
15310
15311[#48043]: https://github.com/rust-lang/rust/issues/48043
15312
15313------------------------
15314"##,
15315        default_severity: Severity::Allow,
15316        warn_since: None,
15317        deny_since: None,
15318    },
15319    Lint {
15320        label: "try_trait_v2",
15321        description: r##"# `try_trait_v2`
15322
15323
15324
15325The tracking issue for this feature is: [#84277]
15326
15327[#84277]: https://github.com/rust-lang/rust/issues/84277
15328
15329------------------------
15330"##,
15331        default_severity: Severity::Allow,
15332        warn_since: None,
15333        deny_since: None,
15334    },
15335    Lint {
15336        label: "try_trait_v2_residual",
15337        description: r##"# `try_trait_v2_residual`
15338
15339
15340
15341The tracking issue for this feature is: [#91285]
15342
15343[#91285]: https://github.com/rust-lang/rust/issues/91285
15344
15345------------------------
15346"##,
15347        default_severity: Severity::Allow,
15348        warn_since: None,
15349        deny_since: None,
15350    },
15351    Lint {
15352        label: "try_trait_v2_yeet",
15353        description: r##"# `try_trait_v2_yeet`
15354
15355
15356
15357The tracking issue for this feature is: [#96374]
15358
15359[#96374]: https://github.com/rust-lang/rust/issues/96374
15360
15361------------------------
15362"##,
15363        default_severity: Severity::Allow,
15364        warn_since: None,
15365        deny_since: None,
15366    },
15367    Lint {
15368        label: "try_with_capacity",
15369        description: r##"# `try_with_capacity`
15370
15371
15372
15373The tracking issue for this feature is: [#91913]
15374
15375[#91913]: https://github.com/rust-lang/rust/issues/91913
15376
15377------------------------
15378"##,
15379        default_severity: Severity::Allow,
15380        warn_since: None,
15381        deny_since: None,
15382    },
15383    Lint {
15384        label: "tuple_trait",
15385        description: r##"# `tuple_trait`
15386
15387
15388
15389This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
15390
15391------------------------
15392"##,
15393        default_severity: Severity::Allow,
15394        warn_since: None,
15395        deny_since: None,
15396    },
15397    Lint {
15398        label: "type_alias_impl_trait",
15399        description: r##"# `type_alias_impl_trait`
15400
15401The tracking issue for this feature is: [#63063]
15402
15403------------------------
15404
15405> This feature is not to be confused with [`trait_alias`] or [`impl_trait_in_assoc_type`].
15406
15407### What is `impl Trait`?
15408
15409`impl Trait` in return position is useful for declaring types that are constrained by traits, but whose concrete type should be hidden:
15410
15411```rust
15412use std::fmt::Debug;
15413
15414fn new() -> impl Debug {
15415    42
15416}
15417
15418fn main() {
15419    let thing = new();
15420    // What actually is a `thing`?
15421    // No idea but we know it implements `Debug`, so we can debug print it
15422    println!("{thing:?}");
15423}
15424```
15425
15426See the [reference] for more information about `impl Trait` in return position.
15427
15428### `type_alias_impl_trait`
15429
15430However, we might want to use an `impl Trait` in multiple locations but actually use the same concrete type everywhere while keeping it hidden.
15431This can be useful in libraries where you want to hide implementation details.
15432
15433The `#[define_opaque]` attribute must be used to explicitly list opaque items constrained by the item it's on.
15434
15435```rust
15436#![feature(type_alias_impl_trait)]
15437# #![allow(unused_variables, dead_code)]
15438trait Trait {}
15439
15440struct MyType;
15441
15442impl Trait for MyType {}
15443
15444type Alias = impl Trait;
15445
15446#[define_opaque(Alias)] // To constrain the type alias to `MyType`
15447fn new() -> Alias {
15448    MyType
15449}
15450
15451#[define_opaque(Alias)] // So we can name the concrete type inside this item
15452fn main() {
15453    let thing: MyType = new();
15454}
15455
15456// It can be a part of a struct too
15457struct HaveAlias {
15458    stuff: String,
15459    thing: Alias,
15460}
15461```
15462
15463In this example, the concrete type referred to by `Alias` is guaranteed to be the same wherever `Alias` occurs.
15464
15465> Originally this feature included type aliases as an associated type of a trait. In [#110237] this was split off to [`impl_trait_in_assoc_type`].
15466
15467### `type_alias_impl_trait` in argument position.
15468
15469Note that using `Alias` as an argument type is *not* the same as argument-position `impl Trait`, as `Alias` refers to a unique type, whereas the concrete type for argument-position `impl Trait` is chosen by the caller.
15470
15471```rust
15472# #![feature(type_alias_impl_trait)]
15473# #![allow(unused_variables)]
15474# pub mod x {
15475# pub trait Trait {}
15476#
15477# struct MyType;
15478#
15479# impl Trait for MyType {}
15480#
15481# pub type Alias = impl Trait;
15482#
15483# #[define_opaque(Alias)]
15484# pub fn new() -> Alias {
15485#     MyType
15486# }
15487# }
15488# use x::*;
15489// this...
15490pub fn take_alias(x: Alias) {
15491    // ...
15492}
15493
15494// ...is *not* the same as
15495pub fn take_impl(x: impl Trait) {
15496    // ...
15497}
15498# fn main(){}
15499```
15500
15501```rust,compile_fail,E0308
15502# #![feature(type_alias_impl_trait)]
15503# #![allow(unused_variables)]
15504# pub mod x {
15505# pub trait Trait {}
15506#
15507# struct MyType;
15508#
15509# impl Trait for MyType {}
15510#
15511# pub type Alias = impl Trait;
15512#
15513# #[define_opaque(Alias)]
15514# pub fn new() -> Alias {
15515#     MyType
15516# }
15517# }
15518# use x::*;
15519# pub fn take_alias(x: Alias) {
15520#     // ...
15521# }
15522#
15523# pub fn take_impl(x: impl Trait) {
15524#    // ...
15525# }
15526#
15527// a user's crate using the trait and type alias
15528struct UserType;
15529impl Trait for UserType {}
15530
15531# fn main(){
15532let x = UserType;
15533take_alias(x);
15534// ERROR expected opaque type, found `UserType`
15535// this function *actually* takes a `MyType` as is constrained in `new`
15536
15537let x = UserType;
15538take_impl(x);
15539// OK
15540
15541let x = new();
15542take_alias(x);
15543// OK
15544
15545let x = new();
15546take_impl(x);
15547// OK
15548# }
15549```
15550
15551Note that the user cannot use `#[define_opaque(Alias)]` to reify the opaque type because only the crate where the type alias is declared may do so. But if this happened in the same crate and the opaque type was reified, they'd get a familiar error: "expected `MyType`, got `UserType`".
15552
15553[#63063]: https://github.com/rust-lang/rust/issues/63063
15554[#110237]: https://github.com/rust-lang/rust/pull/110237
15555[reference]: https://doc.rust-lang.org/stable/reference/types/impl-trait.html#abstract-return-types
15556[`trait_alias`]: ./trait-alias.md
15557[`impl_trait_in_assoc_type`]: ./impl-trait-in-assoc-type.md
15558"##,
15559        default_severity: Severity::Allow,
15560        warn_since: None,
15561        deny_since: None,
15562    },
15563    Lint {
15564        label: "type_ascription",
15565        description: r##"# `type_ascription`
15566
15567
15568
15569The tracking issue for this feature is: [#23416]
15570
15571[#23416]: https://github.com/rust-lang/rust/issues/23416
15572
15573------------------------
15574"##,
15575        default_severity: Severity::Allow,
15576        warn_since: None,
15577        deny_since: None,
15578    },
15579    Lint {
15580        label: "type_changing_struct_update",
15581        description: r##"# `type_changing_struct_update`
15582
15583The tracking issue for this feature is: [#86555]
15584
15585[#86555]: https://github.com/rust-lang/rust/issues/86555
15586
15587------------------------
15588
15589This implements [RFC2528]. When turned on, you can create instances of the same struct
15590that have different generic type or lifetime parameters.
15591
15592[RFC2528]: https://github.com/rust-lang/rfcs/blob/master/text/2528-type-changing-struct-update-syntax.md
15593
15594```rust
15595#![allow(unused_variables, dead_code)]
15596#![feature(type_changing_struct_update)]
15597
15598fn main () {
15599    struct Foo<T, U> {
15600        field1: T,
15601        field2: U,
15602    }
15603
15604    let base: Foo<String, i32> = Foo {
15605        field1: String::from("hello"),
15606        field2: 1234,
15607    };
15608    let updated: Foo<f64, i32> = Foo {
15609        field1: 3.14,
15610        ..base
15611    };
15612}
15613```
15614"##,
15615        default_severity: Severity::Allow,
15616        warn_since: None,
15617        deny_since: None,
15618    },
15619    Lint {
15620        label: "type_info",
15621        description: r##"# `type_info`
15622
15623
15624
15625The tracking issue for this feature is: [#146922]
15626
15627[#146922]: https://github.com/rust-lang/rust/issues/146922
15628
15629------------------------
15630"##,
15631        default_severity: Severity::Allow,
15632        warn_since: None,
15633        deny_since: None,
15634    },
15635    Lint {
15636        label: "ub_checks",
15637        description: r##"# `ub_checks`
15638
15639
15640
15641This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
15642
15643------------------------
15644"##,
15645        default_severity: Severity::Allow,
15646        warn_since: None,
15647        deny_since: None,
15648    },
15649    Lint {
15650        label: "uefi_std",
15651        description: r##"# `uefi_std`
15652
15653
15654
15655The tracking issue for this feature is: [#100499]
15656
15657[#100499]: https://github.com/rust-lang/rust/issues/100499
15658
15659------------------------
15660"##,
15661        default_severity: Severity::Allow,
15662        warn_since: None,
15663        deny_since: None,
15664    },
15665    Lint {
15666        label: "uint_carryless_mul",
15667        description: r##"# `uint_carryless_mul`
15668
15669
15670
15671The tracking issue for this feature is: [#152080]
15672
15673[#152080]: https://github.com/rust-lang/rust/issues/152080
15674
15675------------------------
15676"##,
15677        default_severity: Severity::Allow,
15678        warn_since: None,
15679        deny_since: None,
15680    },
15681    Lint {
15682        label: "uint_gather_scatter_bits",
15683        description: r##"# `uint_gather_scatter_bits`
15684
15685
15686
15687The tracking issue for this feature is: [#149069]
15688
15689[#149069]: https://github.com/rust-lang/rust/issues/149069
15690
15691------------------------
15692"##,
15693        default_severity: Severity::Allow,
15694        warn_since: None,
15695        deny_since: None,
15696    },
15697    Lint {
15698        label: "unboxed_closures",
15699        description: r##"# `unboxed_closures`
15700
15701The tracking issue for this feature is [#29625]
15702
15703See Also: [`fn_traits`](../library-features/fn-traits.md)
15704
15705[#29625]: https://github.com/rust-lang/rust/issues/29625
15706
15707----
15708
15709The `unboxed_closures` feature allows you to write functions using the `"rust-call"` ABI,
15710required for implementing the [`Fn*`] family of traits. `"rust-call"` functions must have
15711exactly one (non self) argument, a tuple representing the argument list.
15712
15713[`Fn*`]: ../../std/ops/trait.Fn.html
15714
15715```rust
15716#![feature(unboxed_closures)]
15717
15718extern "rust-call" fn add_args(args: (u32, u32)) -> u32 {
15719    args.0 + args.1
15720}
15721
15722fn main() {}
15723```
15724"##,
15725        default_severity: Severity::Allow,
15726        warn_since: None,
15727        deny_since: None,
15728    },
15729    Lint {
15730        label: "unicode_internals",
15731        description: r##"# `unicode_internals`
15732
15733
15734
15735This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
15736
15737------------------------
15738"##,
15739        default_severity: Severity::Allow,
15740        warn_since: None,
15741        deny_since: None,
15742    },
15743    Lint {
15744        label: "unique_rc_arc",
15745        description: r##"# `unique_rc_arc`
15746
15747
15748
15749The tracking issue for this feature is: [#112566]
15750
15751[#112566]: https://github.com/rust-lang/rust/issues/112566
15752
15753------------------------
15754"##,
15755        default_severity: Severity::Allow,
15756        warn_since: None,
15757        deny_since: None,
15758    },
15759    Lint {
15760        label: "unix_file_vectored_at",
15761        description: r##"# `unix_file_vectored_at`
15762
15763
15764
15765The tracking issue for this feature is: [#89517]
15766
15767[#89517]: https://github.com/rust-lang/rust/issues/89517
15768
15769------------------------
15770"##,
15771        default_severity: Severity::Allow,
15772        warn_since: None,
15773        deny_since: None,
15774    },
15775    Lint {
15776        label: "unix_mkfifo",
15777        description: r##"# `unix_mkfifo`
15778
15779
15780
15781The tracking issue for this feature is: [#139324]
15782
15783[#139324]: https://github.com/rust-lang/rust/issues/139324
15784
15785------------------------
15786"##,
15787        default_severity: Severity::Allow,
15788        warn_since: None,
15789        deny_since: None,
15790    },
15791    Lint {
15792        label: "unix_send_signal",
15793        description: r##"# `unix_send_signal`
15794
15795
15796
15797The tracking issue for this feature is: [#141975]
15798
15799[#141975]: https://github.com/rust-lang/rust/issues/141975
15800
15801------------------------
15802"##,
15803        default_severity: Severity::Allow,
15804        warn_since: None,
15805        deny_since: None,
15806    },
15807    Lint {
15808        label: "unix_set_mark",
15809        description: r##"# `unix_set_mark`
15810
15811
15812
15813The tracking issue for this feature is: [#96467]
15814
15815[#96467]: https://github.com/rust-lang/rust/issues/96467
15816
15817------------------------
15818"##,
15819        default_severity: Severity::Allow,
15820        warn_since: None,
15821        deny_since: None,
15822    },
15823    Lint {
15824        label: "unix_socket_ancillary_data",
15825        description: r##"# `unix_socket_ancillary_data`
15826
15827
15828
15829The tracking issue for this feature is: [#76915]
15830
15831[#76915]: https://github.com/rust-lang/rust/issues/76915
15832
15833------------------------
15834"##,
15835        default_severity: Severity::Allow,
15836        warn_since: None,
15837        deny_since: None,
15838    },
15839    Lint {
15840        label: "unix_socket_exclbind",
15841        description: r##"# `unix_socket_exclbind`
15842
15843
15844
15845The tracking issue for this feature is: [#123481]
15846
15847[#123481]: https://github.com/rust-lang/rust/issues/123481
15848
15849------------------------
15850"##,
15851        default_severity: Severity::Allow,
15852        warn_since: None,
15853        deny_since: None,
15854    },
15855    Lint {
15856        label: "unix_socket_peek",
15857        description: r##"# `unix_socket_peek`
15858
15859
15860
15861The tracking issue for this feature is: [#76923]
15862
15863[#76923]: https://github.com/rust-lang/rust/issues/76923
15864
15865------------------------
15866"##,
15867        default_severity: Severity::Allow,
15868        warn_since: None,
15869        deny_since: None,
15870    },
15871    Lint {
15872        label: "unqualified_local_imports",
15873        description: r##"# `unqualified_local_imports`
15874
15875Helps with formatting for `group_imports = "StdExternalCrate"`.
15876
15877The tracking issue for this feature is: [#138299]
15878
15879[#138299]: https://github.com/rust-lang/rust/issues/138299
15880
15881------------------------
15882"##,
15883        default_severity: Severity::Allow,
15884        warn_since: None,
15885        deny_since: None,
15886    },
15887    Lint {
15888        label: "unsafe_binders",
15889        description: r##"# `unsafe_binders`
15890
15891Allows using `unsafe<'a> &'a T` unsafe binder types.
15892
15893The tracking issue for this feature is: [#130516]
15894
15895[#130516]: https://github.com/rust-lang/rust/issues/130516
15896
15897------------------------
15898"##,
15899        default_severity: Severity::Allow,
15900        warn_since: None,
15901        deny_since: None,
15902    },
15903    Lint {
15904        label: "unsafe_cell_access",
15905        description: r##"# `unsafe_cell_access`
15906
15907
15908
15909The tracking issue for this feature is: [#136327]
15910
15911[#136327]: https://github.com/rust-lang/rust/issues/136327
15912
15913------------------------
15914"##,
15915        default_severity: Severity::Allow,
15916        warn_since: None,
15917        deny_since: None,
15918    },
15919    Lint {
15920        label: "unsafe_fields",
15921        description: r##"# `unsafe_fields`
15922
15923Allows declaring fields `unsafe`.
15924
15925The tracking issue for this feature is: [#132922]
15926
15927[#132922]: https://github.com/rust-lang/rust/issues/132922
15928
15929------------------------
15930"##,
15931        default_severity: Severity::Allow,
15932        warn_since: None,
15933        deny_since: None,
15934    },
15935    Lint {
15936        label: "unsafe_pinned",
15937        description: r##"# `unsafe_pinned`
15938
15939
15940
15941The tracking issue for this feature is: [#125735]
15942
15943[#125735]: https://github.com/rust-lang/rust/issues/125735
15944
15945------------------------
15946"##,
15947        default_severity: Severity::Allow,
15948        warn_since: None,
15949        deny_since: None,
15950    },
15951    Lint {
15952        label: "unsafe_unpin",
15953        description: r##"# `unsafe_unpin`
15954
15955
15956
15957The tracking issue for this feature is: [#125735]
15958
15959[#125735]: https://github.com/rust-lang/rust/issues/125735
15960
15961------------------------
15962"##,
15963        default_severity: Severity::Allow,
15964        warn_since: None,
15965        deny_since: None,
15966    },
15967    Lint {
15968        label: "unsize",
15969        description: r##"# `unsize`
15970
15971
15972
15973The tracking issue for this feature is: [#18598]
15974
15975[#18598]: https://github.com/rust-lang/rust/issues/18598
15976
15977------------------------
15978"##,
15979        default_severity: Severity::Allow,
15980        warn_since: None,
15981        deny_since: None,
15982    },
15983    Lint {
15984        label: "unsized_const_params",
15985        description: r##"# `unsized_const_params`
15986
15987Allows const generic parameters to be defined with types that are not `Sized`, e.g. `fn foo<const N: [u8]>() {`.
15988
15989The tracking issue for this feature is: [#95174]
15990
15991[#95174]: https://github.com/rust-lang/rust/issues/95174
15992
15993------------------------
15994"##,
15995        default_severity: Severity::Allow,
15996        warn_since: None,
15997        deny_since: None,
15998    },
15999    Lint {
16000        label: "unsized_fn_params",
16001        description: r##"# `unsized_fn_params`
16002
16003Allows unsized fn parameters.
16004
16005The tracking issue for this feature is: [#48055]
16006
16007[#48055]: https://github.com/rust-lang/rust/issues/48055
16008
16009------------------------
16010"##,
16011        default_severity: Severity::Allow,
16012        warn_since: None,
16013        deny_since: None,
16014    },
16015    Lint {
16016        label: "unwrap_infallible",
16017        description: r##"# `unwrap_infallible`
16018
16019
16020
16021The tracking issue for this feature is: [#61695]
16022
16023[#61695]: https://github.com/rust-lang/rust/issues/61695
16024
16025------------------------
16026"##,
16027        default_severity: Severity::Allow,
16028        warn_since: None,
16029        deny_since: None,
16030    },
16031    Lint {
16032        label: "update_panic_count",
16033        description: r##"# `update_panic_count`
16034
16035This feature is internal to the Rust compiler and is not intended for general use.
16036
16037------------------------
16038"##,
16039        default_severity: Severity::Allow,
16040        warn_since: None,
16041        deny_since: None,
16042    },
16043    Lint {
16044        label: "used_with_arg",
16045        description: r##"# `used_with_arg`
16046
16047Allows using the `#[used(linker)]` (or `#[used(compiler)]`) attribute.
16048
16049The tracking issue for this feature is: [#93798]
16050
16051[#93798]: https://github.com/rust-lang/rust/issues/93798
16052
16053------------------------
16054"##,
16055        default_severity: Severity::Allow,
16056        warn_since: None,
16057        deny_since: None,
16058    },
16059    Lint {
16060        label: "utf16_extra",
16061        description: r##"# `utf16_extra`
16062
16063
16064
16065The tracking issue for this feature is: [#94919]
16066
16067[#94919]: https://github.com/rust-lang/rust/issues/94919
16068
16069------------------------
16070"##,
16071        default_severity: Severity::Allow,
16072        warn_since: None,
16073        deny_since: None,
16074    },
16075    Lint {
16076        label: "variant_count",
16077        description: r##"# `variant_count`
16078
16079
16080
16081The tracking issue for this feature is: [#73662]
16082
16083[#73662]: https://github.com/rust-lang/rust/issues/73662
16084
16085------------------------
16086"##,
16087        default_severity: Severity::Allow,
16088        warn_since: None,
16089        deny_since: None,
16090    },
16091    Lint {
16092        label: "vec_deque_extract_if",
16093        description: r##"# `vec_deque_extract_if`
16094
16095
16096
16097The tracking issue for this feature is: [#147750]
16098
16099[#147750]: https://github.com/rust-lang/rust/issues/147750
16100
16101------------------------
16102"##,
16103        default_severity: Severity::Allow,
16104        warn_since: None,
16105        deny_since: None,
16106    },
16107    Lint {
16108        label: "vec_deque_iter_as_slices",
16109        description: r##"# `vec_deque_iter_as_slices`
16110
16111
16112
16113The tracking issue for this feature is: [#123947]
16114
16115[#123947]: https://github.com/rust-lang/rust/issues/123947
16116
16117------------------------
16118"##,
16119        default_severity: Severity::Allow,
16120        warn_since: None,
16121        deny_since: None,
16122    },
16123    Lint {
16124        label: "vec_deque_truncate_front",
16125        description: r##"# `vec_deque_truncate_front`
16126
16127
16128
16129The tracking issue for this feature is: [#140667]
16130
16131[#140667]: https://github.com/rust-lang/rust/issues/140667
16132
16133------------------------
16134"##,
16135        default_severity: Severity::Allow,
16136        warn_since: None,
16137        deny_since: None,
16138    },
16139    Lint {
16140        label: "vec_fallible_shrink",
16141        description: r##"# `vec_fallible_shrink`
16142
16143
16144
16145The tracking issue for this feature is: [#152350]
16146
16147[#152350]: https://github.com/rust-lang/rust/issues/152350
16148
16149------------------------
16150"##,
16151        default_severity: Severity::Allow,
16152        warn_since: None,
16153        deny_since: None,
16154    },
16155    Lint {
16156        label: "vec_from_fn",
16157        description: r##"# `vec_from_fn`
16158
16159
16160
16161The tracking issue for this feature is: [#149698]
16162
16163[#149698]: https://github.com/rust-lang/rust/issues/149698
16164
16165------------------------
16166"##,
16167        default_severity: Severity::Allow,
16168        warn_since: None,
16169        deny_since: None,
16170    },
16171    Lint {
16172        label: "vec_into_chunks",
16173        description: r##"# `vec_into_chunks`
16174
16175
16176
16177The tracking issue for this feature is: [#142137]
16178
16179[#142137]: https://github.com/rust-lang/rust/issues/142137
16180
16181------------------------
16182"##,
16183        default_severity: Severity::Allow,
16184        warn_since: None,
16185        deny_since: None,
16186    },
16187    Lint {
16188        label: "vec_peek_mut",
16189        description: r##"# `vec_peek_mut`
16190
16191
16192
16193The tracking issue for this feature is: [#122742]
16194
16195[#122742]: https://github.com/rust-lang/rust/issues/122742
16196
16197------------------------
16198"##,
16199        default_severity: Severity::Allow,
16200        warn_since: None,
16201        deny_since: None,
16202    },
16203    Lint {
16204        label: "vec_push_within_capacity",
16205        description: r##"# `vec_push_within_capacity`
16206
16207
16208
16209The tracking issue for this feature is: [#100486]
16210
16211[#100486]: https://github.com/rust-lang/rust/issues/100486
16212
16213------------------------
16214"##,
16215        default_severity: Severity::Allow,
16216        warn_since: None,
16217        deny_since: None,
16218    },
16219    Lint {
16220        label: "vec_recycle",
16221        description: r##"# `vec_recycle`
16222
16223
16224
16225The tracking issue for this feature is: [#148227]
16226
16227[#148227]: https://github.com/rust-lang/rust/issues/148227
16228
16229------------------------
16230"##,
16231        default_severity: Severity::Allow,
16232        warn_since: None,
16233        deny_since: None,
16234    },
16235    Lint {
16236        label: "vec_split_at_spare",
16237        description: r##"# `vec_split_at_spare`
16238
16239
16240
16241The tracking issue for this feature is: [#81944]
16242
16243[#81944]: https://github.com/rust-lang/rust/issues/81944
16244
16245------------------------
16246"##,
16247        default_severity: Severity::Allow,
16248        warn_since: None,
16249        deny_since: None,
16250    },
16251    Lint {
16252        label: "vec_try_remove",
16253        description: r##"# `vec_try_remove`
16254
16255
16256
16257The tracking issue for this feature is: [#146954]
16258
16259[#146954]: https://github.com/rust-lang/rust/issues/146954
16260
16261------------------------
16262"##,
16263        default_severity: Severity::Allow,
16264        warn_since: None,
16265        deny_since: None,
16266    },
16267    Lint {
16268        label: "waker_fn",
16269        description: r##"# `waker_fn`
16270
16271
16272
16273The tracking issue for this feature is: [#149580]
16274
16275[#149580]: https://github.com/rust-lang/rust/issues/149580
16276
16277------------------------
16278"##,
16279        default_severity: Severity::Allow,
16280        warn_since: None,
16281        deny_since: None,
16282    },
16283    Lint {
16284        label: "waker_from_fn_ptr",
16285        description: r##"# `waker_from_fn_ptr`
16286
16287
16288
16289The tracking issue for this feature is: [#148457]
16290
16291[#148457]: https://github.com/rust-lang/rust/issues/148457
16292
16293------------------------
16294"##,
16295        default_severity: Severity::Allow,
16296        warn_since: None,
16297        deny_since: None,
16298    },
16299    Lint {
16300        label: "wasi_ext",
16301        description: r##"# `wasi_ext`
16302
16303
16304
16305The tracking issue for this feature is: [#71213]
16306
16307[#71213]: https://github.com/rust-lang/rust/issues/71213
16308
16309------------------------
16310"##,
16311        default_severity: Severity::Allow,
16312        warn_since: None,
16313        deny_since: None,
16314    },
16315    Lint {
16316        label: "wasm_target_feature",
16317        description: r##"# `wasm_target_feature`
16318
16319Target features on wasm.
16320
16321The tracking issue for this feature is: [#150260]
16322
16323[#150260]: https://github.com/rust-lang/rust/issues/150260
16324
16325------------------------
16326"##,
16327        default_severity: Severity::Allow,
16328        warn_since: None,
16329        deny_since: None,
16330    },
16331    Lint {
16332        label: "where_clause_attrs",
16333        description: r##"# `where_clause_attrs`
16334
16335Allows use of attributes in `where` clauses.
16336
16337The tracking issue for this feature is: [#115590]
16338
16339[#115590]: https://github.com/rust-lang/rust/issues/115590
16340
16341------------------------
16342"##,
16343        default_severity: Severity::Allow,
16344        warn_since: None,
16345        deny_since: None,
16346    },
16347    Lint {
16348        label: "widening_mul",
16349        description: r##"# `widening_mul`
16350
16351
16352
16353The tracking issue for this feature is: [#152016]
16354
16355[#152016]: https://github.com/rust-lang/rust/issues/152016
16356
16357------------------------
16358"##,
16359        default_severity: Severity::Allow,
16360        warn_since: None,
16361        deny_since: None,
16362    },
16363    Lint {
16364        label: "windows_by_handle",
16365        description: r##"# `windows_by_handle`
16366
16367
16368
16369The tracking issue for this feature is: [#63010]
16370
16371[#63010]: https://github.com/rust-lang/rust/issues/63010
16372
16373------------------------
16374"##,
16375        default_severity: Severity::Allow,
16376        warn_since: None,
16377        deny_since: None,
16378    },
16379    Lint {
16380        label: "windows_c",
16381        description: r##"# `windows_c`
16382
16383This feature is internal to the Rust compiler and is not intended for general use.
16384
16385------------------------
16386"##,
16387        default_severity: Severity::Allow,
16388        warn_since: None,
16389        deny_since: None,
16390    },
16391    Lint {
16392        label: "windows_change_time",
16393        description: r##"# `windows_change_time`
16394
16395
16396
16397The tracking issue for this feature is: [#121478]
16398
16399[#121478]: https://github.com/rust-lang/rust/issues/121478
16400
16401------------------------
16402"##,
16403        default_severity: Severity::Allow,
16404        warn_since: None,
16405        deny_since: None,
16406    },
16407    Lint {
16408        label: "windows_freeze_file_times",
16409        description: r##"# `windows_freeze_file_times`
16410
16411
16412
16413The tracking issue for this feature is: [#149715]
16414
16415[#149715]: https://github.com/rust-lang/rust/issues/149715
16416
16417------------------------
16418"##,
16419        default_severity: Severity::Allow,
16420        warn_since: None,
16421        deny_since: None,
16422    },
16423    Lint {
16424        label: "windows_handle",
16425        description: r##"# `windows_handle`
16426
16427This feature is internal to the Rust compiler and is not intended for general use.
16428
16429------------------------
16430"##,
16431        default_severity: Severity::Allow,
16432        warn_since: None,
16433        deny_since: None,
16434    },
16435    Lint {
16436        label: "windows_net",
16437        description: r##"# `windows_net`
16438
16439This feature is internal to the Rust compiler and is not intended for general use.
16440
16441------------------------
16442"##,
16443        default_severity: Severity::Allow,
16444        warn_since: None,
16445        deny_since: None,
16446    },
16447    Lint {
16448        label: "windows_process_exit_code_from",
16449        description: r##"# `windows_process_exit_code_from`
16450
16451
16452
16453The tracking issue for this feature is: [#111688]
16454
16455[#111688]: https://github.com/rust-lang/rust/issues/111688
16456
16457------------------------
16458"##,
16459        default_severity: Severity::Allow,
16460        warn_since: None,
16461        deny_since: None,
16462    },
16463    Lint {
16464        label: "windows_process_extensions_async_pipes",
16465        description: r##"# `windows_process_extensions_async_pipes`
16466
16467
16468
16469The tracking issue for this feature is: [#98289]
16470
16471[#98289]: https://github.com/rust-lang/rust/issues/98289
16472
16473------------------------
16474"##,
16475        default_severity: Severity::Allow,
16476        warn_since: None,
16477        deny_since: None,
16478    },
16479    Lint {
16480        label: "windows_process_extensions_force_quotes",
16481        description: r##"# `windows_process_extensions_force_quotes`
16482
16483
16484
16485The tracking issue for this feature is: [#82227]
16486
16487[#82227]: https://github.com/rust-lang/rust/issues/82227
16488
16489------------------------
16490"##,
16491        default_severity: Severity::Allow,
16492        warn_since: None,
16493        deny_since: None,
16494    },
16495    Lint {
16496        label: "windows_process_extensions_inherit_handles",
16497        description: r##"# `windows_process_extensions_inherit_handles`
16498
16499
16500
16501The tracking issue for this feature is: [#146407]
16502
16503[#146407]: https://github.com/rust-lang/rust/issues/146407
16504
16505------------------------
16506"##,
16507        default_severity: Severity::Allow,
16508        warn_since: None,
16509        deny_since: None,
16510    },
16511    Lint {
16512        label: "windows_process_extensions_main_thread_handle",
16513        description: r##"# `windows_process_extensions_main_thread_handle`
16514
16515
16516
16517The tracking issue for this feature is: [#96723]
16518
16519[#96723]: https://github.com/rust-lang/rust/issues/96723
16520
16521------------------------
16522"##,
16523        default_severity: Severity::Allow,
16524        warn_since: None,
16525        deny_since: None,
16526    },
16527    Lint {
16528        label: "windows_process_extensions_raw_attribute",
16529        description: r##"# `windows_process_extensions_raw_attribute`
16530
16531
16532
16533The tracking issue for this feature is: [#114854]
16534
16535[#114854]: https://github.com/rust-lang/rust/issues/114854
16536
16537------------------------
16538"##,
16539        default_severity: Severity::Allow,
16540        warn_since: None,
16541        deny_since: None,
16542    },
16543    Lint {
16544        label: "windows_process_extensions_show_window",
16545        description: r##"# `windows_process_extensions_show_window`
16546
16547
16548
16549The tracking issue for this feature is: [#127544]
16550
16551[#127544]: https://github.com/rust-lang/rust/issues/127544
16552
16553------------------------
16554"##,
16555        default_severity: Severity::Allow,
16556        warn_since: None,
16557        deny_since: None,
16558    },
16559    Lint {
16560        label: "windows_process_extensions_startupinfo",
16561        description: r##"# `windows_process_extensions_startupinfo`
16562
16563
16564
16565The tracking issue for this feature is: [#141010]
16566
16567[#141010]: https://github.com/rust-lang/rust/issues/141010
16568
16569------------------------
16570"##,
16571        default_severity: Severity::Allow,
16572        warn_since: None,
16573        deny_since: None,
16574    },
16575    Lint {
16576        label: "windows_stdio",
16577        description: r##"# `windows_stdio`
16578
16579This feature is internal to the Rust compiler and is not intended for general use.
16580
16581------------------------
16582"##,
16583        default_severity: Severity::Allow,
16584        warn_since: None,
16585        deny_since: None,
16586    },
16587    Lint {
16588        label: "windows_unix_domain_sockets",
16589        description: r##"# `windows_unix_domain_sockets`
16590
16591
16592
16593The tracking issue for this feature is: [#150487]
16594
16595[#150487]: https://github.com/rust-lang/rust/issues/150487
16596
16597------------------------
16598"##,
16599        default_severity: Severity::Allow,
16600        warn_since: None,
16601        deny_since: None,
16602    },
16603    Lint {
16604        label: "with_negative_coherence",
16605        description: r##"# `with_negative_coherence`
16606
16607Use for stable + negative coherence and strict coherence depending on trait's rustc_strict_coherence value.
16608
16609This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
16610
16611------------------------
16612"##,
16613        default_severity: Severity::Allow,
16614        warn_since: None,
16615        deny_since: None,
16616    },
16617    Lint {
16618        label: "wrapping_int_impl",
16619        description: r##"# `wrapping_int_impl`
16620
16621
16622
16623The tracking issue for this feature is: [#32463]
16624
16625[#32463]: https://github.com/rust-lang/rust/issues/32463
16626
16627------------------------
16628"##,
16629        default_severity: Severity::Allow,
16630        warn_since: None,
16631        deny_since: None,
16632    },
16633    Lint {
16634        label: "wrapping_next_power_of_two",
16635        description: r##"# `wrapping_next_power_of_two`
16636
16637
16638
16639The tracking issue for this feature is: [#32463]
16640
16641[#32463]: https://github.com/rust-lang/rust/issues/32463
16642
16643------------------------
16644"##,
16645        default_severity: Severity::Allow,
16646        warn_since: None,
16647        deny_since: None,
16648    },
16649    Lint {
16650        label: "write_all_vectored",
16651        description: r##"# `write_all_vectored`
16652
16653
16654
16655The tracking issue for this feature is: [#70436]
16656
16657[#70436]: https://github.com/rust-lang/rust/issues/70436
16658
16659------------------------
16660"##,
16661        default_severity: Severity::Allow,
16662        warn_since: None,
16663        deny_since: None,
16664    },
16665    Lint {
16666        label: "wtf8_internals",
16667        description: r##"# `wtf8_internals`
16668
16669
16670
16671This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
16672
16673------------------------
16674"##,
16675        default_severity: Severity::Allow,
16676        warn_since: None,
16677        deny_since: None,
16678    },
16679    Lint {
16680        label: "x86_amx_intrinsics",
16681        description: r##"# `x86_amx_intrinsics`
16682
16683Allows use of x86 `AMX` target-feature attributes and intrinsics
16684
16685The tracking issue for this feature is: [#126622]
16686
16687[#126622]: https://github.com/rust-lang/rust/issues/126622
16688
16689------------------------
16690"##,
16691        default_severity: Severity::Allow,
16692        warn_since: None,
16693        deny_since: None,
16694    },
16695    Lint {
16696        label: "x87_target_feature",
16697        description: r##"# `x87_target_feature`
16698
16699The x87 target feature on x86.
16700
16701The tracking issue for this feature is: [#150261]
16702
16703[#150261]: https://github.com/rust-lang/rust/issues/150261
16704
16705------------------------
16706"##,
16707        default_severity: Severity::Allow,
16708        warn_since: None,
16709        deny_since: None,
16710    },
16711    Lint {
16712        label: "xop_target_feature",
16713        description: r##"# `xop_target_feature`
16714
16715Allows use of the `xop` target-feature
16716
16717The tracking issue for this feature is: [#127208]
16718
16719[#127208]: https://github.com/rust-lang/rust/issues/127208
16720
16721------------------------
16722"##,
16723        default_severity: Severity::Allow,
16724        warn_since: None,
16725        deny_since: None,
16726    },
16727    Lint {
16728        label: "yeet_desugar_details",
16729        description: r##"# `yeet_desugar_details`
16730
16731
16732
16733This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
16734
16735------------------------
16736"##,
16737        default_severity: Severity::Allow,
16738        warn_since: None,
16739        deny_since: None,
16740    },
16741    Lint {
16742        label: "yeet_expr",
16743        description: r##"# `yeet_expr`
16744
16745The tracking issue for this feature is: [#96373]
16746
16747[#96373]: https://github.com/rust-lang/rust/issues/96373
16748
16749------------------------
16750
16751The `yeet_expr` feature adds support for `do yeet` expressions,
16752which can be used to early-exit from a function or `try` block.
16753
16754These are highly experimental, thus the placeholder syntax.
16755
16756```rust,edition2021
16757#![feature(yeet_expr)]
16758
16759fn foo() -> Result<String, i32> {
16760    do yeet 4;
16761}
16762assert_eq!(foo(), Err(4));
16763
16764fn bar() -> Option<String> {
16765    do yeet;
16766}
16767assert_eq!(bar(), None);
16768```
16769"##,
16770        default_severity: Severity::Allow,
16771        warn_since: None,
16772        deny_since: None,
16773    },
16774    Lint {
16775        label: "yield_expr",
16776        description: r##"# `yield_expr`
16777
16778
16779
16780The tracking issue for this feature is: [#43122]
16781
16782[#43122]: https://github.com/rust-lang/rust/issues/43122
16783
16784------------------------
16785"##,
16786        default_severity: Severity::Allow,
16787        warn_since: None,
16788        deny_since: None,
16789    },
16790];
16791
16792pub const CLIPPY_LINTS: &[Lint] = &[
16793    Lint {
16794        label: "clippy::absolute_paths",
16795        description: r##"Checks for usage of items through absolute paths, like `std::env::current_dir`."##,
16796        default_severity: Severity::Allow,
16797        warn_since: None,
16798        deny_since: None,
16799    },
16800    Lint {
16801        label: "clippy::absurd_extreme_comparisons",
16802        description: r##"Checks for comparisons where one side of the relation is
16803either the minimum or maximum value for its type and warns if it involves a
16804case that is always true or always false. Only integer and boolean types are
16805checked."##,
16806        default_severity: Severity::Allow,
16807        warn_since: None,
16808        deny_since: None,
16809    },
16810    Lint {
16811        label: "clippy::alloc_instead_of_core",
16812        description: r##"Finds items imported through `alloc` when available through `core`."##,
16813        default_severity: Severity::Allow,
16814        warn_since: None,
16815        deny_since: None,
16816    },
16817    Lint {
16818        label: "clippy::allow_attributes",
16819        description: r##"Checks for usage of the `#[allow]` attribute and suggests replacing it with
16820the `#[expect]` (See [RFC 2383](https://rust-lang.github.io/rfcs/2383-lint-reasons.html))
16821
16822This lint only warns outer attributes (`#[allow]`), as inner attributes
16823(`#![allow]`) are usually used to enable or disable lints on a global scale."##,
16824        default_severity: Severity::Allow,
16825        warn_since: None,
16826        deny_since: None,
16827    },
16828    Lint {
16829        label: "clippy::allow_attributes_without_reason",
16830        description: r##"Checks for attributes that allow lints without a reason."##,
16831        default_severity: Severity::Allow,
16832        warn_since: None,
16833        deny_since: None,
16834    },
16835    Lint {
16836        label: "clippy::almost_complete_range",
16837        description: r##"Checks for ranges which almost include the entire range of letters from 'a' to 'z'
16838or digits from '0' to '9', but don't because they're a half open range."##,
16839        default_severity: Severity::Allow,
16840        warn_since: None,
16841        deny_since: None,
16842    },
16843    Lint {
16844        label: "clippy::almost_swapped",
16845        description: r##"Checks for `foo = bar; bar = foo` sequences."##,
16846        default_severity: Severity::Allow,
16847        warn_since: None,
16848        deny_since: None,
16849    },
16850    Lint {
16851        label: "clippy::approx_constant",
16852        description: r##"Checks for floating point literals that approximate
16853constants which are defined in
16854[`std::f32::consts`](https://doc.rust-lang.org/stable/std/f32/consts/#constants)
16855or
16856[`std::f64::consts`](https://doc.rust-lang.org/stable/std/f64/consts/#constants),
16857respectively, suggesting to use the predefined constant."##,
16858        default_severity: Severity::Allow,
16859        warn_since: None,
16860        deny_since: None,
16861    },
16862    Lint {
16863        label: "clippy::arc_with_non_send_sync",
16864        description: r##".
16865This lint warns when you use `Arc` with a type that does not implement `Send` or `Sync`."##,
16866        default_severity: Severity::Allow,
16867        warn_since: None,
16868        deny_since: None,
16869    },
16870    Lint {
16871        label: "clippy::arithmetic_side_effects",
16872        description: r##"Checks any kind of arithmetic operation of any type.
16873
16874Operators like `+`, `-`, `*` or `<<` are usually capable of overflowing according to the [Rust
16875Reference](https://doc.rust-lang.org/reference/expressions/operator-expr.html#overflow),
16876or can panic (`/`, `%`).
16877
16878Known safe built-in types like `Wrapping` or `Saturating`, floats, operations in constant
16879environments, allowed types and non-constant operations that won't overflow are ignored."##,
16880        default_severity: Severity::Allow,
16881        warn_since: None,
16882        deny_since: None,
16883    },
16884    Lint {
16885        label: "clippy::as_conversions",
16886        description: r##"Checks for usage of `as` conversions.
16887
16888Note that this lint is specialized in linting *every single* use of `as`
16889regardless of whether good alternatives exist or not.
16890If you want more precise lints for `as`, please consider using these separate lints:
16891`unnecessary_cast`, `cast_lossless/cast_possible_truncation/cast_possible_wrap/cast_precision_loss/cast_sign_loss`,
16892`fn_to_numeric_cast(_with_truncation)`, `char_lit_as_u8`, `ref_to_mut` and `ptr_as_ptr`.
16893There is a good explanation the reason why this lint should work in this way and how it is useful
16894[in this issue](https://github.com/rust-lang/rust-clippy/issues/5122)."##,
16895        default_severity: Severity::Allow,
16896        warn_since: None,
16897        deny_since: None,
16898    },
16899    Lint {
16900        label: "clippy::as_ptr_cast_mut",
16901        description: r##"Checks for the result of a `&self`-taking `as_ptr` being cast to a mutable pointer."##,
16902        default_severity: Severity::Allow,
16903        warn_since: None,
16904        deny_since: None,
16905    },
16906    Lint {
16907        label: "clippy::as_underscore",
16908        description: r##"Checks for the usage of `as _` conversion using inferred type."##,
16909        default_severity: Severity::Allow,
16910        warn_since: None,
16911        deny_since: None,
16912    },
16913    Lint {
16914        label: "clippy::assertions_on_constants",
16915        description: r##"Checks for `assert!(true)` and `assert!(false)` calls."##,
16916        default_severity: Severity::Allow,
16917        warn_since: None,
16918        deny_since: None,
16919    },
16920    Lint {
16921        label: "clippy::assertions_on_result_states",
16922        description: r##"Checks for `assert!(r.is_ok())` or `assert!(r.is_err())` calls."##,
16923        default_severity: Severity::Allow,
16924        warn_since: None,
16925        deny_since: None,
16926    },
16927    Lint {
16928        label: "clippy::assign_op_pattern",
16929        description: r##"Checks for `a = a op b` or `a = b commutative_op a`
16930patterns."##,
16931        default_severity: Severity::Allow,
16932        warn_since: None,
16933        deny_since: None,
16934    },
16935    Lint {
16936        label: "clippy::assign_ops",
16937        description: r##"Nothing. This lint has been deprecated"##,
16938        default_severity: Severity::Allow,
16939        warn_since: None,
16940        deny_since: None,
16941    },
16942    Lint {
16943        label: "clippy::assigning_clones",
16944        description: r##"Checks for code like `foo = bar.clone();`"##,
16945        default_severity: Severity::Allow,
16946        warn_since: None,
16947        deny_since: None,
16948    },
16949    Lint {
16950        label: "clippy::async_yields_async",
16951        description: r##"Checks for async blocks that yield values of types
16952that can themselves be awaited."##,
16953        default_severity: Severity::Allow,
16954        warn_since: None,
16955        deny_since: None,
16956    },
16957    Lint {
16958        label: "clippy::await_holding_invalid_type",
16959        description: r##"Allows users to configure types which should not be held across await
16960suspension points."##,
16961        default_severity: Severity::Allow,
16962        warn_since: None,
16963        deny_since: None,
16964    },
16965    Lint {
16966        label: "clippy::await_holding_lock",
16967        description: r##"Checks for calls to `await` while holding a non-async-aware
16968`MutexGuard`."##,
16969        default_severity: Severity::Allow,
16970        warn_since: None,
16971        deny_since: None,
16972    },
16973    Lint {
16974        label: "clippy::await_holding_refcell_ref",
16975        description: r##"Checks for calls to `await` while holding a `RefCell`, `Ref`, or `RefMut`."##,
16976        default_severity: Severity::Allow,
16977        warn_since: None,
16978        deny_since: None,
16979    },
16980    Lint {
16981        label: "clippy::bad_bit_mask",
16982        description: r##"Checks for incompatible bit masks in comparisons.
16983
16984The formula for detecting if an expression of the type `_ <bit_op> m
16985<cmp_op> c` (where `<bit_op>` is one of {`&`, `|`} and `<cmp_op>` is one of
16986{`!=`, `>=`, `>`, `!=`, `>=`, `>`}) can be determined from the following
16987table:
16988
16989|Comparison  |Bit Op|Example      |is always|Formula               |
16990|------------|------|-------------|---------|----------------------|
16991|`==` or `!=`| `&`  |`x & 2 == 3` |`false`  |`c & m != c`          |
16992|`<`  or `>=`| `&`  |`x & 2 < 3`  |`true`   |`m < c`               |
16993|`>`  or `<=`| `&`  |`x & 1 > 1`  |`false`  |`m <= c`              |
16994|`==` or `!=`| `\\|` |`x \\| 1 == 0`|`false`  |`c \\| m != c`         |
16995|`<`  or `>=`| `\\|` |`x \\| 1 < 1` |`false`  |`m >= c`              |
16996|`<=` or `>` | `\\|` |`x \\| 1 > 0` |`true`   |`m > c`               |"##,
16997        default_severity: Severity::Allow,
16998        warn_since: None,
16999        deny_since: None,
17000    },
17001    Lint {
17002        label: "clippy::big_endian_bytes",
17003        description: r##"Checks for the usage of the `to_be_bytes` method and/or the function `from_be_bytes`."##,
17004        default_severity: Severity::Allow,
17005        warn_since: None,
17006        deny_since: None,
17007    },
17008    Lint {
17009        label: "clippy::bind_instead_of_map",
17010        description: r##"Checks for usage of `_.and_then(|x| Some(y))`, `_.and_then(|x| Ok(y))`
17011or `_.or_else(|x| Err(y))`."##,
17012        default_severity: Severity::Allow,
17013        warn_since: None,
17014        deny_since: None,
17015    },
17016    Lint {
17017        label: "clippy::blanket_clippy_restriction_lints",
17018        description: r##"Checks for `warn`/`deny`/`forbid` attributes targeting the whole clippy::restriction category."##,
17019        default_severity: Severity::Allow,
17020        warn_since: None,
17021        deny_since: None,
17022    },
17023    Lint {
17024        label: "clippy::blocks_in_conditions",
17025        description: r##"Checks for `if` and `match` conditions that use blocks containing an
17026expression, statements or conditions that use closures with blocks."##,
17027        default_severity: Severity::Allow,
17028        warn_since: None,
17029        deny_since: None,
17030    },
17031    Lint {
17032        label: "clippy::bool_assert_comparison",
17033        description: r##"This lint warns about boolean comparisons in assert-like macros."##,
17034        default_severity: Severity::Allow,
17035        warn_since: None,
17036        deny_since: None,
17037    },
17038    Lint {
17039        label: "clippy::bool_comparison",
17040        description: r##"Checks for expressions of the form `x == true`,
17041`x != true` and order comparisons such as `x < true` (or vice versa) and
17042suggest using the variable directly."##,
17043        default_severity: Severity::Allow,
17044        warn_since: None,
17045        deny_since: None,
17046    },
17047    Lint {
17048        label: "clippy::bool_to_int_with_if",
17049        description: r##"Instead of using an if statement to convert a bool to an int,
17050this lint suggests using a `from()` function or an `as` coercion."##,
17051        default_severity: Severity::Allow,
17052        warn_since: None,
17053        deny_since: None,
17054    },
17055    Lint {
17056        label: "clippy::borrow_as_ptr",
17057        description: r##"Checks for the usage of `&expr as *const T` or
17058`&mut expr as *mut T`, and suggest using `ptr::addr_of` or
17059`ptr::addr_of_mut` instead."##,
17060        default_severity: Severity::Allow,
17061        warn_since: None,
17062        deny_since: None,
17063    },
17064    Lint {
17065        label: "clippy::borrow_deref_ref",
17066        description: r##"Checks for `&*(&T)`."##,
17067        default_severity: Severity::Allow,
17068        warn_since: None,
17069        deny_since: None,
17070    },
17071    Lint {
17072        label: "clippy::borrow_interior_mutable_const",
17073        description: r##"Checks if `const` items which is interior mutable (e.g.,
17074contains a `Cell`, `Mutex`, `AtomicXxxx`, etc.) has been borrowed directly."##,
17075        default_severity: Severity::Allow,
17076        warn_since: None,
17077        deny_since: None,
17078    },
17079    Lint {
17080        label: "clippy::borrowed_box",
17081        description: r##"Checks for usage of `&Box<T>` anywhere in the code.
17082Check the [Box documentation](https://doc.rust-lang.org/std/boxed/index.html) for more information."##,
17083        default_severity: Severity::Allow,
17084        warn_since: None,
17085        deny_since: None,
17086    },
17087    Lint {
17088        label: "clippy::box_collection",
17089        description: r##"Checks for usage of `Box<T>` where T is a collection such as Vec anywhere in the code.
17090Check the [Box documentation](https://doc.rust-lang.org/std/boxed/index.html) for more information."##,
17091        default_severity: Severity::Allow,
17092        warn_since: None,
17093        deny_since: None,
17094    },
17095    Lint {
17096        label: "clippy::box_default",
17097        description: r##"checks for `Box::new(Default::default())`, which can be written as
17098`Box::default()`."##,
17099        default_severity: Severity::Allow,
17100        warn_since: None,
17101        deny_since: None,
17102    },
17103    Lint {
17104        label: "clippy::boxed_local",
17105        description: r##"Checks for usage of `Box<T>` where an unboxed `T` would
17106work fine."##,
17107        default_severity: Severity::Allow,
17108        warn_since: None,
17109        deny_since: None,
17110    },
17111    Lint {
17112        label: "clippy::branches_sharing_code",
17113        description: r##"Checks if the `if` and `else` block contain shared code that can be
17114moved out of the blocks."##,
17115        default_severity: Severity::Allow,
17116        warn_since: None,
17117        deny_since: None,
17118    },
17119    Lint {
17120        label: "clippy::builtin_type_shadow",
17121        description: r##"Warns if a generic shadows a built-in type."##,
17122        default_severity: Severity::Allow,
17123        warn_since: None,
17124        deny_since: None,
17125    },
17126    Lint {
17127        label: "clippy::byte_char_slices",
17128        description: r##"Checks for hard to read slices of byte characters, that could be more easily expressed as a
17129byte string."##,
17130        default_severity: Severity::Allow,
17131        warn_since: None,
17132        deny_since: None,
17133    },
17134    Lint {
17135        label: "clippy::bytes_count_to_len",
17136        description: r##"It checks for `str::bytes().count()` and suggests replacing it with
17137`str::len()`."##,
17138        default_severity: Severity::Allow,
17139        warn_since: None,
17140        deny_since: None,
17141    },
17142    Lint {
17143        label: "clippy::bytes_nth",
17144        description: r##"Checks for the use of `.bytes().nth()`."##,
17145        default_severity: Severity::Allow,
17146        warn_since: None,
17147        deny_since: None,
17148    },
17149    Lint {
17150        label: "clippy::cargo_common_metadata",
17151        description: r##"Checks to see if all common metadata is defined in
17152`Cargo.toml`. See: https://rust-lang-nursery.github.io/api-guidelines/documentation.html#cargotoml-includes-all-common-metadata-c-metadata"##,
17153        default_severity: Severity::Allow,
17154        warn_since: None,
17155        deny_since: None,
17156    },
17157    Lint {
17158        label: "clippy::case_sensitive_file_extension_comparisons",
17159        description: r##"Checks for calls to `ends_with` with possible file extensions
17160and suggests to use a case-insensitive approach instead."##,
17161        default_severity: Severity::Allow,
17162        warn_since: None,
17163        deny_since: None,
17164    },
17165    Lint {
17166        label: "clippy::cast_abs_to_unsigned",
17167        description: r##"Checks for usage of the `abs()` method that cast the result to unsigned."##,
17168        default_severity: Severity::Allow,
17169        warn_since: None,
17170        deny_since: None,
17171    },
17172    Lint {
17173        label: "clippy::cast_enum_constructor",
17174        description: r##"Checks for casts from an enum tuple constructor to an integer."##,
17175        default_severity: Severity::Allow,
17176        warn_since: None,
17177        deny_since: None,
17178    },
17179    Lint {
17180        label: "clippy::cast_enum_truncation",
17181        description: r##"Checks for casts from an enum type to an integral type that will definitely truncate the
17182value."##,
17183        default_severity: Severity::Allow,
17184        warn_since: None,
17185        deny_since: None,
17186    },
17187    Lint {
17188        label: "clippy::cast_lossless",
17189        description: r##"Checks for casts between numeric types that can be replaced by safe
17190conversion functions."##,
17191        default_severity: Severity::Allow,
17192        warn_since: None,
17193        deny_since: None,
17194    },
17195    Lint {
17196        label: "clippy::cast_nan_to_int",
17197        description: r##"Checks for a known NaN float being cast to an integer"##,
17198        default_severity: Severity::Allow,
17199        warn_since: None,
17200        deny_since: None,
17201    },
17202    Lint {
17203        label: "clippy::cast_possible_truncation",
17204        description: r##"Checks for casts between numeric types that may
17205truncate large values. This is expected behavior, so the cast is `Allow` by
17206default. It suggests user either explicitly ignore the lint,
17207or use `try_from()` and handle the truncation, default, or panic explicitly."##,
17208        default_severity: Severity::Allow,
17209        warn_since: None,
17210        deny_since: None,
17211    },
17212    Lint {
17213        label: "clippy::cast_possible_wrap",
17214        description: r##"Checks for casts from an unsigned type to a signed type of
17215the same size, or possibly smaller due to target-dependent integers.
17216Performing such a cast is a no-op for the compiler (that is, nothing is
17217changed at the bit level), and the binary representation of the value is
17218reinterpreted. This can cause wrapping if the value is too big
17219for the target signed type. However, the cast works as defined, so this lint
17220is `Allow` by default."##,
17221        default_severity: Severity::Allow,
17222        warn_since: None,
17223        deny_since: None,
17224    },
17225    Lint {
17226        label: "clippy::cast_precision_loss",
17227        description: r##"Checks for casts from any numeric type to a float type where
17228the receiving type cannot store all values from the original type without
17229rounding errors. This possible rounding is to be expected, so this lint is
17230`Allow` by default.
17231
17232Basically, this warns on casting any integer with 32 or more bits to `f32`
17233or any 64-bit integer to `f64`."##,
17234        default_severity: Severity::Allow,
17235        warn_since: None,
17236        deny_since: None,
17237    },
17238    Lint {
17239        label: "clippy::cast_ptr_alignment",
17240        description: r##"Checks for casts, using `as` or `pointer::cast`, from a
17241less strictly aligned pointer to a more strictly aligned pointer."##,
17242        default_severity: Severity::Allow,
17243        warn_since: None,
17244        deny_since: None,
17245    },
17246    Lint {
17247        label: "clippy::cast_sign_loss",
17248        description: r##"Checks for casts from a signed to an unsigned numeric
17249type. In this case, negative values wrap around to large positive values,
17250which can be quite surprising in practice. However, since the cast works as
17251defined, this lint is `Allow` by default."##,
17252        default_severity: Severity::Allow,
17253        warn_since: None,
17254        deny_since: None,
17255    },
17256    Lint {
17257        label: "clippy::cast_slice_different_sizes",
17258        description: r##"Checks for `as` casts between raw pointers to slices with differently sized elements."##,
17259        default_severity: Severity::Allow,
17260        warn_since: None,
17261        deny_since: None,
17262    },
17263    Lint {
17264        label: "clippy::cast_slice_from_raw_parts",
17265        description: r##"Checks for a raw slice being cast to a slice pointer"##,
17266        default_severity: Severity::Allow,
17267        warn_since: None,
17268        deny_since: None,
17269    },
17270    Lint {
17271        label: "clippy::cfg_not_test",
17272        description: r##"Checks for usage of `cfg` that excludes code from `test` builds. (i.e., `#[cfg(not(test))]`)"##,
17273        default_severity: Severity::Allow,
17274        warn_since: None,
17275        deny_since: None,
17276    },
17277    Lint {
17278        label: "clippy::char_lit_as_u8",
17279        description: r##"Checks for expressions where a character literal is cast
17280to `u8` and suggests using a byte literal instead."##,
17281        default_severity: Severity::Allow,
17282        warn_since: None,
17283        deny_since: None,
17284    },
17285    Lint {
17286        label: "clippy::chars_last_cmp",
17287        description: r##"Checks for usage of `_.chars().last()` or
17288`_.chars().next_back()` on a `str` to check if it ends with a given char."##,
17289        default_severity: Severity::Allow,
17290        warn_since: None,
17291        deny_since: None,
17292    },
17293    Lint {
17294        label: "clippy::chars_next_cmp",
17295        description: r##"Checks for usage of `.chars().next()` on a `str` to check
17296if it starts with a given char."##,
17297        default_severity: Severity::Allow,
17298        warn_since: None,
17299        deny_since: None,
17300    },
17301    Lint {
17302        label: "clippy::checked_conversions",
17303        description: r##"Checks for explicit bounds checking when casting."##,
17304        default_severity: Severity::Allow,
17305        warn_since: None,
17306        deny_since: None,
17307    },
17308    Lint {
17309        label: "clippy::clear_with_drain",
17310        description: r##"Checks for usage of `.drain(..)` for the sole purpose of clearing a container."##,
17311        default_severity: Severity::Allow,
17312        warn_since: None,
17313        deny_since: None,
17314    },
17315    Lint {
17316        label: "clippy::clone_on_copy",
17317        description: r##"Checks for usage of `.clone()` on a `Copy` type."##,
17318        default_severity: Severity::Allow,
17319        warn_since: None,
17320        deny_since: None,
17321    },
17322    Lint {
17323        label: "clippy::clone_on_ref_ptr",
17324        description: r##"Checks for usage of `.clone()` on a ref-counted pointer,
17325(`Rc`, `Arc`, `rc::Weak`, or `sync::Weak`), and suggests calling Clone via unified
17326function syntax instead (e.g., `Rc::clone(foo)`)."##,
17327        default_severity: Severity::Allow,
17328        warn_since: None,
17329        deny_since: None,
17330    },
17331    Lint {
17332        label: "clippy::cloned_instead_of_copied",
17333        description: r##"Checks for usage of `cloned()` on an `Iterator` or `Option` where
17334`copied()` could be used instead."##,
17335        default_severity: Severity::Allow,
17336        warn_since: None,
17337        deny_since: None,
17338    },
17339    Lint {
17340        label: "clippy::cmp_null",
17341        description: r##"This lint checks for equality comparisons with `ptr::null`"##,
17342        default_severity: Severity::Allow,
17343        warn_since: None,
17344        deny_since: None,
17345    },
17346    Lint {
17347        label: "clippy::cmp_owned",
17348        description: r##"Checks for conversions to owned values just for the sake
17349of a comparison."##,
17350        default_severity: Severity::Allow,
17351        warn_since: None,
17352        deny_since: None,
17353    },
17354    Lint {
17355        label: "clippy::cognitive_complexity",
17356        description: r##"Checks for methods with high cognitive complexity."##,
17357        default_severity: Severity::Allow,
17358        warn_since: None,
17359        deny_since: None,
17360    },
17361    Lint {
17362        label: "clippy::collapsible_else_if",
17363        description: r##"Checks for collapsible `else { if ... }` expressions
17364that can be collapsed to `else if ...`."##,
17365        default_severity: Severity::Allow,
17366        warn_since: None,
17367        deny_since: None,
17368    },
17369    Lint {
17370        label: "clippy::collapsible_if",
17371        description: r##"Checks for nested `if` statements which can be collapsed
17372by `&&`-combining their conditions."##,
17373        default_severity: Severity::Allow,
17374        warn_since: None,
17375        deny_since: None,
17376    },
17377    Lint {
17378        label: "clippy::collapsible_match",
17379        description: r##"Finds nested `match` or `if let` expressions where the patterns may be collapsed together
17380without adding any branches.
17381
17382Note that this lint is not intended to find _all_ cases where nested match patterns can be merged, but only
17383cases where merging would most likely make the code more readable."##,
17384        default_severity: Severity::Allow,
17385        warn_since: None,
17386        deny_since: None,
17387    },
17388    Lint {
17389        label: "clippy::collapsible_str_replace",
17390        description: r##"Checks for consecutive calls to `str::replace` (2 or more)
17391that can be collapsed into a single call."##,
17392        default_severity: Severity::Allow,
17393        warn_since: None,
17394        deny_since: None,
17395    },
17396    Lint {
17397        label: "clippy::collection_is_never_read",
17398        description: r##"Checks for collections that are never queried."##,
17399        default_severity: Severity::Allow,
17400        warn_since: None,
17401        deny_since: None,
17402    },
17403    Lint {
17404        label: "clippy::comparison_chain",
17405        description: r##"Checks comparison chains written with `if` that can be
17406rewritten with `match` and `cmp`."##,
17407        default_severity: Severity::Allow,
17408        warn_since: None,
17409        deny_since: None,
17410    },
17411    Lint {
17412        label: "clippy::comparison_to_empty",
17413        description: r##"Checks for comparing to an empty slice such as `` or `[]`,
17414and suggests using `.is_empty()` where applicable."##,
17415        default_severity: Severity::Allow,
17416        warn_since: None,
17417        deny_since: None,
17418    },
17419    Lint {
17420        label: "clippy::const_is_empty",
17421        description: r##"It identifies calls to `.is_empty()` on constant values."##,
17422        default_severity: Severity::Allow,
17423        warn_since: None,
17424        deny_since: None,
17425    },
17426    Lint {
17427        label: "clippy::copy_iterator",
17428        description: r##"Checks for types that implement `Copy` as well as
17429`Iterator`."##,
17430        default_severity: Severity::Allow,
17431        warn_since: None,
17432        deny_since: None,
17433    },
17434    Lint {
17435        label: "clippy::crate_in_macro_def",
17436        description: r##"Checks for usage of `crate` as opposed to `$crate` in a macro definition."##,
17437        default_severity: Severity::Allow,
17438        warn_since: None,
17439        deny_since: None,
17440    },
17441    Lint {
17442        label: "clippy::create_dir",
17443        description: r##"Checks usage of `std::fs::create_dir` and suggest using `std::fs::create_dir_all` instead."##,
17444        default_severity: Severity::Allow,
17445        warn_since: None,
17446        deny_since: None,
17447    },
17448    Lint {
17449        label: "clippy::crosspointer_transmute",
17450        description: r##"Checks for transmutes between a type `T` and `*T`."##,
17451        default_severity: Severity::Allow,
17452        warn_since: None,
17453        deny_since: None,
17454    },
17455    Lint {
17456        label: "clippy::dbg_macro",
17457        description: r##"Checks for usage of the [`dbg!`](https://doc.rust-lang.org/std/macro.dbg.html) macro."##,
17458        default_severity: Severity::Allow,
17459        warn_since: None,
17460        deny_since: None,
17461    },
17462    Lint {
17463        label: "clippy::debug_assert_with_mut_call",
17464        description: r##"Checks for function/method calls with a mutable
17465parameter in `debug_assert!`, `debug_assert_eq!` and `debug_assert_ne!` macros."##,
17466        default_severity: Severity::Allow,
17467        warn_since: None,
17468        deny_since: None,
17469    },
17470    Lint {
17471        label: "clippy::decimal_literal_representation",
17472        description: r##"Warns if there is a better representation for a numeric literal."##,
17473        default_severity: Severity::Allow,
17474        warn_since: None,
17475        deny_since: None,
17476    },
17477    Lint {
17478        label: "clippy::declare_interior_mutable_const",
17479        description: r##"Checks for declaration of `const` items which is interior
17480mutable (e.g., contains a `Cell`, `Mutex`, `AtomicXxxx`, etc.)."##,
17481        default_severity: Severity::Allow,
17482        warn_since: None,
17483        deny_since: None,
17484    },
17485    Lint {
17486        label: "clippy::default_constructed_unit_structs",
17487        description: r##"Checks for construction on unit struct using `default`."##,
17488        default_severity: Severity::Allow,
17489        warn_since: None,
17490        deny_since: None,
17491    },
17492    Lint {
17493        label: "clippy::default_instead_of_iter_empty",
17494        description: r##"It checks for `std::iter::Empty::default()` and suggests replacing it with
17495`std::iter::empty()`."##,
17496        default_severity: Severity::Allow,
17497        warn_since: None,
17498        deny_since: None,
17499    },
17500    Lint {
17501        label: "clippy::default_numeric_fallback",
17502        description: r##"Checks for usage of unconstrained numeric literals which may cause default numeric fallback in type
17503inference.
17504
17505Default numeric fallback means that if numeric types have not yet been bound to concrete
17506types at the end of type inference, then integer type is bound to `i32`, and similarly
17507floating type is bound to `f64`.
17508
17509See [RFC0212](https://github.com/rust-lang/rfcs/blob/master/text/0212-restore-int-fallback.md) for more information about the fallback."##,
17510        default_severity: Severity::Allow,
17511        warn_since: None,
17512        deny_since: None,
17513    },
17514    Lint {
17515        label: "clippy::default_trait_access",
17516        description: r##"Checks for literal calls to `Default::default()`."##,
17517        default_severity: Severity::Allow,
17518        warn_since: None,
17519        deny_since: None,
17520    },
17521    Lint {
17522        label: "clippy::default_union_representation",
17523        description: r##"Displays a warning when a union is declared with the default representation (without a `#[repr(C)]` attribute)."##,
17524        default_severity: Severity::Allow,
17525        warn_since: None,
17526        deny_since: None,
17527    },
17528    Lint {
17529        label: "clippy::deprecated_cfg_attr",
17530        description: r##"Checks for `#[cfg_attr(rustfmt, rustfmt_skip)]` and suggests to replace it
17531with `#[rustfmt::skip]`."##,
17532        default_severity: Severity::Allow,
17533        warn_since: None,
17534        deny_since: None,
17535    },
17536    Lint {
17537        label: "clippy::deprecated_clippy_cfg_attr",
17538        description: r##"Checks for `#[cfg_attr(feature = cargo-clippy, ...)]` and for
17539`#[cfg(feature = cargo-clippy)]` and suggests to replace it with
17540`#[cfg_attr(clippy, ...)]` or `#[cfg(clippy)]`."##,
17541        default_severity: Severity::Allow,
17542        warn_since: None,
17543        deny_since: None,
17544    },
17545    Lint {
17546        label: "clippy::deprecated_semver",
17547        description: r##"Checks for `#[deprecated]` annotations with a `since`
17548field that is not a valid semantic version. Also allows TBD to signal
17549future deprecation."##,
17550        default_severity: Severity::Allow,
17551        warn_since: None,
17552        deny_since: None,
17553    },
17554    Lint {
17555        label: "clippy::deref_addrof",
17556        description: r##"Checks for usage of `*&` and `*&mut` in expressions."##,
17557        default_severity: Severity::Allow,
17558        warn_since: None,
17559        deny_since: None,
17560    },
17561    Lint {
17562        label: "clippy::deref_by_slicing",
17563        description: r##"Checks for slicing expressions which are equivalent to dereferencing the
17564value."##,
17565        default_severity: Severity::Allow,
17566        warn_since: None,
17567        deny_since: None,
17568    },
17569    Lint {
17570        label: "clippy::derivable_impls",
17571        description: r##"Detects manual `std::default::Default` implementations that are identical to a derived implementation."##,
17572        default_severity: Severity::Allow,
17573        warn_since: None,
17574        deny_since: None,
17575    },
17576    Lint {
17577        label: "clippy::derive_ord_xor_partial_ord",
17578        description: r##"Lints against manual `PartialOrd` and `Ord` implementations for types with a derived `Ord`
17579or `PartialOrd` implementation."##,
17580        default_severity: Severity::Allow,
17581        warn_since: None,
17582        deny_since: None,
17583    },
17584    Lint {
17585        label: "clippy::derive_partial_eq_without_eq",
17586        description: r##"Checks for types that derive `PartialEq` and could implement `Eq`."##,
17587        default_severity: Severity::Allow,
17588        warn_since: None,
17589        deny_since: None,
17590    },
17591    Lint {
17592        label: "clippy::derived_hash_with_manual_eq",
17593        description: r##"Lints against manual `PartialEq` implementations for types with a derived `Hash`
17594implementation."##,
17595        default_severity: Severity::Allow,
17596        warn_since: None,
17597        deny_since: None,
17598    },
17599    Lint {
17600        label: "clippy::disallowed_macros",
17601        description: r##"Denies the configured macros in clippy.toml
17602
17603Note: Even though this lint is warn-by-default, it will only trigger if
17604macros are defined in the clippy.toml file."##,
17605        default_severity: Severity::Allow,
17606        warn_since: None,
17607        deny_since: None,
17608    },
17609    Lint {
17610        label: "clippy::disallowed_methods",
17611        description: r##"Denies the configured methods and functions in clippy.toml
17612
17613Note: Even though this lint is warn-by-default, it will only trigger if
17614methods are defined in the clippy.toml file."##,
17615        default_severity: Severity::Allow,
17616        warn_since: None,
17617        deny_since: None,
17618    },
17619    Lint {
17620        label: "clippy::disallowed_names",
17621        description: r##"Checks for usage of disallowed names for variables, such
17622as `foo`."##,
17623        default_severity: Severity::Allow,
17624        warn_since: None,
17625        deny_since: None,
17626    },
17627    Lint {
17628        label: "clippy::disallowed_script_idents",
17629        description: r##"Checks for usage of unicode scripts other than those explicitly allowed
17630by the lint config.
17631
17632This lint doesn't take into account non-text scripts such as `Unknown` and `Linear_A`.
17633It also ignores the `Common` script type.
17634While configuring, be sure to use official script name [aliases] from
17635[the list of supported scripts][supported_scripts].
17636
17637See also: [`non_ascii_idents`].
17638
17639[aliases]: http://www.unicode.org/reports/tr24/tr24-31.html#Script_Value_Aliases
17640[supported_scripts]: https://www.unicode.org/iso15924/iso15924-codes.html"##,
17641        default_severity: Severity::Allow,
17642        warn_since: None,
17643        deny_since: None,
17644    },
17645    Lint {
17646        label: "clippy::disallowed_types",
17647        description: r##"Denies the configured types in clippy.toml.
17648
17649Note: Even though this lint is warn-by-default, it will only trigger if
17650types are defined in the clippy.toml file."##,
17651        default_severity: Severity::Allow,
17652        warn_since: None,
17653        deny_since: None,
17654    },
17655    Lint {
17656        label: "clippy::diverging_sub_expression",
17657        description: r##"Checks for diverging calls that are not match arms or
17658statements."##,
17659        default_severity: Severity::Allow,
17660        warn_since: None,
17661        deny_since: None,
17662    },
17663    Lint {
17664        label: "clippy::doc_lazy_continuation",
17665        description: r##"In CommonMark Markdown, the language used to write doc comments, a
17666paragraph nested within a list or block quote does not need any line
17667after the first one to be indented or marked. The specification calls
17668this a lazy paragraph continuation."##,
17669        default_severity: Severity::Allow,
17670        warn_since: None,
17671        deny_since: None,
17672    },
17673    Lint {
17674        label: "clippy::doc_link_with_quotes",
17675        description: r##"Detects the syntax `['foo']` in documentation comments (notice quotes instead of backticks)
17676outside of code blocks"##,
17677        default_severity: Severity::Allow,
17678        warn_since: None,
17679        deny_since: None,
17680    },
17681    Lint {
17682        label: "clippy::doc_markdown",
17683        description: r##"Checks for the presence of `_`, `::` or camel-case words
17684outside ticks in documentation."##,
17685        default_severity: Severity::Allow,
17686        warn_since: None,
17687        deny_since: None,
17688    },
17689    Lint {
17690        label: "clippy::double_comparisons",
17691        description: r##"Checks for double comparisons that could be simplified to a single expression."##,
17692        default_severity: Severity::Allow,
17693        warn_since: None,
17694        deny_since: None,
17695    },
17696    Lint {
17697        label: "clippy::double_must_use",
17698        description: r##"Checks for a `#[must_use]` attribute without
17699further information on functions and methods that return a type already
17700marked as `#[must_use]`."##,
17701        default_severity: Severity::Allow,
17702        warn_since: None,
17703        deny_since: None,
17704    },
17705    Lint {
17706        label: "clippy::double_neg",
17707        description: r##"Detects expressions of the form `--x`."##,
17708        default_severity: Severity::Allow,
17709        warn_since: None,
17710        deny_since: None,
17711    },
17712    Lint {
17713        label: "clippy::double_parens",
17714        description: r##"Checks for unnecessary double parentheses."##,
17715        default_severity: Severity::Allow,
17716        warn_since: None,
17717        deny_since: None,
17718    },
17719    Lint {
17720        label: "clippy::drain_collect",
17721        description: r##"Checks for calls to `.drain()` that clear the collection, immediately followed by a call to `.collect()`.
17722
17723> Collection in this context refers to any type with a `drain` method:
17724> `Vec`, `VecDeque`, `BinaryHeap`, `HashSet`,`HashMap`, `String`"##,
17725        default_severity: Severity::Allow,
17726        warn_since: None,
17727        deny_since: None,
17728    },
17729    Lint {
17730        label: "clippy::drop_non_drop",
17731        description: r##"Checks for calls to `std::mem::drop` with a value that does not implement `Drop`."##,
17732        default_severity: Severity::Allow,
17733        warn_since: None,
17734        deny_since: None,
17735    },
17736    Lint {
17737        label: "clippy::duplicate_mod",
17738        description: r##"Checks for files that are included as modules multiple times."##,
17739        default_severity: Severity::Allow,
17740        warn_since: None,
17741        deny_since: None,
17742    },
17743    Lint {
17744        label: "clippy::duplicate_underscore_argument",
17745        description: r##"Checks for function arguments having the similar names
17746differing by an underscore."##,
17747        default_severity: Severity::Allow,
17748        warn_since: None,
17749        deny_since: None,
17750    },
17751    Lint {
17752        label: "clippy::duplicated_attributes",
17753        description: r##"Checks for attributes that appear two or more times."##,
17754        default_severity: Severity::Allow,
17755        warn_since: None,
17756        deny_since: None,
17757    },
17758    Lint {
17759        label: "clippy::duration_subsec",
17760        description: r##"Checks for calculation of subsecond microseconds or milliseconds
17761from other `Duration` methods."##,
17762        default_severity: Severity::Allow,
17763        warn_since: None,
17764        deny_since: None,
17765    },
17766    Lint {
17767        label: "clippy::eager_transmute",
17768        description: r##"Checks for integer validity checks, followed by a transmute that is (incorrectly) evaluated
17769eagerly (e.g. using `bool::then_some`)."##,
17770        default_severity: Severity::Allow,
17771        warn_since: None,
17772        deny_since: None,
17773    },
17774    Lint {
17775        label: "clippy::else_if_without_else",
17776        description: r##"Checks for usage of if expressions with an `else if` branch,
17777but without a final `else` branch."##,
17778        default_severity: Severity::Allow,
17779        warn_since: None,
17780        deny_since: None,
17781    },
17782    Lint {
17783        label: "clippy::empty_docs",
17784        description: r##"Detects documentation that is empty."##,
17785        default_severity: Severity::Allow,
17786        warn_since: None,
17787        deny_since: None,
17788    },
17789    Lint {
17790        label: "clippy::empty_drop",
17791        description: r##"Checks for empty `Drop` implementations."##,
17792        default_severity: Severity::Allow,
17793        warn_since: None,
17794        deny_since: None,
17795    },
17796    Lint {
17797        label: "clippy::empty_enum",
17798        description: r##"Checks for `enum`s with no variants, which therefore are uninhabited types
17799(cannot be instantiated).
17800
17801As of this writing, the `never_type` is still a nightly-only experimental API.
17802Therefore, this lint is only triggered if `#![feature(never_type)]` is enabled."##,
17803        default_severity: Severity::Allow,
17804        warn_since: None,
17805        deny_since: None,
17806    },
17807    Lint {
17808        label: "clippy::empty_enum_variants_with_brackets",
17809        description: r##"Finds enum variants without fields that are declared with empty brackets."##,
17810        default_severity: Severity::Allow,
17811        warn_since: None,
17812        deny_since: None,
17813    },
17814    Lint {
17815        label: "clippy::empty_line_after_doc_comments",
17816        description: r##"Checks for empty lines after doc comments."##,
17817        default_severity: Severity::Allow,
17818        warn_since: None,
17819        deny_since: None,
17820    },
17821    Lint {
17822        label: "clippy::empty_line_after_outer_attr",
17823        description: r##"Checks for empty lines after outer attributes"##,
17824        default_severity: Severity::Allow,
17825        warn_since: None,
17826        deny_since: None,
17827    },
17828    Lint {
17829        label: "clippy::empty_loop",
17830        description: r##"Checks for empty `loop` expressions."##,
17831        default_severity: Severity::Allow,
17832        warn_since: None,
17833        deny_since: None,
17834    },
17835    Lint {
17836        label: "clippy::empty_structs_with_brackets",
17837        description: r##"Finds structs without fields (a so-called empty struct) that are declared with brackets."##,
17838        default_severity: Severity::Allow,
17839        warn_since: None,
17840        deny_since: None,
17841    },
17842    Lint {
17843        label: "clippy::enum_clike_unportable_variant",
17844        description: r##"Checks for C-like enumerations that are
17845`repr(isize/usize)` and have values that don't fit into an `i32`."##,
17846        default_severity: Severity::Allow,
17847        warn_since: None,
17848        deny_since: None,
17849    },
17850    Lint {
17851        label: "clippy::enum_glob_use",
17852        description: r##"Checks for `use Enum::*`."##,
17853        default_severity: Severity::Allow,
17854        warn_since: None,
17855        deny_since: None,
17856    },
17857    Lint {
17858        label: "clippy::enum_variant_names",
17859        description: r##"Detects enumeration variants that are prefixed or suffixed
17860by the same characters."##,
17861        default_severity: Severity::Allow,
17862        warn_since: None,
17863        deny_since: None,
17864    },
17865    Lint {
17866        label: "clippy::eq_op",
17867        description: r##"Checks for equal operands to comparison, logical and
17868bitwise, difference and division binary operators (`==`, `>`, etc., `&&`,
17869`||`, `&`, `|`, `^`, `-` and `/`)."##,
17870        default_severity: Severity::Allow,
17871        warn_since: None,
17872        deny_since: None,
17873    },
17874    Lint {
17875        label: "clippy::equatable_if_let",
17876        description: r##"Checks for pattern matchings that can be expressed using equality."##,
17877        default_severity: Severity::Allow,
17878        warn_since: None,
17879        deny_since: None,
17880    },
17881    Lint {
17882        label: "clippy::erasing_op",
17883        description: r##"Checks for erasing operations, e.g., `x * 0`."##,
17884        default_severity: Severity::Allow,
17885        warn_since: None,
17886        deny_since: None,
17887    },
17888    Lint {
17889        label: "clippy::err_expect",
17890        description: r##"Checks for `.err().expect()` calls on the `Result` type."##,
17891        default_severity: Severity::Allow,
17892        warn_since: None,
17893        deny_since: None,
17894    },
17895    Lint {
17896        label: "clippy::error_impl_error",
17897        description: r##"Checks for types named `Error` that implement `Error`."##,
17898        default_severity: Severity::Allow,
17899        warn_since: None,
17900        deny_since: None,
17901    },
17902    Lint {
17903        label: "clippy::excessive_nesting",
17904        description: r##"Checks for blocks which are nested beyond a certain threshold.
17905
17906Note: Even though this lint is warn-by-default, it will only trigger if a maximum nesting level is defined in the clippy.toml file."##,
17907        default_severity: Severity::Allow,
17908        warn_since: None,
17909        deny_since: None,
17910    },
17911    Lint {
17912        label: "clippy::excessive_precision",
17913        description: r##"Checks for float literals with a precision greater
17914than that supported by the underlying type."##,
17915        default_severity: Severity::Allow,
17916        warn_since: None,
17917        deny_since: None,
17918    },
17919    Lint {
17920        label: "clippy::exhaustive_enums",
17921        description: r##"Warns on any exported `enum`s that are not tagged `#[non_exhaustive]`"##,
17922        default_severity: Severity::Allow,
17923        warn_since: None,
17924        deny_since: None,
17925    },
17926    Lint {
17927        label: "clippy::exhaustive_structs",
17928        description: r##"Warns on any exported `struct`s that are not tagged `#[non_exhaustive]`"##,
17929        default_severity: Severity::Allow,
17930        warn_since: None,
17931        deny_since: None,
17932    },
17933    Lint {
17934        label: "clippy::exit",
17935        description: r##"Detects calls to the `exit()` function which terminates the program."##,
17936        default_severity: Severity::Allow,
17937        warn_since: None,
17938        deny_since: None,
17939    },
17940    Lint {
17941        label: "clippy::expect_fun_call",
17942        description: r##"Checks for calls to `.expect(&format!(...))`, `.expect(foo(..))`,
17943etc., and suggests to use `unwrap_or_else` instead"##,
17944        default_severity: Severity::Allow,
17945        warn_since: None,
17946        deny_since: None,
17947    },
17948    Lint {
17949        label: "clippy::expect_used",
17950        description: r##"Checks for `.expect()` or `.expect_err()` calls on `Result`s and `.expect()` call on `Option`s."##,
17951        default_severity: Severity::Allow,
17952        warn_since: None,
17953        deny_since: None,
17954    },
17955    Lint {
17956        label: "clippy::expl_impl_clone_on_copy",
17957        description: r##"Checks for explicit `Clone` implementations for `Copy`
17958types."##,
17959        default_severity: Severity::Allow,
17960        warn_since: None,
17961        deny_since: None,
17962    },
17963    Lint {
17964        label: "clippy::explicit_auto_deref",
17965        description: r##"Checks for dereferencing expressions which would be covered by auto-deref."##,
17966        default_severity: Severity::Allow,
17967        warn_since: None,
17968        deny_since: None,
17969    },
17970    Lint {
17971        label: "clippy::explicit_counter_loop",
17972        description: r##"Checks `for` loops over slices with an explicit counter
17973and suggests the use of `.enumerate()`."##,
17974        default_severity: Severity::Allow,
17975        warn_since: None,
17976        deny_since: None,
17977    },
17978    Lint {
17979        label: "clippy::explicit_deref_methods",
17980        description: r##"Checks for explicit `deref()` or `deref_mut()` method calls."##,
17981        default_severity: Severity::Allow,
17982        warn_since: None,
17983        deny_since: None,
17984    },
17985    Lint {
17986        label: "clippy::explicit_into_iter_loop",
17987        description: r##"Checks for loops on `y.into_iter()` where `y` will do, and
17988suggests the latter."##,
17989        default_severity: Severity::Allow,
17990        warn_since: None,
17991        deny_since: None,
17992    },
17993    Lint {
17994        label: "clippy::explicit_iter_loop",
17995        description: r##"Checks for loops on `x.iter()` where `&x` will do, and
17996suggests the latter."##,
17997        default_severity: Severity::Allow,
17998        warn_since: None,
17999        deny_since: None,
18000    },
18001    Lint {
18002        label: "clippy::explicit_write",
18003        description: r##"Checks for usage of `write!()` / `writeln()!` which can be
18004replaced with `(e)print!()` / `(e)println!()`"##,
18005        default_severity: Severity::Allow,
18006        warn_since: None,
18007        deny_since: None,
18008    },
18009    Lint {
18010        label: "clippy::extend_from_slice",
18011        description: r##"Nothing. This lint has been deprecated"##,
18012        default_severity: Severity::Allow,
18013        warn_since: None,
18014        deny_since: None,
18015    },
18016    Lint {
18017        label: "clippy::extend_with_drain",
18018        description: r##"Checks for occurrences where one vector gets extended instead of append"##,
18019        default_severity: Severity::Allow,
18020        warn_since: None,
18021        deny_since: None,
18022    },
18023    Lint {
18024        label: "clippy::extra_unused_lifetimes",
18025        description: r##"Checks for lifetimes in generics that are never used
18026anywhere else."##,
18027        default_severity: Severity::Allow,
18028        warn_since: None,
18029        deny_since: None,
18030    },
18031    Lint {
18032        label: "clippy::extra_unused_type_parameters",
18033        description: r##"Checks for type parameters in generics that are never used anywhere else."##,
18034        default_severity: Severity::Allow,
18035        warn_since: None,
18036        deny_since: None,
18037    },
18038    Lint {
18039        label: "clippy::fallible_impl_from",
18040        description: r##"Checks for impls of `From<..>` that contain `panic!()` or `unwrap()`"##,
18041        default_severity: Severity::Allow,
18042        warn_since: None,
18043        deny_since: None,
18044    },
18045    Lint {
18046        label: "clippy::field_reassign_with_default",
18047        description: r##"Checks for immediate reassignment of fields initialized
18048with Default::default()."##,
18049        default_severity: Severity::Allow,
18050        warn_since: None,
18051        deny_since: None,
18052    },
18053    Lint {
18054        label: "clippy::field_scoped_visibility_modifiers",
18055        description: r##"Checks for usage of scoped visibility modifiers, like `pub(crate)`, on fields. These
18056make a field visible within a scope between public and private."##,
18057        default_severity: Severity::Allow,
18058        warn_since: None,
18059        deny_since: None,
18060    },
18061    Lint {
18062        label: "clippy::filetype_is_file",
18063        description: r##"Checks for `FileType::is_file()`."##,
18064        default_severity: Severity::Allow,
18065        warn_since: None,
18066        deny_since: None,
18067    },
18068    Lint {
18069        label: "clippy::filter_map_bool_then",
18070        description: r##"Checks for usage of `bool::then` in `Iterator::filter_map`."##,
18071        default_severity: Severity::Allow,
18072        warn_since: None,
18073        deny_since: None,
18074    },
18075    Lint {
18076        label: "clippy::filter_map_identity",
18077        description: r##"Checks for usage of `filter_map(|x| x)`."##,
18078        default_severity: Severity::Allow,
18079        warn_since: None,
18080        deny_since: None,
18081    },
18082    Lint {
18083        label: "clippy::filter_map_next",
18084        description: r##"Checks for usage of `_.filter_map(_).next()`."##,
18085        default_severity: Severity::Allow,
18086        warn_since: None,
18087        deny_since: None,
18088    },
18089    Lint {
18090        label: "clippy::filter_next",
18091        description: r##"Checks for usage of `_.filter(_).next()`."##,
18092        default_severity: Severity::Allow,
18093        warn_since: None,
18094        deny_since: None,
18095    },
18096    Lint {
18097        label: "clippy::flat_map_identity",
18098        description: r##"Checks for usage of `flat_map(|x| x)`."##,
18099        default_severity: Severity::Allow,
18100        warn_since: None,
18101        deny_since: None,
18102    },
18103    Lint {
18104        label: "clippy::flat_map_option",
18105        description: r##"Checks for usage of `Iterator::flat_map()` where `filter_map()` could be
18106used instead."##,
18107        default_severity: Severity::Allow,
18108        warn_since: None,
18109        deny_since: None,
18110    },
18111    Lint {
18112        label: "clippy::float_arithmetic",
18113        description: r##"Checks for float arithmetic."##,
18114        default_severity: Severity::Allow,
18115        warn_since: None,
18116        deny_since: None,
18117    },
18118    Lint {
18119        label: "clippy::float_cmp",
18120        description: r##"Checks for (in-)equality comparisons on floating-point
18121values (apart from zero), except in functions called `*eq*` (which probably
18122implement equality for a type involving floats)."##,
18123        default_severity: Severity::Allow,
18124        warn_since: None,
18125        deny_since: None,
18126    },
18127    Lint {
18128        label: "clippy::float_cmp_const",
18129        description: r##"Checks for (in-)equality comparisons on constant floating-point
18130values (apart from zero), except in functions called `*eq*` (which probably
18131implement equality for a type involving floats)."##,
18132        default_severity: Severity::Allow,
18133        warn_since: None,
18134        deny_since: None,
18135    },
18136    Lint {
18137        label: "clippy::float_equality_without_abs",
18138        description: r##"Checks for statements of the form `(a - b) < f32::EPSILON` or
18139`(a - b) < f64::EPSILON`. Notes the missing `.abs()`."##,
18140        default_severity: Severity::Allow,
18141        warn_since: None,
18142        deny_since: None,
18143    },
18144    Lint {
18145        label: "clippy::fn_address_comparisons",
18146        description: r##"Checks for comparisons with an address of a function item."##,
18147        default_severity: Severity::Allow,
18148        warn_since: None,
18149        deny_since: None,
18150    },
18151    Lint {
18152        label: "clippy::fn_params_excessive_bools",
18153        description: r##"Checks for excessive use of
18154bools in function definitions."##,
18155        default_severity: Severity::Allow,
18156        warn_since: None,
18157        deny_since: None,
18158    },
18159    Lint {
18160        label: "clippy::fn_to_numeric_cast",
18161        description: r##"Checks for casts of function pointers to something other than `usize`."##,
18162        default_severity: Severity::Allow,
18163        warn_since: None,
18164        deny_since: None,
18165    },
18166    Lint {
18167        label: "clippy::fn_to_numeric_cast_any",
18168        description: r##"Checks for casts of a function pointer to any integer type."##,
18169        default_severity: Severity::Allow,
18170        warn_since: None,
18171        deny_since: None,
18172    },
18173    Lint {
18174        label: "clippy::fn_to_numeric_cast_with_truncation",
18175        description: r##"Checks for casts of a function pointer to a numeric type not wide enough to
18176store an address."##,
18177        default_severity: Severity::Allow,
18178        warn_since: None,
18179        deny_since: None,
18180    },
18181    Lint {
18182        label: "clippy::for_kv_map",
18183        description: r##"Checks for iterating a map (`HashMap` or `BTreeMap`) and
18184ignoring either the keys or values."##,
18185        default_severity: Severity::Allow,
18186        warn_since: None,
18187        deny_since: None,
18188    },
18189    Lint {
18190        label: "clippy::forget_non_drop",
18191        description: r##"Checks for calls to `std::mem::forget` with a value that does not implement `Drop`."##,
18192        default_severity: Severity::Allow,
18193        warn_since: None,
18194        deny_since: None,
18195    },
18196    Lint {
18197        label: "clippy::format_collect",
18198        description: r##"Checks for usage of `.map(|_| format!(..)).collect::<String>()`."##,
18199        default_severity: Severity::Allow,
18200        warn_since: None,
18201        deny_since: None,
18202    },
18203    Lint {
18204        label: "clippy::format_in_format_args",
18205        description: r##"Detects `format!` within the arguments of another macro that does
18206formatting such as `format!` itself, `write!` or `println!`. Suggests
18207inlining the `format!` call."##,
18208        default_severity: Severity::Allow,
18209        warn_since: None,
18210        deny_since: None,
18211    },
18212    Lint {
18213        label: "clippy::format_push_string",
18214        description: r##"Detects cases where the result of a `format!` call is
18215appended to an existing `String`."##,
18216        default_severity: Severity::Allow,
18217        warn_since: None,
18218        deny_since: None,
18219    },
18220    Lint {
18221        label: "clippy::four_forward_slashes",
18222        description: r##"Checks for outer doc comments written with 4 forward slashes (`////`)."##,
18223        default_severity: Severity::Allow,
18224        warn_since: None,
18225        deny_since: None,
18226    },
18227    Lint {
18228        label: "clippy::from_iter_instead_of_collect",
18229        description: r##"Checks for `from_iter()` function calls on types that implement the `FromIterator`
18230trait."##,
18231        default_severity: Severity::Allow,
18232        warn_since: None,
18233        deny_since: None,
18234    },
18235    Lint {
18236        label: "clippy::from_over_into",
18237        description: r##"Searches for implementations of the `Into<..>` trait and suggests to implement `From<..>` instead."##,
18238        default_severity: Severity::Allow,
18239        warn_since: None,
18240        deny_since: None,
18241    },
18242    Lint {
18243        label: "clippy::from_raw_with_void_ptr",
18244        description: r##"Checks if we're passing a `c_void` raw pointer to `{Box,Rc,Arc,Weak}::from_raw(_)`"##,
18245        default_severity: Severity::Allow,
18246        warn_since: None,
18247        deny_since: None,
18248    },
18249    Lint {
18250        label: "clippy::from_str_radix_10",
18251        description: r##"Checks for function invocations of the form `primitive::from_str_radix(s, 10)`"##,
18252        default_severity: Severity::Allow,
18253        warn_since: None,
18254        deny_since: None,
18255    },
18256    Lint {
18257        label: "clippy::future_not_send",
18258        description: r##"This lint requires Future implementations returned from
18259functions and methods to implement the `Send` marker trait. It is mostly
18260used by library authors (public and internal) that target an audience where
18261multithreaded executors are likely to be used for running these Futures."##,
18262        default_severity: Severity::Allow,
18263        warn_since: None,
18264        deny_since: None,
18265    },
18266    Lint {
18267        label: "clippy::get_first",
18268        description: r##"Checks for usage of `x.get(0)` instead of
18269`x.first()` or `x.front()`."##,
18270        default_severity: Severity::Allow,
18271        warn_since: None,
18272        deny_since: None,
18273    },
18274    Lint {
18275        label: "clippy::get_last_with_len",
18276        description: r##"Checks for usage of `x.get(x.len() - 1)` instead of
18277`x.last()`."##,
18278        default_severity: Severity::Allow,
18279        warn_since: None,
18280        deny_since: None,
18281    },
18282    Lint {
18283        label: "clippy::get_unwrap",
18284        description: r##"Checks for usage of `.get().unwrap()` (or
18285`.get_mut().unwrap`) on a standard library type which implements `Index`"##,
18286        default_severity: Severity::Allow,
18287        warn_since: None,
18288        deny_since: None,
18289    },
18290    Lint {
18291        label: "clippy::host_endian_bytes",
18292        description: r##"Checks for the usage of the `to_ne_bytes` method and/or the function `from_ne_bytes`."##,
18293        default_severity: Severity::Allow,
18294        warn_since: None,
18295        deny_since: None,
18296    },
18297    Lint {
18298        label: "clippy::identity_op",
18299        description: r##"Checks for identity operations, e.g., `x + 0`."##,
18300        default_severity: Severity::Allow,
18301        warn_since: None,
18302        deny_since: None,
18303    },
18304    Lint {
18305        label: "clippy::if_let_mutex",
18306        description: r##"Checks for `Mutex::lock` calls in `if let` expression
18307with lock calls in any of the else blocks."##,
18308        default_severity: Severity::Allow,
18309        warn_since: None,
18310        deny_since: None,
18311    },
18312    Lint {
18313        label: "clippy::if_not_else",
18314        description: r##"Checks for usage of `!` or `!=` in an if condition with an
18315else branch."##,
18316        default_severity: Severity::Allow,
18317        warn_since: None,
18318        deny_since: None,
18319    },
18320    Lint {
18321        label: "clippy::if_same_then_else",
18322        description: r##"Checks for `if/else` with the same body as the *then* part
18323and the *else* part."##,
18324        default_severity: Severity::Allow,
18325        warn_since: None,
18326        deny_since: None,
18327    },
18328    Lint {
18329        label: "clippy::if_then_some_else_none",
18330        description: r##"Checks for if-else that could be written using either `bool::then` or `bool::then_some`."##,
18331        default_severity: Severity::Allow,
18332        warn_since: None,
18333        deny_since: None,
18334    },
18335    Lint {
18336        label: "clippy::ifs_same_cond",
18337        description: r##"Checks for consecutive `if`s with the same condition."##,
18338        default_severity: Severity::Allow,
18339        warn_since: None,
18340        deny_since: None,
18341    },
18342    Lint {
18343        label: "clippy::ignored_unit_patterns",
18344        description: r##"Checks for usage of `_` in patterns of type `()`."##,
18345        default_severity: Severity::Allow,
18346        warn_since: None,
18347        deny_since: None,
18348    },
18349    Lint {
18350        label: "clippy::impl_hash_borrow_with_str_and_bytes",
18351        description: r##"This lint is concerned with the semantics of `Borrow` and `Hash` for a
18352type that implements all three of `Hash`, `Borrow<str>` and `Borrow<[u8]>`
18353as it is impossible to satisfy the semantics of Borrow and `Hash` for
18354both `Borrow<str>` and `Borrow<[u8]>`."##,
18355        default_severity: Severity::Allow,
18356        warn_since: None,
18357        deny_since: None,
18358    },
18359    Lint {
18360        label: "clippy::impl_trait_in_params",
18361        description: r##"Lints when `impl Trait` is being used in a function's parameters."##,
18362        default_severity: Severity::Allow,
18363        warn_since: None,
18364        deny_since: None,
18365    },
18366    Lint {
18367        label: "clippy::implicit_clone",
18368        description: r##"Checks for the usage of `_.to_owned()`, `vec.to_vec()`, or similar when calling `_.clone()` would be clearer."##,
18369        default_severity: Severity::Allow,
18370        warn_since: None,
18371        deny_since: None,
18372    },
18373    Lint {
18374        label: "clippy::implicit_hasher",
18375        description: r##"Checks for public `impl` or `fn` missing generalization
18376over different hashers and implicitly defaulting to the default hashing
18377algorithm (`SipHash`)."##,
18378        default_severity: Severity::Allow,
18379        warn_since: None,
18380        deny_since: None,
18381    },
18382    Lint {
18383        label: "clippy::implicit_return",
18384        description: r##"Checks for missing return statements at the end of a block."##,
18385        default_severity: Severity::Allow,
18386        warn_since: None,
18387        deny_since: None,
18388    },
18389    Lint {
18390        label: "clippy::implicit_saturating_add",
18391        description: r##"Checks for implicit saturating addition."##,
18392        default_severity: Severity::Allow,
18393        warn_since: None,
18394        deny_since: None,
18395    },
18396    Lint {
18397        label: "clippy::implicit_saturating_sub",
18398        description: r##"Checks for implicit saturating subtraction."##,
18399        default_severity: Severity::Allow,
18400        warn_since: None,
18401        deny_since: None,
18402    },
18403    Lint {
18404        label: "clippy::implied_bounds_in_impls",
18405        description: r##"Looks for bounds in `impl Trait` in return position that are implied by other bounds.
18406This can happen when a trait is specified that another trait already has as a supertrait
18407(e.g. `fn() -> impl Deref + DerefMut<Target = i32>` has an unnecessary `Deref` bound,
18408because `Deref` is a supertrait of `DerefMut`)"##,
18409        default_severity: Severity::Allow,
18410        warn_since: None,
18411        deny_since: None,
18412    },
18413    Lint {
18414        label: "clippy::impossible_comparisons",
18415        description: r##"Checks for double comparisons that can never succeed"##,
18416        default_severity: Severity::Allow,
18417        warn_since: None,
18418        deny_since: None,
18419    },
18420    Lint {
18421        label: "clippy::imprecise_flops",
18422        description: r##"Looks for floating-point expressions that
18423can be expressed using built-in methods to improve accuracy
18424at the cost of performance."##,
18425        default_severity: Severity::Allow,
18426        warn_since: None,
18427        deny_since: None,
18428    },
18429    Lint {
18430        label: "clippy::incompatible_msrv",
18431        description: r##"This lint checks that no function newer than the defined MSRV (minimum
18432supported rust version) is used in the crate."##,
18433        default_severity: Severity::Allow,
18434        warn_since: None,
18435        deny_since: None,
18436    },
18437    Lint {
18438        label: "clippy::inconsistent_digit_grouping",
18439        description: r##"Warns if an integral or floating-point constant is
18440grouped inconsistently with underscores."##,
18441        default_severity: Severity::Allow,
18442        warn_since: None,
18443        deny_since: None,
18444    },
18445    Lint {
18446        label: "clippy::inconsistent_struct_constructor",
18447        description: r##"Checks for struct constructors where all fields are shorthand and
18448the order of the field init shorthand in the constructor is inconsistent
18449with the order in the struct definition."##,
18450        default_severity: Severity::Allow,
18451        warn_since: None,
18452        deny_since: None,
18453    },
18454    Lint {
18455        label: "clippy::index_refutable_slice",
18456        description: r##"The lint checks for slice bindings in patterns that are only used to
18457access individual slice values."##,
18458        default_severity: Severity::Allow,
18459        warn_since: None,
18460        deny_since: None,
18461    },
18462    Lint {
18463        label: "clippy::indexing_slicing",
18464        description: r##"Checks for usage of indexing or slicing. Arrays are special cases, this lint
18465does report on arrays if we can tell that slicing operations are in bounds and does not
18466lint on constant `usize` indexing on arrays because that is handled by rustc's `const_err` lint."##,
18467        default_severity: Severity::Allow,
18468        warn_since: None,
18469        deny_since: None,
18470    },
18471    Lint {
18472        label: "clippy::ineffective_bit_mask",
18473        description: r##"Checks for bit masks in comparisons which can be removed
18474without changing the outcome. The basic structure can be seen in the
18475following table:
18476
18477|Comparison| Bit Op   |Example     |equals |
18478|----------|----------|------------|-------|
18479|`>` / `<=`|`\\|` / `^`|`x \\| 2 > 3`|`x > 3`|
18480|`<` / `>=`|`\\|` / `^`|`x ^ 1 < 4` |`x < 4`|"##,
18481        default_severity: Severity::Allow,
18482        warn_since: None,
18483        deny_since: None,
18484    },
18485    Lint {
18486        label: "clippy::ineffective_open_options",
18487        description: r##"Checks if both `.write(true)` and `.append(true)` methods are called
18488on a same `OpenOptions`."##,
18489        default_severity: Severity::Allow,
18490        warn_since: None,
18491        deny_since: None,
18492    },
18493    Lint {
18494        label: "clippy::inefficient_to_string",
18495        description: r##"Checks for usage of `.to_string()` on an `&&T` where
18496`T` implements `ToString` directly (like `&&str` or `&&String`)."##,
18497        default_severity: Severity::Allow,
18498        warn_since: None,
18499        deny_since: None,
18500    },
18501    Lint {
18502        label: "clippy::infallible_destructuring_match",
18503        description: r##"Checks for matches being used to destructure a single-variant enum
18504or tuple struct where a `let` will suffice."##,
18505        default_severity: Severity::Allow,
18506        warn_since: None,
18507        deny_since: None,
18508    },
18509    Lint {
18510        label: "clippy::infinite_iter",
18511        description: r##"Checks for iteration that is guaranteed to be infinite."##,
18512        default_severity: Severity::Allow,
18513        warn_since: None,
18514        deny_since: None,
18515    },
18516    Lint {
18517        label: "clippy::infinite_loop",
18518        description: r##"Checks for infinite loops in a function where the return type is not `!`
18519and lint accordingly."##,
18520        default_severity: Severity::Allow,
18521        warn_since: None,
18522        deny_since: None,
18523    },
18524    Lint {
18525        label: "clippy::inherent_to_string",
18526        description: r##"Checks for the definition of inherent methods with a signature of `to_string(&self) -> String`."##,
18527        default_severity: Severity::Allow,
18528        warn_since: None,
18529        deny_since: None,
18530    },
18531    Lint {
18532        label: "clippy::inherent_to_string_shadow_display",
18533        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."##,
18534        default_severity: Severity::Allow,
18535        warn_since: None,
18536        deny_since: None,
18537    },
18538    Lint {
18539        label: "clippy::init_numbered_fields",
18540        description: r##"Checks for tuple structs initialized with field syntax.
18541It will however not lint if a base initializer is present.
18542The lint will also ignore code in macros."##,
18543        default_severity: Severity::Allow,
18544        warn_since: None,
18545        deny_since: None,
18546    },
18547    Lint {
18548        label: "clippy::inline_always",
18549        description: r##"Checks for items annotated with `#[inline(always)]`,
18550unless the annotated function is empty or simply panics."##,
18551        default_severity: Severity::Allow,
18552        warn_since: None,
18553        deny_since: None,
18554    },
18555    Lint {
18556        label: "clippy::inline_asm_x86_att_syntax",
18557        description: r##"Checks for usage of AT&T x86 assembly syntax."##,
18558        default_severity: Severity::Allow,
18559        warn_since: None,
18560        deny_since: None,
18561    },
18562    Lint {
18563        label: "clippy::inline_asm_x86_intel_syntax",
18564        description: r##"Checks for usage of Intel x86 assembly syntax."##,
18565        default_severity: Severity::Allow,
18566        warn_since: None,
18567        deny_since: None,
18568    },
18569    Lint {
18570        label: "clippy::inline_fn_without_body",
18571        description: r##"Checks for `#[inline]` on trait methods without bodies"##,
18572        default_severity: Severity::Allow,
18573        warn_since: None,
18574        deny_since: None,
18575    },
18576    Lint {
18577        label: "clippy::inspect_for_each",
18578        description: r##"Checks for usage of `inspect().for_each()`."##,
18579        default_severity: Severity::Allow,
18580        warn_since: None,
18581        deny_since: None,
18582    },
18583    Lint {
18584        label: "clippy::int_plus_one",
18585        description: r##"Checks for usage of `x >= y + 1` or `x - 1 >= y` (and `<=`) in a block"##,
18586        default_severity: Severity::Allow,
18587        warn_since: None,
18588        deny_since: None,
18589    },
18590    Lint {
18591        label: "clippy::integer_division",
18592        description: r##"Checks for division of integers"##,
18593        default_severity: Severity::Allow,
18594        warn_since: None,
18595        deny_since: None,
18596    },
18597    Lint {
18598        label: "clippy::integer_division_remainder_used",
18599        description: r##"Checks for the usage of division (`/`) and remainder (`%`) operations
18600when performed on any integer types using the default `Div` and `Rem` trait implementations."##,
18601        default_severity: Severity::Allow,
18602        warn_since: None,
18603        deny_since: None,
18604    },
18605    Lint {
18606        label: "clippy::into_iter_on_ref",
18607        description: r##"Checks for `into_iter` calls on references which should be replaced by `iter`
18608or `iter_mut`."##,
18609        default_severity: Severity::Allow,
18610        warn_since: None,
18611        deny_since: None,
18612    },
18613    Lint {
18614        label: "clippy::into_iter_without_iter",
18615        description: r##"This is the opposite of the `iter_without_into_iter` lint.
18616It looks for `IntoIterator for (&|&mut) Type` implementations without an inherent `iter` or `iter_mut` method
18617on the type or on any of the types in its `Deref` chain."##,
18618        default_severity: Severity::Allow,
18619        warn_since: None,
18620        deny_since: None,
18621    },
18622    Lint {
18623        label: "clippy::invalid_null_ptr_usage",
18624        description: r##"This lint checks for invalid usages of `ptr::null`."##,
18625        default_severity: Severity::Allow,
18626        warn_since: None,
18627        deny_since: None,
18628    },
18629    Lint {
18630        label: "clippy::invalid_regex",
18631        description: r##"Checks [regex](https://crates.io/crates/regex) creation
18632(with `Regex::new`, `RegexBuilder::new`, or `RegexSet::new`) for correct
18633regex syntax."##,
18634        default_severity: Severity::Allow,
18635        warn_since: None,
18636        deny_since: None,
18637    },
18638    Lint {
18639        label: "clippy::invalid_upcast_comparisons",
18640        description: r##"Checks for comparisons where the relation is always either
18641true or false, but where one side has been upcast so that the comparison is
18642necessary. Only integer types are checked."##,
18643        default_severity: Severity::Allow,
18644        warn_since: None,
18645        deny_since: None,
18646    },
18647    Lint {
18648        label: "clippy::inverted_saturating_sub",
18649        description: r##"Checks for comparisons between integers, followed by subtracting the greater value from the
18650lower one."##,
18651        default_severity: Severity::Allow,
18652        warn_since: None,
18653        deny_since: None,
18654    },
18655    Lint {
18656        label: "clippy::invisible_characters",
18657        description: r##"Checks for invisible Unicode characters in the code."##,
18658        default_severity: Severity::Allow,
18659        warn_since: None,
18660        deny_since: None,
18661    },
18662    Lint {
18663        label: "clippy::is_digit_ascii_radix",
18664        description: r##"Finds usages of [`char::is_digit`](https://doc.rust-lang.org/stable/std/primitive.char.html#method.is_digit) that
18665can be replaced with [`is_ascii_digit`](https://doc.rust-lang.org/stable/std/primitive.char.html#method.is_ascii_digit) or
18666[`is_ascii_hexdigit`](https://doc.rust-lang.org/stable/std/primitive.char.html#method.is_ascii_hexdigit)."##,
18667        default_severity: Severity::Allow,
18668        warn_since: None,
18669        deny_since: None,
18670    },
18671    Lint {
18672        label: "clippy::items_after_statements",
18673        description: r##"Checks for items declared after some statement in a block."##,
18674        default_severity: Severity::Allow,
18675        warn_since: None,
18676        deny_since: None,
18677    },
18678    Lint {
18679        label: "clippy::items_after_test_module",
18680        description: r##"Triggers if an item is declared after the testing module marked with `#[cfg(test)]`."##,
18681        default_severity: Severity::Allow,
18682        warn_since: None,
18683        deny_since: None,
18684    },
18685    Lint {
18686        label: "clippy::iter_cloned_collect",
18687        description: r##"Checks for the use of `.cloned().collect()` on slice to
18688create a `Vec`."##,
18689        default_severity: Severity::Allow,
18690        warn_since: None,
18691        deny_since: None,
18692    },
18693    Lint {
18694        label: "clippy::iter_count",
18695        description: r##"Checks for the use of `.iter().count()`."##,
18696        default_severity: Severity::Allow,
18697        warn_since: None,
18698        deny_since: None,
18699    },
18700    Lint {
18701        label: "clippy::iter_filter_is_ok",
18702        description: r##"Checks for usage of `.filter(Result::is_ok)` that may be replaced with a `.flatten()` call.
18703This lint will require additional changes to the follow-up calls as it affects the type."##,
18704        default_severity: Severity::Allow,
18705        warn_since: None,
18706        deny_since: None,
18707    },
18708    Lint {
18709        label: "clippy::iter_filter_is_some",
18710        description: r##"Checks for usage of `.filter(Option::is_some)` that may be replaced with a `.flatten()` call.
18711This lint will require additional changes to the follow-up calls as it affects the type."##,
18712        default_severity: Severity::Allow,
18713        warn_since: None,
18714        deny_since: None,
18715    },
18716    Lint {
18717        label: "clippy::iter_kv_map",
18718        description: r##"Checks for iterating a map (`HashMap` or `BTreeMap`) and
18719ignoring either the keys or values."##,
18720        default_severity: Severity::Allow,
18721        warn_since: None,
18722        deny_since: None,
18723    },
18724    Lint {
18725        label: "clippy::iter_next_loop",
18726        description: r##"Checks for loops on `x.next()`."##,
18727        default_severity: Severity::Allow,
18728        warn_since: None,
18729        deny_since: None,
18730    },
18731    Lint {
18732        label: "clippy::iter_next_slice",
18733        description: r##"Checks for usage of `iter().next()` on a Slice or an Array"##,
18734        default_severity: Severity::Allow,
18735        warn_since: None,
18736        deny_since: None,
18737    },
18738    Lint {
18739        label: "clippy::iter_not_returning_iterator",
18740        description: r##"Detects methods named `iter` or `iter_mut` that do not have a return type that implements `Iterator`."##,
18741        default_severity: Severity::Allow,
18742        warn_since: None,
18743        deny_since: None,
18744    },
18745    Lint {
18746        label: "clippy::iter_nth",
18747        description: r##"Checks for usage of `.iter().nth()`/`.iter_mut().nth()` on standard library types that have
18748equivalent `.get()`/`.get_mut()` methods."##,
18749        default_severity: Severity::Allow,
18750        warn_since: None,
18751        deny_since: None,
18752    },
18753    Lint {
18754        label: "clippy::iter_nth_zero",
18755        description: r##"Checks for the use of `iter.nth(0)`."##,
18756        default_severity: Severity::Allow,
18757        warn_since: None,
18758        deny_since: None,
18759    },
18760    Lint {
18761        label: "clippy::iter_on_empty_collections",
18762        description: r##"Checks for calls to `iter`, `iter_mut` or `into_iter` on empty collections"##,
18763        default_severity: Severity::Allow,
18764        warn_since: None,
18765        deny_since: None,
18766    },
18767    Lint {
18768        label: "clippy::iter_on_single_items",
18769        description: r##"Checks for calls to `iter`, `iter_mut` or `into_iter` on collections containing a single item"##,
18770        default_severity: Severity::Allow,
18771        warn_since: None,
18772        deny_since: None,
18773    },
18774    Lint {
18775        label: "clippy::iter_out_of_bounds",
18776        description: r##"Looks for iterator combinator calls such as `.take(x)` or `.skip(x)`
18777where `x` is greater than the amount of items that an iterator will produce."##,
18778        default_severity: Severity::Allow,
18779        warn_since: None,
18780        deny_since: None,
18781    },
18782    Lint {
18783        label: "clippy::iter_over_hash_type",
18784        description: r##"This is a restriction lint which prevents the use of hash types (i.e., `HashSet` and `HashMap`) in for loops."##,
18785        default_severity: Severity::Allow,
18786        warn_since: None,
18787        deny_since: None,
18788    },
18789    Lint {
18790        label: "clippy::iter_overeager_cloned",
18791        description: r##"Checks for usage of `_.cloned().<func>()` where call to `.cloned()` can be postponed."##,
18792        default_severity: Severity::Allow,
18793        warn_since: None,
18794        deny_since: None,
18795    },
18796    Lint {
18797        label: "clippy::iter_skip_next",
18798        description: r##"Checks for usage of `.skip(x).next()` on iterators."##,
18799        default_severity: Severity::Allow,
18800        warn_since: None,
18801        deny_since: None,
18802    },
18803    Lint {
18804        label: "clippy::iter_skip_zero",
18805        description: r##"Checks for usage of `.skip(0)` on iterators."##,
18806        default_severity: Severity::Allow,
18807        warn_since: None,
18808        deny_since: None,
18809    },
18810    Lint {
18811        label: "clippy::iter_with_drain",
18812        description: r##"Checks for usage of `.drain(..)` on `Vec` and `VecDeque` for iteration."##,
18813        default_severity: Severity::Allow,
18814        warn_since: None,
18815        deny_since: None,
18816    },
18817    Lint {
18818        label: "clippy::iter_without_into_iter",
18819        description: r##"Looks for `iter` and `iter_mut` methods without an associated `IntoIterator for (&|&mut) Type` implementation."##,
18820        default_severity: Severity::Allow,
18821        warn_since: None,
18822        deny_since: None,
18823    },
18824    Lint {
18825        label: "clippy::iterator_step_by_zero",
18826        description: r##"Checks for calling `.step_by(0)` on iterators which panics."##,
18827        default_severity: Severity::Allow,
18828        warn_since: None,
18829        deny_since: None,
18830    },
18831    Lint {
18832        label: "clippy::join_absolute_paths",
18833        description: r##"Checks for calls to `Path::join` that start with a path separator (`\\\\` or `/`)."##,
18834        default_severity: Severity::Allow,
18835        warn_since: None,
18836        deny_since: None,
18837    },
18838    Lint {
18839        label: "clippy::just_underscores_and_digits",
18840        description: r##"Checks if you have variables whose name consists of just
18841underscores and digits."##,
18842        default_severity: Severity::Allow,
18843        warn_since: None,
18844        deny_since: None,
18845    },
18846    Lint {
18847        label: "clippy::large_const_arrays",
18848        description: r##"Checks for large `const` arrays that should
18849be defined as `static` instead."##,
18850        default_severity: Severity::Allow,
18851        warn_since: None,
18852        deny_since: None,
18853    },
18854    Lint {
18855        label: "clippy::large_digit_groups",
18856        description: r##"Warns if the digits of an integral or floating-point
18857constant are grouped into groups that
18858are too large."##,
18859        default_severity: Severity::Allow,
18860        warn_since: None,
18861        deny_since: None,
18862    },
18863    Lint {
18864        label: "clippy::large_enum_variant",
18865        description: r##"Checks for large size differences between variants on
18866`enum`s."##,
18867        default_severity: Severity::Allow,
18868        warn_since: None,
18869        deny_since: None,
18870    },
18871    Lint {
18872        label: "clippy::large_futures",
18873        description: r##"It checks for the size of a `Future` created by `async fn` or `async {}`."##,
18874        default_severity: Severity::Allow,
18875        warn_since: None,
18876        deny_since: None,
18877    },
18878    Lint {
18879        label: "clippy::large_include_file",
18880        description: r##"Checks for the inclusion of large files via `include_bytes!()`
18881or `include_str!()`."##,
18882        default_severity: Severity::Allow,
18883        warn_since: None,
18884        deny_since: None,
18885    },
18886    Lint {
18887        label: "clippy::large_stack_arrays",
18888        description: r##"Checks for local arrays that may be too large."##,
18889        default_severity: Severity::Allow,
18890        warn_since: None,
18891        deny_since: None,
18892    },
18893    Lint {
18894        label: "clippy::large_stack_frames",
18895        description: r##"Checks for functions that use a lot of stack space.
18896
18897This often happens when constructing a large type, such as an array with a lot of elements,
18898or constructing *many* smaller-but-still-large structs, or copying around a lot of large types.
18899
18900This lint is a more general version of [`large_stack_arrays`](https://rust-lang.github.io/rust-clippy/master/#large_stack_arrays)
18901that is intended to look at functions as a whole instead of only individual array expressions inside of a function."##,
18902        default_severity: Severity::Allow,
18903        warn_since: None,
18904        deny_since: None,
18905    },
18906    Lint {
18907        label: "clippy::large_types_passed_by_value",
18908        description: r##"Checks for functions taking arguments by value, where
18909the argument type is `Copy` and large enough to be worth considering
18910passing by reference. Does not trigger if the function is being exported,
18911because that might induce API breakage, if the parameter is declared as mutable,
18912or if the argument is a `self`."##,
18913        default_severity: Severity::Allow,
18914        warn_since: None,
18915        deny_since: None,
18916    },
18917    Lint {
18918        label: "clippy::legacy_numeric_constants",
18919        description: r##"Checks for usage of `<integer>::max_value()`, `std::<integer>::MAX`,
18920`std::<float>::EPSILON`, etc."##,
18921        default_severity: Severity::Allow,
18922        warn_since: None,
18923        deny_since: None,
18924    },
18925    Lint {
18926        label: "clippy::len_without_is_empty",
18927        description: r##"Checks for items that implement `.len()` but not
18928`.is_empty()`."##,
18929        default_severity: Severity::Allow,
18930        warn_since: None,
18931        deny_since: None,
18932    },
18933    Lint {
18934        label: "clippy::len_zero",
18935        description: r##"Checks for getting the length of something via `.len()`
18936just to compare to zero, and suggests using `.is_empty()` where applicable."##,
18937        default_severity: Severity::Allow,
18938        warn_since: None,
18939        deny_since: None,
18940    },
18941    Lint {
18942        label: "clippy::let_and_return",
18943        description: r##"Checks for `let`-bindings, which are subsequently
18944returned."##,
18945        default_severity: Severity::Allow,
18946        warn_since: None,
18947        deny_since: None,
18948    },
18949    Lint {
18950        label: "clippy::let_underscore_future",
18951        description: r##"Checks for `let _ = <expr>` where the resulting type of expr implements `Future`"##,
18952        default_severity: Severity::Allow,
18953        warn_since: None,
18954        deny_since: None,
18955    },
18956    Lint {
18957        label: "clippy::let_underscore_lock",
18958        description: r##"Checks for `let _ = sync_lock`. This supports `mutex` and `rwlock` in
18959`parking_lot`. For `std` locks see the `rustc` lint
18960[`let_underscore_lock`](https://doc.rust-lang.org/nightly/rustc/lints/listing/deny-by-default.html#let-underscore-lock)"##,
18961        default_severity: Severity::Allow,
18962        warn_since: None,
18963        deny_since: None,
18964    },
18965    Lint {
18966        label: "clippy::let_underscore_must_use",
18967        description: r##"Checks for `let _ = <expr>` where expr is `#[must_use]`"##,
18968        default_severity: Severity::Allow,
18969        warn_since: None,
18970        deny_since: None,
18971    },
18972    Lint {
18973        label: "clippy::let_underscore_untyped",
18974        description: r##"Checks for `let _ = <expr>` without a type annotation, and suggests to either provide one,
18975or remove the `let` keyword altogether."##,
18976        default_severity: Severity::Allow,
18977        warn_since: None,
18978        deny_since: None,
18979    },
18980    Lint {
18981        label: "clippy::let_unit_value",
18982        description: r##"Checks for binding a unit value."##,
18983        default_severity: Severity::Allow,
18984        warn_since: None,
18985        deny_since: None,
18986    },
18987    Lint {
18988        label: "clippy::let_with_type_underscore",
18989        description: r##"Detects when a variable is declared with an explicit type of `_`."##,
18990        default_severity: Severity::Allow,
18991        warn_since: None,
18992        deny_since: None,
18993    },
18994    Lint {
18995        label: "clippy::lines_filter_map_ok",
18996        description: r##"Checks for usage of `lines.filter_map(Result::ok)` or `lines.flat_map(Result::ok)`
18997when `lines` has type `std::io::Lines`."##,
18998        default_severity: Severity::Allow,
18999        warn_since: None,
19000        deny_since: None,
19001    },
19002    Lint {
19003        label: "clippy::linkedlist",
19004        description: r##"Checks for usage of any `LinkedList`, suggesting to use a
19005`Vec` or a `VecDeque` (formerly called `RingBuf`)."##,
19006        default_severity: Severity::Allow,
19007        warn_since: None,
19008        deny_since: None,
19009    },
19010    Lint {
19011        label: "clippy::lint_groups_priority",
19012        description: r##"Checks for lint groups with the same priority as lints in the `Cargo.toml`
19013[`[lints]` table](https://doc.rust-lang.org/cargo/reference/manifest.html#the-lints-section).
19014
19015This lint will be removed once [cargo#12918](https://github.com/rust-lang/cargo/issues/12918)
19016is resolved."##,
19017        default_severity: Severity::Allow,
19018        warn_since: None,
19019        deny_since: None,
19020    },
19021    Lint {
19022        label: "clippy::little_endian_bytes",
19023        description: r##"Checks for the usage of the `to_le_bytes` method and/or the function `from_le_bytes`."##,
19024        default_severity: Severity::Allow,
19025        warn_since: None,
19026        deny_since: None,
19027    },
19028    Lint {
19029        label: "clippy::lossy_float_literal",
19030        description: r##"Checks for whole number float literals that
19031cannot be represented as the underlying type without loss."##,
19032        default_severity: Severity::Allow,
19033        warn_since: None,
19034        deny_since: None,
19035    },
19036    Lint {
19037        label: "clippy::macro_metavars_in_unsafe",
19038        description: r##"Looks for macros that expand metavariables in an unsafe block."##,
19039        default_severity: Severity::Allow,
19040        warn_since: None,
19041        deny_since: None,
19042    },
19043    Lint {
19044        label: "clippy::macro_use_imports",
19045        description: r##"Checks for `#[macro_use] use...`."##,
19046        default_severity: Severity::Allow,
19047        warn_since: None,
19048        deny_since: None,
19049    },
19050    Lint {
19051        label: "clippy::main_recursion",
19052        description: r##"Checks for recursion using the entrypoint."##,
19053        default_severity: Severity::Allow,
19054        warn_since: None,
19055        deny_since: None,
19056    },
19057    Lint {
19058        label: "clippy::manual_assert",
19059        description: r##"Detects `if`-then-`panic!` that can be replaced with `assert!`."##,
19060        default_severity: Severity::Allow,
19061        warn_since: None,
19062        deny_since: None,
19063    },
19064    Lint {
19065        label: "clippy::manual_async_fn",
19066        description: r##"It checks for manual implementations of `async` functions."##,
19067        default_severity: Severity::Allow,
19068        warn_since: None,
19069        deny_since: None,
19070    },
19071    Lint {
19072        label: "clippy::manual_bits",
19073        description: r##"Checks for usage of `std::mem::size_of::<T>() * 8` when
19074`T::BITS` is available."##,
19075        default_severity: Severity::Allow,
19076        warn_since: None,
19077        deny_since: None,
19078    },
19079    Lint {
19080        label: "clippy::manual_c_str_literals",
19081        description: r##"Checks for the manual creation of C strings (a string with a `NUL` byte at the end), either
19082through one of the `CStr` constructor functions, or more plainly by calling `.as_ptr()`
19083on a (byte) string literal with a hardcoded `\\0` byte at the end."##,
19084        default_severity: Severity::Allow,
19085        warn_since: None,
19086        deny_since: None,
19087    },
19088    Lint {
19089        label: "clippy::manual_clamp",
19090        description: r##"Identifies good opportunities for a clamp function from std or core, and suggests using it."##,
19091        default_severity: Severity::Allow,
19092        warn_since: None,
19093        deny_since: None,
19094    },
19095    Lint {
19096        label: "clippy::manual_div_ceil",
19097        description: r##"Checks for an expression like `(x + (y - 1)) / y` which is a common manual reimplementation
19098of `x.div_ceil(y)`."##,
19099        default_severity: Severity::Allow,
19100        warn_since: None,
19101        deny_since: None,
19102    },
19103    Lint {
19104        label: "clippy::manual_filter",
19105        description: r##"Checks for usage of `match` which could be implemented using `filter`"##,
19106        default_severity: Severity::Allow,
19107        warn_since: None,
19108        deny_since: None,
19109    },
19110    Lint {
19111        label: "clippy::manual_filter_map",
19112        description: r##"Checks for usage of `_.filter(_).map(_)` that can be written more simply
19113as `filter_map(_)`."##,
19114        default_severity: Severity::Allow,
19115        warn_since: None,
19116        deny_since: None,
19117    },
19118    Lint {
19119        label: "clippy::manual_find",
19120        description: r##"Checks for manual implementations of Iterator::find"##,
19121        default_severity: Severity::Allow,
19122        warn_since: None,
19123        deny_since: None,
19124    },
19125    Lint {
19126        label: "clippy::manual_find_map",
19127        description: r##"Checks for usage of `_.find(_).map(_)` that can be written more simply
19128as `find_map(_)`."##,
19129        default_severity: Severity::Allow,
19130        warn_since: None,
19131        deny_since: None,
19132    },
19133    Lint {
19134        label: "clippy::manual_flatten",
19135        description: r##"Checks for unnecessary `if let` usage in a for loop
19136where only the `Some` or `Ok` variant of the iterator element is used."##,
19137        default_severity: Severity::Allow,
19138        warn_since: None,
19139        deny_since: None,
19140    },
19141    Lint {
19142        label: "clippy::manual_hash_one",
19143        description: r##"Checks for cases where [`BuildHasher::hash_one`] can be used.
19144
19145[`BuildHasher::hash_one`]: https://doc.rust-lang.org/std/hash/trait.BuildHasher.html#method.hash_one"##,
19146        default_severity: Severity::Allow,
19147        warn_since: None,
19148        deny_since: None,
19149    },
19150    Lint {
19151        label: "clippy::manual_inspect",
19152        description: r##"Checks for uses of `map` which return the original item."##,
19153        default_severity: Severity::Allow,
19154        warn_since: None,
19155        deny_since: None,
19156    },
19157    Lint {
19158        label: "clippy::manual_instant_elapsed",
19159        description: r##"Lints subtraction between `Instant::now()` and another `Instant`."##,
19160        default_severity: Severity::Allow,
19161        warn_since: None,
19162        deny_since: None,
19163    },
19164    Lint {
19165        label: "clippy::manual_is_ascii_check",
19166        description: r##"Suggests to use dedicated built-in methods,
19167`is_ascii_(lowercase|uppercase|digit|hexdigit)` for checking on corresponding
19168ascii range"##,
19169        default_severity: Severity::Allow,
19170        warn_since: None,
19171        deny_since: None,
19172    },
19173    Lint {
19174        label: "clippy::manual_is_finite",
19175        description: r##"Checks for manual `is_finite` reimplementations
19176(i.e., `x != <float>::INFINITY && x != <float>::NEG_INFINITY`)."##,
19177        default_severity: Severity::Allow,
19178        warn_since: None,
19179        deny_since: None,
19180    },
19181    Lint {
19182        label: "clippy::manual_is_infinite",
19183        description: r##"Checks for manual `is_infinite` reimplementations
19184(i.e., `x == <float>::INFINITY || x == <float>::NEG_INFINITY`)."##,
19185        default_severity: Severity::Allow,
19186        warn_since: None,
19187        deny_since: None,
19188    },
19189    Lint {
19190        label: "clippy::manual_is_power_of_two",
19191        description: r##"Checks for expressions like `x.count_ones() == 1` or `x & (x - 1) == 0`, with x and unsigned integer, which are manual
19192reimplementations of `x.is_power_of_two()`."##,
19193        default_severity: Severity::Allow,
19194        warn_since: None,
19195        deny_since: None,
19196    },
19197    Lint {
19198        label: "clippy::manual_is_variant_and",
19199        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."##,
19200        default_severity: Severity::Allow,
19201        warn_since: None,
19202        deny_since: None,
19203    },
19204    Lint {
19205        label: "clippy::manual_let_else",
19206        description: r##"Warn of cases where `let...else` could be used"##,
19207        default_severity: Severity::Allow,
19208        warn_since: None,
19209        deny_since: None,
19210    },
19211    Lint {
19212        label: "clippy::manual_main_separator_str",
19213        description: r##"Checks for references on `std::path::MAIN_SEPARATOR.to_string()` used
19214to build a `&str`."##,
19215        default_severity: Severity::Allow,
19216        warn_since: None,
19217        deny_since: None,
19218    },
19219    Lint {
19220        label: "clippy::manual_map",
19221        description: r##"Checks for usage of `match` which could be implemented using `map`"##,
19222        default_severity: Severity::Allow,
19223        warn_since: None,
19224        deny_since: None,
19225    },
19226    Lint {
19227        label: "clippy::manual_memcpy",
19228        description: r##"Checks for for-loops that manually copy items between
19229slices that could be optimized by having a memcpy."##,
19230        default_severity: Severity::Allow,
19231        warn_since: None,
19232        deny_since: None,
19233    },
19234    Lint {
19235        label: "clippy::manual_next_back",
19236        description: r##"Checks for `.rev().next()` on a `DoubleEndedIterator`"##,
19237        default_severity: Severity::Allow,
19238        warn_since: None,
19239        deny_since: None,
19240    },
19241    Lint {
19242        label: "clippy::manual_non_exhaustive",
19243        description: r##"Checks for manual implementations of the non-exhaustive pattern."##,
19244        default_severity: Severity::Allow,
19245        warn_since: None,
19246        deny_since: None,
19247    },
19248    Lint {
19249        label: "clippy::manual_ok_or",
19250        description: r##"Finds patterns that reimplement `Option::ok_or`."##,
19251        default_severity: Severity::Allow,
19252        warn_since: None,
19253        deny_since: None,
19254    },
19255    Lint {
19256        label: "clippy::manual_pattern_char_comparison",
19257        description: r##"Checks for manual `char` comparison in string patterns"##,
19258        default_severity: Severity::Allow,
19259        warn_since: None,
19260        deny_since: None,
19261    },
19262    Lint {
19263        label: "clippy::manual_range_contains",
19264        description: r##"Checks for expressions like `x >= 3 && x < 8` that could
19265be more readably expressed as `(3..8).contains(x)`."##,
19266        default_severity: Severity::Allow,
19267        warn_since: None,
19268        deny_since: None,
19269    },
19270    Lint {
19271        label: "clippy::manual_range_patterns",
19272        description: r##"Looks for combined OR patterns that are all contained in a specific range,
19273e.g. `6 | 4 | 5 | 9 | 7 | 8` can be rewritten as `4..=9`."##,
19274        default_severity: Severity::Allow,
19275        warn_since: None,
19276        deny_since: None,
19277    },
19278    Lint {
19279        label: "clippy::manual_rem_euclid",
19280        description: r##"Checks for an expression like `((x % 4) + 4) % 4` which is a common manual reimplementation
19281of `x.rem_euclid(4)`."##,
19282        default_severity: Severity::Allow,
19283        warn_since: None,
19284        deny_since: None,
19285    },
19286    Lint {
19287        label: "clippy::manual_retain",
19288        description: r##"Checks for code to be replaced by `.retain()`."##,
19289        default_severity: Severity::Allow,
19290        warn_since: None,
19291        deny_since: None,
19292    },
19293    Lint {
19294        label: "clippy::manual_rotate",
19295        description: r##"It detects manual bit rotations that could be rewritten using standard
19296functions `rotate_left` or `rotate_right`."##,
19297        default_severity: Severity::Allow,
19298        warn_since: None,
19299        deny_since: None,
19300    },
19301    Lint {
19302        label: "clippy::manual_saturating_arithmetic",
19303        description: r##"Checks for `.checked_add/sub(x).unwrap_or(MAX/MIN)`."##,
19304        default_severity: Severity::Allow,
19305        warn_since: None,
19306        deny_since: None,
19307    },
19308    Lint {
19309        label: "clippy::manual_slice_size_calculation",
19310        description: r##"When `a` is `&[T]`, detect `a.len() * size_of::<T>()` and suggest `size_of_val(a)`
19311instead."##,
19312        default_severity: Severity::Allow,
19313        warn_since: None,
19314        deny_since: None,
19315    },
19316    Lint {
19317        label: "clippy::manual_split_once",
19318        description: r##"Checks for usage of `str::splitn(2, _)`"##,
19319        default_severity: Severity::Allow,
19320        warn_since: None,
19321        deny_since: None,
19322    },
19323    Lint {
19324        label: "clippy::manual_str_repeat",
19325        description: r##"Checks for manual implementations of `str::repeat`"##,
19326        default_severity: Severity::Allow,
19327        warn_since: None,
19328        deny_since: None,
19329    },
19330    Lint {
19331        label: "clippy::manual_string_new",
19332        description: r##"Checks for usage of `` to create a `String`, such as `.to_string()`, `.to_owned()`,
19333`String::from()` and others."##,
19334        default_severity: Severity::Allow,
19335        warn_since: None,
19336        deny_since: None,
19337    },
19338    Lint {
19339        label: "clippy::manual_strip",
19340        description: r##"Suggests using `strip_{prefix,suffix}` over `str::{starts,ends}_with` and slicing using
19341the pattern's length."##,
19342        default_severity: Severity::Allow,
19343        warn_since: None,
19344        deny_since: None,
19345    },
19346    Lint {
19347        label: "clippy::manual_swap",
19348        description: r##"Checks for manual swapping.
19349
19350Note that the lint will not be emitted in const blocks, as the suggestion would not be applicable."##,
19351        default_severity: Severity::Allow,
19352        warn_since: None,
19353        deny_since: None,
19354    },
19355    Lint {
19356        label: "clippy::manual_try_fold",
19357        description: r##"Checks for usage of `Iterator::fold` with a type that implements `Try`."##,
19358        default_severity: Severity::Allow,
19359        warn_since: None,
19360        deny_since: None,
19361    },
19362    Lint {
19363        label: "clippy::manual_unwrap_or",
19364        description: r##"Finds patterns that reimplement `Option::unwrap_or` or `Result::unwrap_or`."##,
19365        default_severity: Severity::Allow,
19366        warn_since: None,
19367        deny_since: None,
19368    },
19369    Lint {
19370        label: "clippy::manual_unwrap_or_default",
19371        description: r##"Checks if a `match` or `if let` expression can be simplified using
19372`.unwrap_or_default()`."##,
19373        default_severity: Severity::Allow,
19374        warn_since: None,
19375        deny_since: None,
19376    },
19377    Lint {
19378        label: "clippy::manual_while_let_some",
19379        description: r##"Looks for loops that check for emptiness of a `Vec` in the condition and pop an element
19380in the body as a separate operation."##,
19381        default_severity: Severity::Allow,
19382        warn_since: None,
19383        deny_since: None,
19384    },
19385    Lint {
19386        label: "clippy::many_single_char_names",
19387        description: r##"Checks for too many variables whose name consists of a
19388single character."##,
19389        default_severity: Severity::Allow,
19390        warn_since: None,
19391        deny_since: None,
19392    },
19393    Lint {
19394        label: "clippy::map_clone",
19395        description: r##"Checks for usage of `map(|x| x.clone())` or
19396dereferencing closures for `Copy` types, on `Iterator` or `Option`,
19397and suggests `cloned()` or `copied()` instead"##,
19398        default_severity: Severity::Allow,
19399        warn_since: None,
19400        deny_since: None,
19401    },
19402    Lint {
19403        label: "clippy::map_collect_result_unit",
19404        description: r##"Checks for usage of `_.map(_).collect::<Result<(), _>()`."##,
19405        default_severity: Severity::Allow,
19406        warn_since: None,
19407        deny_since: None,
19408    },
19409    Lint {
19410        label: "clippy::map_entry",
19411        description: r##"Checks for usage of `contains_key` + `insert` on `HashMap`
19412or `BTreeMap`."##,
19413        default_severity: Severity::Allow,
19414        warn_since: None,
19415        deny_since: None,
19416    },
19417    Lint {
19418        label: "clippy::map_err_ignore",
19419        description: r##"Checks for instances of `map_err(|_| Some::Enum)`"##,
19420        default_severity: Severity::Allow,
19421        warn_since: None,
19422        deny_since: None,
19423    },
19424    Lint {
19425        label: "clippy::map_flatten",
19426        description: r##"Checks for usage of `_.map(_).flatten(_)` on `Iterator` and `Option`"##,
19427        default_severity: Severity::Allow,
19428        warn_since: None,
19429        deny_since: None,
19430    },
19431    Lint {
19432        label: "clippy::map_identity",
19433        description: r##"Checks for instances of `map(f)` where `f` is the identity function."##,
19434        default_severity: Severity::Allow,
19435        warn_since: None,
19436        deny_since: None,
19437    },
19438    Lint {
19439        label: "clippy::map_unwrap_or",
19440        description: r##"Checks for usage of `option.map(_).unwrap_or(_)` or `option.map(_).unwrap_or_else(_)` or
19441`result.map(_).unwrap_or_else(_)`."##,
19442        default_severity: Severity::Allow,
19443        warn_since: None,
19444        deny_since: None,
19445    },
19446    Lint {
19447        label: "clippy::match_as_ref",
19448        description: r##"Checks for match which is used to add a reference to an
19449`Option` value."##,
19450        default_severity: Severity::Allow,
19451        warn_since: None,
19452        deny_since: None,
19453    },
19454    Lint {
19455        label: "clippy::match_bool",
19456        description: r##"Checks for matches where match expression is a `bool`. It
19457suggests to replace the expression with an `if...else` block."##,
19458        default_severity: Severity::Allow,
19459        warn_since: None,
19460        deny_since: None,
19461    },
19462    Lint {
19463        label: "clippy::match_like_matches_macro",
19464        description: r##"Checks for `match`  or `if let` expressions producing a
19465`bool` that could be written using `matches!`"##,
19466        default_severity: Severity::Allow,
19467        warn_since: None,
19468        deny_since: None,
19469    },
19470    Lint {
19471        label: "clippy::match_on_vec_items",
19472        description: r##"Checks for `match vec[idx]` or `match vec[n..m]`."##,
19473        default_severity: Severity::Allow,
19474        warn_since: None,
19475        deny_since: None,
19476    },
19477    Lint {
19478        label: "clippy::match_overlapping_arm",
19479        description: r##"Checks for overlapping match arms."##,
19480        default_severity: Severity::Allow,
19481        warn_since: None,
19482        deny_since: None,
19483    },
19484    Lint {
19485        label: "clippy::match_ref_pats",
19486        description: r##"Checks for matches where all arms match a reference,
19487suggesting to remove the reference and deref the matched expression
19488instead. It also checks for `if let &foo = bar` blocks."##,
19489        default_severity: Severity::Allow,
19490        warn_since: None,
19491        deny_since: None,
19492    },
19493    Lint {
19494        label: "clippy::match_result_ok",
19495        description: r##"Checks for unnecessary `ok()` in `while let`."##,
19496        default_severity: Severity::Allow,
19497        warn_since: None,
19498        deny_since: None,
19499    },
19500    Lint {
19501        label: "clippy::match_same_arms",
19502        description: r##"Checks for `match` with identical arm bodies.
19503
19504Note: Does not lint on wildcards if the `non_exhaustive_omitted_patterns_lint` feature is
19505enabled and disallowed."##,
19506        default_severity: Severity::Allow,
19507        warn_since: None,
19508        deny_since: None,
19509    },
19510    Lint {
19511        label: "clippy::match_single_binding",
19512        description: r##"Checks for useless match that binds to only one value."##,
19513        default_severity: Severity::Allow,
19514        warn_since: None,
19515        deny_since: None,
19516    },
19517    Lint {
19518        label: "clippy::match_str_case_mismatch",
19519        description: r##"Checks for `match` expressions modifying the case of a string with non-compliant arms"##,
19520        default_severity: Severity::Allow,
19521        warn_since: None,
19522        deny_since: None,
19523    },
19524    Lint {
19525        label: "clippy::match_wild_err_arm",
19526        description: r##"Checks for arm which matches all errors with `Err(_)`
19527and take drastic actions like `panic!`."##,
19528        default_severity: Severity::Allow,
19529        warn_since: None,
19530        deny_since: None,
19531    },
19532    Lint {
19533        label: "clippy::match_wildcard_for_single_variants",
19534        description: r##"Checks for wildcard enum matches for a single variant."##,
19535        default_severity: Severity::Allow,
19536        warn_since: None,
19537        deny_since: None,
19538    },
19539    Lint {
19540        label: "clippy::maybe_infinite_iter",
19541        description: r##"Checks for iteration that may be infinite."##,
19542        default_severity: Severity::Allow,
19543        warn_since: None,
19544        deny_since: None,
19545    },
19546    Lint {
19547        label: "clippy::mem_forget",
19548        description: r##"Checks for usage of `std::mem::forget(t)` where `t` is
19549`Drop` or has a field that implements `Drop`."##,
19550        default_severity: Severity::Allow,
19551        warn_since: None,
19552        deny_since: None,
19553    },
19554    Lint {
19555        label: "clippy::mem_replace_option_with_none",
19556        description: r##"Checks for `mem::replace()` on an `Option` with
19557`None`."##,
19558        default_severity: Severity::Allow,
19559        warn_since: None,
19560        deny_since: None,
19561    },
19562    Lint {
19563        label: "clippy::mem_replace_with_default",
19564        description: r##"Checks for `std::mem::replace` on a value of type
19565`T` with `T::default()`."##,
19566        default_severity: Severity::Allow,
19567        warn_since: None,
19568        deny_since: None,
19569    },
19570    Lint {
19571        label: "clippy::mem_replace_with_uninit",
19572        description: r##"Checks for `mem::replace(&mut _, mem::uninitialized())`
19573and `mem::replace(&mut _, mem::zeroed())`."##,
19574        default_severity: Severity::Allow,
19575        warn_since: None,
19576        deny_since: None,
19577    },
19578    Lint {
19579        label: "clippy::min_ident_chars",
19580        description: r##"Checks for identifiers which consist of a single character (or fewer than the configured threshold).
19581
19582Note: This lint can be very noisy when enabled; it may be desirable to only enable it
19583temporarily."##,
19584        default_severity: Severity::Allow,
19585        warn_since: None,
19586        deny_since: None,
19587    },
19588    Lint {
19589        label: "clippy::min_max",
19590        description: r##"Checks for expressions where `std::cmp::min` and `max` are
19591used to clamp values, but switched so that the result is constant."##,
19592        default_severity: Severity::Allow,
19593        warn_since: None,
19594        deny_since: None,
19595    },
19596    Lint {
19597        label: "clippy::misaligned_transmute",
19598        description: r##"Nothing. This lint has been deprecated"##,
19599        default_severity: Severity::Allow,
19600        warn_since: None,
19601        deny_since: None,
19602    },
19603    Lint {
19604        label: "clippy::mismatching_type_param_order",
19605        description: r##"Checks for type parameters which are positioned inconsistently between
19606a type definition and impl block. Specifically, a parameter in an impl
19607block which has the same name as a parameter in the type def, but is in
19608a different place."##,
19609        default_severity: Severity::Allow,
19610        warn_since: None,
19611        deny_since: None,
19612    },
19613    Lint {
19614        label: "clippy::misnamed_getters",
19615        description: r##"Checks for getter methods that return a field that doesn't correspond
19616to the name of the method, when there is a field's whose name matches that of the method."##,
19617        default_severity: Severity::Allow,
19618        warn_since: None,
19619        deny_since: None,
19620    },
19621    Lint {
19622        label: "clippy::misrefactored_assign_op",
19623        description: r##"Checks for `a op= a op b` or `a op= b op a` patterns."##,
19624        default_severity: Severity::Allow,
19625        warn_since: None,
19626        deny_since: None,
19627    },
19628    Lint {
19629        label: "clippy::missing_assert_message",
19630        description: r##"Checks assertions without a custom panic message."##,
19631        default_severity: Severity::Allow,
19632        warn_since: None,
19633        deny_since: None,
19634    },
19635    Lint {
19636        label: "clippy::missing_asserts_for_indexing",
19637        description: r##"Checks for repeated slice indexing without asserting beforehand that the length
19638is greater than the largest index used to index into the slice."##,
19639        default_severity: Severity::Allow,
19640        warn_since: None,
19641        deny_since: None,
19642    },
19643    Lint {
19644        label: "clippy::missing_const_for_fn",
19645        description: r##"Suggests the use of `const` in functions and methods where possible."##,
19646        default_severity: Severity::Allow,
19647        warn_since: None,
19648        deny_since: None,
19649    },
19650    Lint {
19651        label: "clippy::missing_const_for_thread_local",
19652        description: r##"Suggests to use `const` in `thread_local!` macro if possible."##,
19653        default_severity: Severity::Allow,
19654        warn_since: None,
19655        deny_since: None,
19656    },
19657    Lint {
19658        label: "clippy::missing_docs_in_private_items",
19659        description: r##"Warns if there is missing documentation for any private documentable item."##,
19660        default_severity: Severity::Allow,
19661        warn_since: None,
19662        deny_since: None,
19663    },
19664    Lint {
19665        label: "clippy::missing_enforced_import_renames",
19666        description: r##"Checks for imports that do not rename the item as specified
19667in the `enforced-import-renames` config option.
19668
19669Note: Even though this lint is warn-by-default, it will only trigger if
19670import renames are defined in the `clippy.toml` file."##,
19671        default_severity: Severity::Allow,
19672        warn_since: None,
19673        deny_since: None,
19674    },
19675    Lint {
19676        label: "clippy::missing_errors_doc",
19677        description: r##"Checks the doc comments of publicly visible functions that
19678return a `Result` type and warns if there is no `# Errors` section."##,
19679        default_severity: Severity::Allow,
19680        warn_since: None,
19681        deny_since: None,
19682    },
19683    Lint {
19684        label: "clippy::missing_fields_in_debug",
19685        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."##,
19686        default_severity: Severity::Allow,
19687        warn_since: None,
19688        deny_since: None,
19689    },
19690    Lint {
19691        label: "clippy::missing_inline_in_public_items",
19692        description: r##"It lints if an exported function, method, trait method with default impl,
19693or trait method impl is not `#[inline]`."##,
19694        default_severity: Severity::Allow,
19695        warn_since: None,
19696        deny_since: None,
19697    },
19698    Lint {
19699        label: "clippy::missing_panics_doc",
19700        description: r##"Checks the doc comments of publicly visible functions that
19701may panic and warns if there is no `# Panics` section."##,
19702        default_severity: Severity::Allow,
19703        warn_since: None,
19704        deny_since: None,
19705    },
19706    Lint {
19707        label: "clippy::missing_safety_doc",
19708        description: r##"Checks for the doc comments of publicly visible
19709unsafe functions and warns if there is no `# Safety` section."##,
19710        default_severity: Severity::Allow,
19711        warn_since: None,
19712        deny_since: None,
19713    },
19714    Lint {
19715        label: "clippy::missing_spin_loop",
19716        description: r##"Checks for empty spin loops"##,
19717        default_severity: Severity::Allow,
19718        warn_since: None,
19719        deny_since: None,
19720    },
19721    Lint {
19722        label: "clippy::missing_trait_methods",
19723        description: r##"Checks if a provided method is used implicitly by a trait
19724implementation."##,
19725        default_severity: Severity::Allow,
19726        warn_since: None,
19727        deny_since: None,
19728    },
19729    Lint {
19730        label: "clippy::missing_transmute_annotations",
19731        description: r##"Checks if transmute calls have all generics specified."##,
19732        default_severity: Severity::Allow,
19733        warn_since: None,
19734        deny_since: None,
19735    },
19736    Lint {
19737        label: "clippy::mistyped_literal_suffixes",
19738        description: r##"Warns for mistyped suffix in literals"##,
19739        default_severity: Severity::Allow,
19740        warn_since: None,
19741        deny_since: None,
19742    },
19743    Lint {
19744        label: "clippy::mixed_attributes_style",
19745        description: r##"Checks for items that have the same kind of attributes with mixed styles (inner/outer)."##,
19746        default_severity: Severity::Allow,
19747        warn_since: None,
19748        deny_since: None,
19749    },
19750    Lint {
19751        label: "clippy::mixed_case_hex_literals",
19752        description: r##"Warns on hexadecimal literals with mixed-case letter
19753digits."##,
19754        default_severity: Severity::Allow,
19755        warn_since: None,
19756        deny_since: None,
19757    },
19758    Lint {
19759        label: "clippy::mixed_read_write_in_expression",
19760        description: r##"Checks for a read and a write to the same variable where
19761whether the read occurs before or after the write depends on the evaluation
19762order of sub-expressions."##,
19763        default_severity: Severity::Allow,
19764        warn_since: None,
19765        deny_since: None,
19766    },
19767    Lint {
19768        label: "clippy::mod_module_files",
19769        description: r##"Checks that module layout uses only self named module files; bans `mod.rs` files."##,
19770        default_severity: Severity::Allow,
19771        warn_since: None,
19772        deny_since: None,
19773    },
19774    Lint {
19775        label: "clippy::module_inception",
19776        description: r##"Checks for modules that have the same name as their
19777parent module"##,
19778        default_severity: Severity::Allow,
19779        warn_since: None,
19780        deny_since: None,
19781    },
19782    Lint {
19783        label: "clippy::module_name_repetitions",
19784        description: r##"Detects type names that are prefixed or suffixed by the
19785containing module's name."##,
19786        default_severity: Severity::Allow,
19787        warn_since: None,
19788        deny_since: None,
19789    },
19790    Lint {
19791        label: "clippy::modulo_arithmetic",
19792        description: r##"Checks for modulo arithmetic."##,
19793        default_severity: Severity::Allow,
19794        warn_since: None,
19795        deny_since: None,
19796    },
19797    Lint {
19798        label: "clippy::modulo_one",
19799        description: r##"Checks for getting the remainder of integer division by one or minus
19800one."##,
19801        default_severity: Severity::Allow,
19802        warn_since: None,
19803        deny_since: None,
19804    },
19805    Lint {
19806        label: "clippy::multi_assignments",
19807        description: r##"Checks for nested assignments."##,
19808        default_severity: Severity::Allow,
19809        warn_since: None,
19810        deny_since: None,
19811    },
19812    Lint {
19813        label: "clippy::multiple_bound_locations",
19814        description: r##"Check if a generic is defined both in the bound predicate and in the `where` clause."##,
19815        default_severity: Severity::Allow,
19816        warn_since: None,
19817        deny_since: None,
19818    },
19819    Lint {
19820        label: "clippy::multiple_crate_versions",
19821        description: r##"Checks to see if multiple versions of a crate are being
19822used."##,
19823        default_severity: Severity::Allow,
19824        warn_since: None,
19825        deny_since: None,
19826    },
19827    Lint {
19828        label: "clippy::multiple_inherent_impl",
19829        description: r##"Checks for multiple inherent implementations of a struct"##,
19830        default_severity: Severity::Allow,
19831        warn_since: None,
19832        deny_since: None,
19833    },
19834    Lint {
19835        label: "clippy::multiple_unsafe_ops_per_block",
19836        description: r##"Checks for `unsafe` blocks that contain more than one unsafe operation."##,
19837        default_severity: Severity::Allow,
19838        warn_since: None,
19839        deny_since: None,
19840    },
19841    Lint {
19842        label: "clippy::must_use_candidate",
19843        description: r##"Checks for public functions that have no
19844`#[must_use]` attribute, but return something not already marked
19845must-use, have no mutable arg and mutate no statics."##,
19846        default_severity: Severity::Allow,
19847        warn_since: None,
19848        deny_since: None,
19849    },
19850    Lint {
19851        label: "clippy::must_use_unit",
19852        description: r##"Checks for a `#[must_use]` attribute on
19853unit-returning functions and methods."##,
19854        default_severity: Severity::Allow,
19855        warn_since: None,
19856        deny_since: None,
19857    },
19858    Lint {
19859        label: "clippy::mut_from_ref",
19860        description: r##"This lint checks for functions that take immutable references and return
19861mutable ones. This will not trigger if no unsafe code exists as there
19862are multiple safe functions which will do this transformation
19863
19864To be on the conservative side, if there's at least one mutable
19865reference with the output lifetime, this lint will not trigger."##,
19866        default_severity: Severity::Allow,
19867        warn_since: None,
19868        deny_since: None,
19869    },
19870    Lint {
19871        label: "clippy::mut_mut",
19872        description: r##"Checks for instances of `mut mut` references."##,
19873        default_severity: Severity::Allow,
19874        warn_since: None,
19875        deny_since: None,
19876    },
19877    Lint {
19878        label: "clippy::mut_mutex_lock",
19879        description: r##"Checks for `&mut Mutex::lock` calls"##,
19880        default_severity: Severity::Allow,
19881        warn_since: None,
19882        deny_since: None,
19883    },
19884    Lint {
19885        label: "clippy::mut_range_bound",
19886        description: r##"Checks for loops with a range bound that is a mutable variable."##,
19887        default_severity: Severity::Allow,
19888        warn_since: None,
19889        deny_since: None,
19890    },
19891    Lint {
19892        label: "clippy::mutable_key_type",
19893        description: r##"Checks for sets/maps with mutable key types."##,
19894        default_severity: Severity::Allow,
19895        warn_since: None,
19896        deny_since: None,
19897    },
19898    Lint {
19899        label: "clippy::mutex_atomic",
19900        description: r##"Checks for usage of `Mutex<X>` where an atomic will do."##,
19901        default_severity: Severity::Allow,
19902        warn_since: None,
19903        deny_since: None,
19904    },
19905    Lint {
19906        label: "clippy::mutex_integer",
19907        description: r##"Checks for usage of `Mutex<X>` where `X` is an integral
19908type."##,
19909        default_severity: Severity::Allow,
19910        warn_since: None,
19911        deny_since: None,
19912    },
19913    Lint {
19914        label: "clippy::naive_bytecount",
19915        description: r##"Checks for naive byte counts"##,
19916        default_severity: Severity::Allow,
19917        warn_since: None,
19918        deny_since: None,
19919    },
19920    Lint {
19921        label: "clippy::needless_arbitrary_self_type",
19922        description: r##"The lint checks for `self` in fn parameters that
19923specify the `Self`-type explicitly"##,
19924        default_severity: Severity::Allow,
19925        warn_since: None,
19926        deny_since: None,
19927    },
19928    Lint {
19929        label: "clippy::needless_bitwise_bool",
19930        description: r##"Checks for usage of bitwise and/or operators between booleans, where performance may be improved by using
19931a lazy and."##,
19932        default_severity: Severity::Allow,
19933        warn_since: None,
19934        deny_since: None,
19935    },
19936    Lint {
19937        label: "clippy::needless_bool",
19938        description: r##"Checks for expressions of the form `if c { true } else {
19939false }` (or vice versa) and suggests using the condition directly."##,
19940        default_severity: Severity::Allow,
19941        warn_since: None,
19942        deny_since: None,
19943    },
19944    Lint {
19945        label: "clippy::needless_bool_assign",
19946        description: r##"Checks for expressions of the form `if c { x = true } else { x = false }`
19947(or vice versa) and suggest assigning the variable directly from the
19948condition."##,
19949        default_severity: Severity::Allow,
19950        warn_since: None,
19951        deny_since: None,
19952    },
19953    Lint {
19954        label: "clippy::needless_borrow",
19955        description: r##"Checks for address of operations (`&`) that are going to
19956be dereferenced immediately by the compiler."##,
19957        default_severity: Severity::Allow,
19958        warn_since: None,
19959        deny_since: None,
19960    },
19961    Lint {
19962        label: "clippy::needless_borrowed_reference",
19963        description: r##"Checks for bindings that needlessly destructure a reference and borrow the inner
19964value with `&ref`."##,
19965        default_severity: Severity::Allow,
19966        warn_since: None,
19967        deny_since: None,
19968    },
19969    Lint {
19970        label: "clippy::needless_borrows_for_generic_args",
19971        description: r##"Checks for borrow operations (`&`) that are used as a generic argument to a
19972function when the borrowed value could be used."##,
19973        default_severity: Severity::Allow,
19974        warn_since: None,
19975        deny_since: None,
19976    },
19977    Lint {
19978        label: "clippy::needless_character_iteration",
19979        description: r##"Checks if an iterator is used to check if a string is ascii."##,
19980        default_severity: Severity::Allow,
19981        warn_since: None,
19982        deny_since: None,
19983    },
19984    Lint {
19985        label: "clippy::needless_collect",
19986        description: r##"Checks for functions collecting an iterator when collect
19987is not needed."##,
19988        default_severity: Severity::Allow,
19989        warn_since: None,
19990        deny_since: None,
19991    },
19992    Lint {
19993        label: "clippy::needless_continue",
19994        description: r##"The lint checks for `if`-statements appearing in loops
19995that contain a `continue` statement in either their main blocks or their
19996`else`-blocks, when omitting the `else`-block possibly with some
19997rearrangement of code can make the code easier to understand."##,
19998        default_severity: Severity::Allow,
19999        warn_since: None,
20000        deny_since: None,
20001    },
20002    Lint {
20003        label: "clippy::needless_doctest_main",
20004        description: r##"Checks for `fn main() { .. }` in doctests"##,
20005        default_severity: Severity::Allow,
20006        warn_since: None,
20007        deny_since: None,
20008    },
20009    Lint {
20010        label: "clippy::needless_else",
20011        description: r##"Checks for empty `else` branches."##,
20012        default_severity: Severity::Allow,
20013        warn_since: None,
20014        deny_since: None,
20015    },
20016    Lint {
20017        label: "clippy::needless_for_each",
20018        description: r##"Checks for usage of `for_each` that would be more simply written as a
20019`for` loop."##,
20020        default_severity: Severity::Allow,
20021        warn_since: None,
20022        deny_since: None,
20023    },
20024    Lint {
20025        label: "clippy::needless_if",
20026        description: r##"Checks for empty `if` branches with no else branch."##,
20027        default_severity: Severity::Allow,
20028        warn_since: None,
20029        deny_since: None,
20030    },
20031    Lint {
20032        label: "clippy::needless_late_init",
20033        description: r##"Checks for late initializations that can be replaced by a `let` statement
20034with an initializer."##,
20035        default_severity: Severity::Allow,
20036        warn_since: None,
20037        deny_since: None,
20038    },
20039    Lint {
20040        label: "clippy::needless_lifetimes",
20041        description: r##"Checks for lifetime annotations which can be removed by
20042relying on lifetime elision."##,
20043        default_severity: Severity::Allow,
20044        warn_since: None,
20045        deny_since: None,
20046    },
20047    Lint {
20048        label: "clippy::needless_match",
20049        description: r##"Checks for unnecessary `match` or match-like `if let` returns for `Option` and `Result`
20050when function signatures are the same."##,
20051        default_severity: Severity::Allow,
20052        warn_since: None,
20053        deny_since: None,
20054    },
20055    Lint {
20056        label: "clippy::needless_maybe_sized",
20057        description: r##"Lints `?Sized` bounds applied to type parameters that cannot be unsized"##,
20058        default_severity: Severity::Allow,
20059        warn_since: None,
20060        deny_since: None,
20061    },
20062    Lint {
20063        label: "clippy::needless_option_as_deref",
20064        description: r##"Checks for no-op uses of `Option::{as_deref, as_deref_mut}`,
20065for example, `Option<&T>::as_deref()` returns the same type."##,
20066        default_severity: Severity::Allow,
20067        warn_since: None,
20068        deny_since: None,
20069    },
20070    Lint {
20071        label: "clippy::needless_option_take",
20072        description: r##"Checks for calling `take` function after `as_ref`."##,
20073        default_severity: Severity::Allow,
20074        warn_since: None,
20075        deny_since: None,
20076    },
20077    Lint {
20078        label: "clippy::needless_parens_on_range_literals",
20079        description: r##"The lint checks for parenthesis on literals in range statements that are
20080superfluous."##,
20081        default_severity: Severity::Allow,
20082        warn_since: None,
20083        deny_since: None,
20084    },
20085    Lint {
20086        label: "clippy::needless_pass_by_ref_mut",
20087        description: r##"Check if a `&mut` function argument is actually used mutably.
20088
20089Be careful if the function is publicly reexported as it would break compatibility with
20090users of this function, when the users pass this function as an argument."##,
20091        default_severity: Severity::Allow,
20092        warn_since: None,
20093        deny_since: None,
20094    },
20095    Lint {
20096        label: "clippy::needless_pass_by_value",
20097        description: r##"Checks for functions taking arguments by value, but not
20098consuming them in its
20099body."##,
20100        default_severity: Severity::Allow,
20101        warn_since: None,
20102        deny_since: None,
20103    },
20104    Lint {
20105        label: "clippy::needless_pub_self",
20106        description: r##"Checks for usage of `pub(self)` and `pub(in self)`."##,
20107        default_severity: Severity::Allow,
20108        warn_since: None,
20109        deny_since: None,
20110    },
20111    Lint {
20112        label: "clippy::needless_question_mark",
20113        description: r##"Suggests alternatives for useless applications of `?` in terminating expressions"##,
20114        default_severity: Severity::Allow,
20115        warn_since: None,
20116        deny_since: None,
20117    },
20118    Lint {
20119        label: "clippy::needless_range_loop",
20120        description: r##"Checks for looping over the range of `0..len` of some
20121collection just to get the values by index."##,
20122        default_severity: Severity::Allow,
20123        warn_since: None,
20124        deny_since: None,
20125    },
20126    Lint {
20127        label: "clippy::needless_raw_string_hashes",
20128        description: r##"Checks for raw string literals with an unnecessary amount of hashes around them."##,
20129        default_severity: Severity::Allow,
20130        warn_since: None,
20131        deny_since: None,
20132    },
20133    Lint {
20134        label: "clippy::needless_raw_strings",
20135        description: r##"Checks for raw string literals where a string literal can be used instead."##,
20136        default_severity: Severity::Allow,
20137        warn_since: None,
20138        deny_since: None,
20139    },
20140    Lint {
20141        label: "clippy::needless_return",
20142        description: r##"Checks for return statements at the end of a block."##,
20143        default_severity: Severity::Allow,
20144        warn_since: None,
20145        deny_since: None,
20146    },
20147    Lint {
20148        label: "clippy::needless_return_with_question_mark",
20149        description: r##"Checks for return statements on `Err` paired with the `?` operator."##,
20150        default_severity: Severity::Allow,
20151        warn_since: None,
20152        deny_since: None,
20153    },
20154    Lint {
20155        label: "clippy::needless_splitn",
20156        description: r##"Checks for usage of `str::splitn` (or `str::rsplitn`) where using `str::split` would be the same."##,
20157        default_severity: Severity::Allow,
20158        warn_since: None,
20159        deny_since: None,
20160    },
20161    Lint {
20162        label: "clippy::needless_update",
20163        description: r##"Checks for needlessly including a base struct on update
20164when all fields are changed anyway.
20165
20166This lint is not applied to structs marked with
20167[non_exhaustive](https://doc.rust-lang.org/reference/attributes/type_system.html)."##,
20168        default_severity: Severity::Allow,
20169        warn_since: None,
20170        deny_since: None,
20171    },
20172    Lint {
20173        label: "clippy::neg_cmp_op_on_partial_ord",
20174        description: r##"Checks for the usage of negated comparison operators on types which only implement
20175`PartialOrd` (e.g., `f64`)."##,
20176        default_severity: Severity::Allow,
20177        warn_since: None,
20178        deny_since: None,
20179    },
20180    Lint {
20181        label: "clippy::neg_multiply",
20182        description: r##"Checks for multiplication by -1 as a form of negation."##,
20183        default_severity: Severity::Allow,
20184        warn_since: None,
20185        deny_since: None,
20186    },
20187    Lint {
20188        label: "clippy::negative_feature_names",
20189        description: r##"Checks for negative feature names with prefix `no-` or `not-`"##,
20190        default_severity: Severity::Allow,
20191        warn_since: None,
20192        deny_since: None,
20193    },
20194    Lint {
20195        label: "clippy::never_loop",
20196        description: r##"Checks for loops that will always `break`, `return` or
20197`continue` an outer loop."##,
20198        default_severity: Severity::Allow,
20199        warn_since: None,
20200        deny_since: None,
20201    },
20202    Lint {
20203        label: "clippy::new_ret_no_self",
20204        description: r##"Checks for `new` not returning a type that contains `Self`."##,
20205        default_severity: Severity::Allow,
20206        warn_since: None,
20207        deny_since: None,
20208    },
20209    Lint {
20210        label: "clippy::new_without_default",
20211        description: r##"Checks for public types with a `pub fn new() -> Self` method and no
20212implementation of
20213[`Default`](https://doc.rust-lang.org/std/default/trait.Default.html)."##,
20214        default_severity: Severity::Allow,
20215        warn_since: None,
20216        deny_since: None,
20217    },
20218    Lint {
20219        label: "clippy::no_effect",
20220        description: r##"Checks for statements which have no effect."##,
20221        default_severity: Severity::Allow,
20222        warn_since: None,
20223        deny_since: None,
20224    },
20225    Lint {
20226        label: "clippy::no_effect_replace",
20227        description: r##"Checks for `replace` statements which have no effect."##,
20228        default_severity: Severity::Allow,
20229        warn_since: None,
20230        deny_since: None,
20231    },
20232    Lint {
20233        label: "clippy::no_effect_underscore_binding",
20234        description: r##"Checks for binding to underscore prefixed variable without side-effects."##,
20235        default_severity: Severity::Allow,
20236        warn_since: None,
20237        deny_since: None,
20238    },
20239    Lint {
20240        label: "clippy::no_mangle_with_rust_abi",
20241        description: r##"Checks for Rust ABI functions with the `#[no_mangle]` attribute."##,
20242        default_severity: Severity::Allow,
20243        warn_since: None,
20244        deny_since: None,
20245    },
20246    Lint {
20247        label: "clippy::non_ascii_literal",
20248        description: r##"Checks for non-ASCII characters in string and char literals."##,
20249        default_severity: Severity::Allow,
20250        warn_since: None,
20251        deny_since: None,
20252    },
20253    Lint {
20254        label: "clippy::non_canonical_clone_impl",
20255        description: r##"Checks for non-canonical implementations of `Clone` when `Copy` is already implemented."##,
20256        default_severity: Severity::Allow,
20257        warn_since: None,
20258        deny_since: None,
20259    },
20260    Lint {
20261        label: "clippy::non_canonical_partial_ord_impl",
20262        description: r##"Checks for non-canonical implementations of `PartialOrd` when `Ord` is already implemented."##,
20263        default_severity: Severity::Allow,
20264        warn_since: None,
20265        deny_since: None,
20266    },
20267    Lint {
20268        label: "clippy::non_minimal_cfg",
20269        description: r##"Checks for `any` and `all` combinators in `cfg` with only one condition."##,
20270        default_severity: Severity::Allow,
20271        warn_since: None,
20272        deny_since: None,
20273    },
20274    Lint {
20275        label: "clippy::non_octal_unix_permissions",
20276        description: r##"Checks for non-octal values used to set Unix file permissions."##,
20277        default_severity: Severity::Allow,
20278        warn_since: None,
20279        deny_since: None,
20280    },
20281    Lint {
20282        label: "clippy::non_send_fields_in_send_ty",
20283        description: r##"This lint warns about a `Send` implementation for a type that
20284contains fields that are not safe to be sent across threads.
20285It tries to detect fields that can cause a soundness issue
20286when sent to another thread (e.g., `Rc`) while allowing `!Send` fields
20287that are expected to exist in a `Send` type, such as raw pointers."##,
20288        default_severity: Severity::Allow,
20289        warn_since: None,
20290        deny_since: None,
20291    },
20292    Lint {
20293        label: "clippy::non_zero_suggestions",
20294        description: r##"Checks for conversions from `NonZero` types to regular integer types,
20295and suggests using `NonZero` types for the target as well."##,
20296        default_severity: Severity::Allow,
20297        warn_since: None,
20298        deny_since: None,
20299    },
20300    Lint {
20301        label: "clippy::nonminimal_bool",
20302        description: r##"Checks for boolean expressions that can be written more
20303concisely."##,
20304        default_severity: Severity::Allow,
20305        warn_since: None,
20306        deny_since: None,
20307    },
20308    Lint {
20309        label: "clippy::nonsensical_open_options",
20310        description: r##"Checks for duplicate open options as well as combinations
20311that make no sense."##,
20312        default_severity: Severity::Allow,
20313        warn_since: None,
20314        deny_since: None,
20315    },
20316    Lint {
20317        label: "clippy::nonstandard_macro_braces",
20318        description: r##"Checks that common macros are used with consistent bracing."##,
20319        default_severity: Severity::Allow,
20320        warn_since: None,
20321        deny_since: None,
20322    },
20323    Lint {
20324        label: "clippy::not_unsafe_ptr_arg_deref",
20325        description: r##"Checks for public functions that dereference raw pointer
20326arguments but are not marked `unsafe`."##,
20327        default_severity: Severity::Allow,
20328        warn_since: None,
20329        deny_since: None,
20330    },
20331    Lint {
20332        label: "clippy::obfuscated_if_else",
20333        description: r##"Checks for usage of `.then_some(..).unwrap_or(..)`"##,
20334        default_severity: Severity::Allow,
20335        warn_since: None,
20336        deny_since: None,
20337    },
20338    Lint {
20339        label: "clippy::octal_escapes",
20340        description: r##"Checks for `\\0` escapes in string and byte literals that look like octal
20341character escapes in C."##,
20342        default_severity: Severity::Allow,
20343        warn_since: None,
20344        deny_since: None,
20345    },
20346    Lint {
20347        label: "clippy::ok_expect",
20348        description: r##"Checks for usage of `ok().expect(..)`."##,
20349        default_severity: Severity::Allow,
20350        warn_since: None,
20351        deny_since: None,
20352    },
20353    Lint {
20354        label: "clippy::only_used_in_recursion",
20355        description: r##"Checks for arguments that are only used in recursion with no side-effects."##,
20356        default_severity: Severity::Allow,
20357        warn_since: None,
20358        deny_since: None,
20359    },
20360    Lint {
20361        label: "clippy::op_ref",
20362        description: r##"Checks for arguments to `==` which have their address
20363taken to satisfy a bound
20364and suggests to dereference the other argument instead"##,
20365        default_severity: Severity::Allow,
20366        warn_since: None,
20367        deny_since: None,
20368    },
20369    Lint {
20370        label: "clippy::option_as_ref_cloned",
20371        description: r##"Checks for usage of `.as_ref().cloned()` and `.as_mut().cloned()` on `Option`s"##,
20372        default_severity: Severity::Allow,
20373        warn_since: None,
20374        deny_since: None,
20375    },
20376    Lint {
20377        label: "clippy::option_as_ref_deref",
20378        description: r##"Checks for usage of `_.as_ref().map(Deref::deref)` or its aliases (such as String::as_str)."##,
20379        default_severity: Severity::Allow,
20380        warn_since: None,
20381        deny_since: None,
20382    },
20383    Lint {
20384        label: "clippy::option_env_unwrap",
20385        description: r##"Checks for usage of `option_env!(...).unwrap()` and
20386suggests usage of the `env!` macro."##,
20387        default_severity: Severity::Allow,
20388        warn_since: None,
20389        deny_since: None,
20390    },
20391    Lint {
20392        label: "clippy::option_filter_map",
20393        description: r##"Checks for iterators of `Option`s using `.filter(Option::is_some).map(Option::unwrap)` that may
20394be replaced with a `.flatten()` call."##,
20395        default_severity: Severity::Allow,
20396        warn_since: None,
20397        deny_since: None,
20398    },
20399    Lint {
20400        label: "clippy::option_if_let_else",
20401        description: r##"Lints usage of `if let Some(v) = ... { y } else { x }` and
20402`match .. { Some(v) => y, None/_ => x }` which are more
20403idiomatically done with `Option::map_or` (if the else bit is a pure
20404expression) or `Option::map_or_else` (if the else bit is an impure
20405expression)."##,
20406        default_severity: Severity::Allow,
20407        warn_since: None,
20408        deny_since: None,
20409    },
20410    Lint {
20411        label: "clippy::option_map_or_err_ok",
20412        description: r##"Checks for usage of `_.map_or(Err(_), Ok)`."##,
20413        default_severity: Severity::Allow,
20414        warn_since: None,
20415        deny_since: None,
20416    },
20417    Lint {
20418        label: "clippy::option_map_or_none",
20419        description: r##"Checks for usage of `_.map_or(None, _)`."##,
20420        default_severity: Severity::Allow,
20421        warn_since: None,
20422        deny_since: None,
20423    },
20424    Lint {
20425        label: "clippy::option_map_unit_fn",
20426        description: r##"Checks for usage of `option.map(f)` where f is a function
20427or closure that returns the unit type `()`."##,
20428        default_severity: Severity::Allow,
20429        warn_since: None,
20430        deny_since: None,
20431    },
20432    Lint {
20433        label: "clippy::option_option",
20434        description: r##"Checks for usage of `Option<Option<_>>` in function signatures and type
20435definitions"##,
20436        default_severity: Severity::Allow,
20437        warn_since: None,
20438        deny_since: None,
20439    },
20440    Lint {
20441        label: "clippy::or_fun_call",
20442        description: r##"Checks for calls to `.or(foo(..))`, `.unwrap_or(foo(..))`,
20443`.or_insert(foo(..))` etc., and suggests to use `.or_else(|| foo(..))`,
20444`.unwrap_or_else(|| foo(..))`, `.unwrap_or_default()` or `.or_default()`
20445etc. instead."##,
20446        default_severity: Severity::Allow,
20447        warn_since: None,
20448        deny_since: None,
20449    },
20450    Lint {
20451        label: "clippy::or_then_unwrap",
20452        description: r##"Checks for `.or(…).unwrap()` calls to Options and Results."##,
20453        default_severity: Severity::Allow,
20454        warn_since: None,
20455        deny_since: None,
20456    },
20457    Lint {
20458        label: "clippy::out_of_bounds_indexing",
20459        description: r##"Checks for out of bounds array indexing with a constant
20460index."##,
20461        default_severity: Severity::Allow,
20462        warn_since: None,
20463        deny_since: None,
20464    },
20465    Lint {
20466        label: "clippy::overly_complex_bool_expr",
20467        description: r##"Checks for boolean expressions that contain terminals that
20468can be eliminated."##,
20469        default_severity: Severity::Allow,
20470        warn_since: None,
20471        deny_since: None,
20472    },
20473    Lint {
20474        label: "clippy::panic",
20475        description: r##"Checks for usage of `panic!`."##,
20476        default_severity: Severity::Allow,
20477        warn_since: None,
20478        deny_since: None,
20479    },
20480    Lint {
20481        label: "clippy::panic_in_result_fn",
20482        description: r##"Checks for usage of `panic!` or assertions in a function whose return type is `Result`."##,
20483        default_severity: Severity::Allow,
20484        warn_since: None,
20485        deny_since: None,
20486    },
20487    Lint {
20488        label: "clippy::panicking_overflow_checks",
20489        description: r##"Detects C-style underflow/overflow checks."##,
20490        default_severity: Severity::Allow,
20491        warn_since: None,
20492        deny_since: None,
20493    },
20494    Lint {
20495        label: "clippy::panicking_unwrap",
20496        description: r##"Checks for calls of `unwrap[_err]()` that will always fail."##,
20497        default_severity: Severity::Allow,
20498        warn_since: None,
20499        deny_since: None,
20500    },
20501    Lint {
20502        label: "clippy::partial_pub_fields",
20503        description: r##"Checks whether some but not all fields of a `struct` are public.
20504
20505Either make all fields of a type public, or make none of them public"##,
20506        default_severity: Severity::Allow,
20507        warn_since: None,
20508        deny_since: None,
20509    },
20510    Lint {
20511        label: "clippy::partialeq_ne_impl",
20512        description: r##"Checks for manual re-implementations of `PartialEq::ne`."##,
20513        default_severity: Severity::Allow,
20514        warn_since: None,
20515        deny_since: None,
20516    },
20517    Lint {
20518        label: "clippy::partialeq_to_none",
20519        description: r##"Checks for binary comparisons to a literal `Option::None`."##,
20520        default_severity: Severity::Allow,
20521        warn_since: None,
20522        deny_since: None,
20523    },
20524    Lint {
20525        label: "clippy::path_buf_push_overwrite",
20526        description: r##"* Checks for [push](https://doc.rust-lang.org/std/path/struct.PathBuf.html#method.push)
20527calls on `PathBuf` that can cause overwrites."##,
20528        default_severity: Severity::Allow,
20529        warn_since: None,
20530        deny_since: None,
20531    },
20532    Lint {
20533        label: "clippy::path_ends_with_ext",
20534        description: r##"Looks for calls to `Path::ends_with` calls where the argument looks like a file extension.
20535
20536By default, Clippy has a short list of known filenames that start with a dot
20537but aren't necessarily file extensions (e.g. the `.git` folder), which are allowed by default.
20538The `allowed-dotfiles` configuration can be used to allow additional
20539file extensions that Clippy should not lint."##,
20540        default_severity: Severity::Allow,
20541        warn_since: None,
20542        deny_since: None,
20543    },
20544    Lint {
20545        label: "clippy::pathbuf_init_then_push",
20546        description: r##"Checks for calls to `push` immediately after creating a new `PathBuf`."##,
20547        default_severity: Severity::Allow,
20548        warn_since: None,
20549        deny_since: None,
20550    },
20551    Lint {
20552        label: "clippy::pattern_type_mismatch",
20553        description: r##"Checks for patterns that aren't exact representations of the types
20554they are applied to.
20555
20556To satisfy this lint, you will have to adjust either the expression that is matched
20557against or the pattern itself, as well as the bindings that are introduced by the
20558adjusted patterns. For matching you will have to either dereference the expression
20559with the `*` operator, or amend the patterns to explicitly match against `&<pattern>`
20560or `&mut <pattern>` depending on the reference mutability. For the bindings you need
20561to use the inverse. You can leave them as plain bindings if you wish for the value
20562to be copied, but you must use `ref mut <variable>` or `ref <variable>` to construct
20563a reference into the matched structure.
20564
20565If you are looking for a way to learn about ownership semantics in more detail, it
20566is recommended to look at IDE options available to you to highlight types, lifetimes
20567and reference semantics in your code. The available tooling would expose these things
20568in a general way even outside of the various pattern matching mechanics. Of course
20569this lint can still be used to highlight areas of interest and ensure a good understanding
20570of ownership semantics."##,
20571        default_severity: Severity::Allow,
20572        warn_since: None,
20573        deny_since: None,
20574    },
20575    Lint {
20576        label: "clippy::permissions_set_readonly_false",
20577        description: r##"Checks for calls to `std::fs::Permissions.set_readonly` with argument `false`."##,
20578        default_severity: Severity::Allow,
20579        warn_since: None,
20580        deny_since: None,
20581    },
20582    Lint {
20583        label: "clippy::pointers_in_nomem_asm_block",
20584        description: r##"Checks if any pointer is being passed to an asm! block with `nomem` option."##,
20585        default_severity: Severity::Allow,
20586        warn_since: None,
20587        deny_since: None,
20588    },
20589    Lint {
20590        label: "clippy::possible_missing_comma",
20591        description: r##"Checks for possible missing comma in an array. It lints if
20592an array element is a binary operator expression and it lies on two lines."##,
20593        default_severity: Severity::Allow,
20594        warn_since: None,
20595        deny_since: None,
20596    },
20597    Lint {
20598        label: "clippy::precedence",
20599        description: r##"Checks for operations where precedence may be unclear
20600and suggests to add parentheses. Currently it catches the following:
20601* mixed usage of arithmetic and bit shifting/combining operators without
20602parentheses"##,
20603        default_severity: Severity::Allow,
20604        warn_since: None,
20605        deny_since: None,
20606    },
20607    Lint {
20608        label: "clippy::print_in_format_impl",
20609        description: r##"Checks for usage of `println`, `print`, `eprintln` or `eprint` in an
20610implementation of a formatting trait."##,
20611        default_severity: Severity::Allow,
20612        warn_since: None,
20613        deny_since: None,
20614    },
20615    Lint {
20616        label: "clippy::print_literal",
20617        description: r##"This lint warns about the use of literals as `print!`/`println!` args."##,
20618        default_severity: Severity::Allow,
20619        warn_since: None,
20620        deny_since: None,
20621    },
20622    Lint {
20623        label: "clippy::print_stderr",
20624        description: r##"Checks for printing on *stderr*. The purpose of this lint
20625is to catch debugging remnants."##,
20626        default_severity: Severity::Allow,
20627        warn_since: None,
20628        deny_since: None,
20629    },
20630    Lint {
20631        label: "clippy::print_stdout",
20632        description: r##"Checks for printing on *stdout*. The purpose of this lint
20633is to catch debugging remnants."##,
20634        default_severity: Severity::Allow,
20635        warn_since: None,
20636        deny_since: None,
20637    },
20638    Lint {
20639        label: "clippy::print_with_newline",
20640        description: r##"This lint warns when you use `print!()` with a format
20641string that ends in a newline."##,
20642        default_severity: Severity::Allow,
20643        warn_since: None,
20644        deny_since: None,
20645    },
20646    Lint {
20647        label: "clippy::println_empty_string",
20648        description: r##"This lint warns when you use `println!()` to
20649print a newline."##,
20650        default_severity: Severity::Allow,
20651        warn_since: None,
20652        deny_since: None,
20653    },
20654    Lint {
20655        label: "clippy::ptr_arg",
20656        description: r##"This lint checks for function arguments of type `&String`, `&Vec`,
20657`&PathBuf`, and `Cow<_>`. It will also suggest you replace `.clone()` calls
20658with the appropriate `.to_owned()`/`to_string()` calls."##,
20659        default_severity: Severity::Allow,
20660        warn_since: None,
20661        deny_since: None,
20662    },
20663    Lint {
20664        label: "clippy::ptr_as_ptr",
20665        description: r##"Checks for `as` casts between raw pointers that don't change their
20666constness, namely `*const T` to `*const U` and `*mut T` to `*mut U`."##,
20667        default_severity: Severity::Allow,
20668        warn_since: None,
20669        deny_since: None,
20670    },
20671    Lint {
20672        label: "clippy::ptr_cast_constness",
20673        description: r##"Checks for `as` casts between raw pointers that change their constness, namely `*const T` to
20674`*mut T` and `*mut T` to `*const T`."##,
20675        default_severity: Severity::Allow,
20676        warn_since: None,
20677        deny_since: None,
20678    },
20679    Lint {
20680        label: "clippy::ptr_eq",
20681        description: r##"Use `std::ptr::eq` when applicable"##,
20682        default_severity: Severity::Allow,
20683        warn_since: None,
20684        deny_since: None,
20685    },
20686    Lint {
20687        label: "clippy::ptr_offset_with_cast",
20688        description: r##"Checks for usage of the `offset` pointer method with a `usize` casted to an
20689`isize`."##,
20690        default_severity: Severity::Allow,
20691        warn_since: None,
20692        deny_since: None,
20693    },
20694    Lint {
20695        label: "clippy::pub_enum_variant_names",
20696        description: r##"Nothing. This lint has been deprecated"##,
20697        default_severity: Severity::Allow,
20698        warn_since: None,
20699        deny_since: None,
20700    },
20701    Lint {
20702        label: "clippy::pub_underscore_fields",
20703        description: r##"Checks whether any field of the struct is prefixed with an `_` (underscore) and also marked
20704`pub` (public)"##,
20705        default_severity: Severity::Allow,
20706        warn_since: None,
20707        deny_since: None,
20708    },
20709    Lint {
20710        label: "clippy::pub_use",
20711        description: r##"Restricts the usage of `pub use ...`"##,
20712        default_severity: Severity::Allow,
20713        warn_since: None,
20714        deny_since: None,
20715    },
20716    Lint {
20717        label: "clippy::pub_with_shorthand",
20718        description: r##"Checks for usage of `pub(<loc>)` with `in`."##,
20719        default_severity: Severity::Allow,
20720        warn_since: None,
20721        deny_since: None,
20722    },
20723    Lint {
20724        label: "clippy::pub_without_shorthand",
20725        description: r##"Checks for usage of `pub(<loc>)` without `in`.
20726
20727Note: As you cannot write a module's path in `pub(<loc>)`, this will only trigger on
20728`pub(super)` and the like."##,
20729        default_severity: Severity::Allow,
20730        warn_since: None,
20731        deny_since: None,
20732    },
20733    Lint {
20734        label: "clippy::question_mark",
20735        description: r##"Checks for expressions that could be replaced by the question mark operator."##,
20736        default_severity: Severity::Allow,
20737        warn_since: None,
20738        deny_since: None,
20739    },
20740    Lint {
20741        label: "clippy::question_mark_used",
20742        description: r##"Checks for expressions that use the question mark operator and rejects them."##,
20743        default_severity: Severity::Allow,
20744        warn_since: None,
20745        deny_since: None,
20746    },
20747    Lint {
20748        label: "clippy::range_minus_one",
20749        description: r##"Checks for inclusive ranges where 1 is subtracted from
20750the upper bound, e.g., `x..=(y-1)`."##,
20751        default_severity: Severity::Allow,
20752        warn_since: None,
20753        deny_since: None,
20754    },
20755    Lint {
20756        label: "clippy::range_plus_one",
20757        description: r##"Checks for exclusive ranges where 1 is added to the
20758upper bound, e.g., `x..(y+1)`."##,
20759        default_severity: Severity::Allow,
20760        warn_since: None,
20761        deny_since: None,
20762    },
20763    Lint {
20764        label: "clippy::range_step_by_zero",
20765        description: r##"Nothing. This lint has been deprecated"##,
20766        default_severity: Severity::Allow,
20767        warn_since: None,
20768        deny_since: None,
20769    },
20770    Lint {
20771        label: "clippy::range_zip_with_len",
20772        description: r##"Checks for zipping a collection with the range of
20773`0.._.len()`."##,
20774        default_severity: Severity::Allow,
20775        warn_since: None,
20776        deny_since: None,
20777    },
20778    Lint {
20779        label: "clippy::rc_buffer",
20780        description: r##"Checks for `Rc<T>` and `Arc<T>` when `T` is a mutable buffer type such as `String` or `Vec`."##,
20781        default_severity: Severity::Allow,
20782        warn_since: None,
20783        deny_since: None,
20784    },
20785    Lint {
20786        label: "clippy::rc_clone_in_vec_init",
20787        description: r##"Checks for reference-counted pointers (`Arc`, `Rc`, `rc::Weak`, and `sync::Weak`)
20788in `vec![elem; len]`"##,
20789        default_severity: Severity::Allow,
20790        warn_since: None,
20791        deny_since: None,
20792    },
20793    Lint {
20794        label: "clippy::rc_mutex",
20795        description: r##"Checks for `Rc<Mutex<T>>`."##,
20796        default_severity: Severity::Allow,
20797        warn_since: None,
20798        deny_since: None,
20799    },
20800    Lint {
20801        label: "clippy::read_line_without_trim",
20802        description: r##"Looks for calls to [`Stdin::read_line`] to read a line from the standard input
20803into a string, then later attempting to use that string for an operation that will never
20804work for strings with a trailing newline character in it (e.g. parsing into a `i32`)."##,
20805        default_severity: Severity::Allow,
20806        warn_since: None,
20807        deny_since: None,
20808    },
20809    Lint {
20810        label: "clippy::read_zero_byte_vec",
20811        description: r##"This lint catches reads into a zero-length `Vec`.
20812Especially in the case of a call to `with_capacity`, this lint warns that read
20813gets the number of bytes from the `Vec`'s length, not its capacity."##,
20814        default_severity: Severity::Allow,
20815        warn_since: None,
20816        deny_since: None,
20817    },
20818    Lint {
20819        label: "clippy::readonly_write_lock",
20820        description: r##"Looks for calls to `RwLock::write` where the lock is only used for reading."##,
20821        default_severity: Severity::Allow,
20822        warn_since: None,
20823        deny_since: None,
20824    },
20825    Lint {
20826        label: "clippy::recursive_format_impl",
20827        description: r##"Checks for format trait implementations (e.g. `Display`) with a recursive call to itself
20828which uses `self` as a parameter.
20829This is typically done indirectly with the `write!` macro or with `to_string()`."##,
20830        default_severity: Severity::Allow,
20831        warn_since: None,
20832        deny_since: None,
20833    },
20834    Lint {
20835        label: "clippy::redundant_allocation",
20836        description: r##"Checks for usage of redundant allocations anywhere in the code."##,
20837        default_severity: Severity::Allow,
20838        warn_since: None,
20839        deny_since: None,
20840    },
20841    Lint {
20842        label: "clippy::redundant_as_str",
20843        description: r##"Checks for usage of `as_str()` on a `String` chained with a method available on the `String` itself."##,
20844        default_severity: Severity::Allow,
20845        warn_since: None,
20846        deny_since: None,
20847    },
20848    Lint {
20849        label: "clippy::redundant_async_block",
20850        description: r##"Checks for `async` block that only returns `await` on a future."##,
20851        default_severity: Severity::Allow,
20852        warn_since: None,
20853        deny_since: None,
20854    },
20855    Lint {
20856        label: "clippy::redundant_at_rest_pattern",
20857        description: r##"Checks for `[all @ ..]` patterns."##,
20858        default_severity: Severity::Allow,
20859        warn_since: None,
20860        deny_since: None,
20861    },
20862    Lint {
20863        label: "clippy::redundant_clone",
20864        description: r##"Checks for a redundant `clone()` (and its relatives) which clones an owned
20865value that is going to be dropped without further use."##,
20866        default_severity: Severity::Allow,
20867        warn_since: None,
20868        deny_since: None,
20869    },
20870    Lint {
20871        label: "clippy::redundant_closure",
20872        description: r##"Checks for closures which just call another function where
20873the function can be called directly. `unsafe` functions, calls where types
20874get adjusted or where the callee is marked `#[track_caller]` are ignored."##,
20875        default_severity: Severity::Allow,
20876        warn_since: None,
20877        deny_since: None,
20878    },
20879    Lint {
20880        label: "clippy::redundant_closure_call",
20881        description: r##"Detects closures called in the same expression where they
20882are defined."##,
20883        default_severity: Severity::Allow,
20884        warn_since: None,
20885        deny_since: None,
20886    },
20887    Lint {
20888        label: "clippy::redundant_closure_for_method_calls",
20889        description: r##"Checks for closures which only invoke a method on the closure
20890argument and can be replaced by referencing the method directly."##,
20891        default_severity: Severity::Allow,
20892        warn_since: None,
20893        deny_since: None,
20894    },
20895    Lint {
20896        label: "clippy::redundant_comparisons",
20897        description: r##"Checks for ineffective double comparisons against constants."##,
20898        default_severity: Severity::Allow,
20899        warn_since: None,
20900        deny_since: None,
20901    },
20902    Lint {
20903        label: "clippy::redundant_else",
20904        description: r##"Checks for `else` blocks that can be removed without changing semantics."##,
20905        default_severity: Severity::Allow,
20906        warn_since: None,
20907        deny_since: None,
20908    },
20909    Lint {
20910        label: "clippy::redundant_feature_names",
20911        description: r##"Checks for feature names with prefix `use-`, `with-` or suffix `-support`"##,
20912        default_severity: Severity::Allow,
20913        warn_since: None,
20914        deny_since: None,
20915    },
20916    Lint {
20917        label: "clippy::redundant_field_names",
20918        description: r##"Checks for fields in struct literals where shorthands
20919could be used."##,
20920        default_severity: Severity::Allow,
20921        warn_since: None,
20922        deny_since: None,
20923    },
20924    Lint {
20925        label: "clippy::redundant_guards",
20926        description: r##"Checks for unnecessary guards in match expressions."##,
20927        default_severity: Severity::Allow,
20928        warn_since: None,
20929        deny_since: None,
20930    },
20931    Lint {
20932        label: "clippy::redundant_locals",
20933        description: r##"Checks for redundant redefinitions of local bindings."##,
20934        default_severity: Severity::Allow,
20935        warn_since: None,
20936        deny_since: None,
20937    },
20938    Lint {
20939        label: "clippy::redundant_pattern",
20940        description: r##"Checks for patterns in the form `name @ _`."##,
20941        default_severity: Severity::Allow,
20942        warn_since: None,
20943        deny_since: None,
20944    },
20945    Lint {
20946        label: "clippy::redundant_pattern_matching",
20947        description: r##"Lint for redundant pattern matching over `Result`, `Option`,
20948`std::task::Poll`, `std::net::IpAddr` or `bool`s"##,
20949        default_severity: Severity::Allow,
20950        warn_since: None,
20951        deny_since: None,
20952    },
20953    Lint {
20954        label: "clippy::redundant_pub_crate",
20955        description: r##"Checks for items declared `pub(crate)` that are not crate visible because they
20956are inside a private module."##,
20957        default_severity: Severity::Allow,
20958        warn_since: None,
20959        deny_since: None,
20960    },
20961    Lint {
20962        label: "clippy::redundant_slicing",
20963        description: r##"Checks for redundant slicing expressions which use the full range, and
20964do not change the type."##,
20965        default_severity: Severity::Allow,
20966        warn_since: None,
20967        deny_since: None,
20968    },
20969    Lint {
20970        label: "clippy::redundant_static_lifetimes",
20971        description: r##"Checks for constants and statics with an explicit `'static` lifetime."##,
20972        default_severity: Severity::Allow,
20973        warn_since: None,
20974        deny_since: None,
20975    },
20976    Lint {
20977        label: "clippy::redundant_type_annotations",
20978        description: r##"Warns about needless / redundant type annotations."##,
20979        default_severity: Severity::Allow,
20980        warn_since: None,
20981        deny_since: None,
20982    },
20983    Lint {
20984        label: "clippy::ref_as_ptr",
20985        description: r##"Checks for casts of references to pointer using `as`
20986and suggests `std::ptr::from_ref` and `std::ptr::from_mut` instead."##,
20987        default_severity: Severity::Allow,
20988        warn_since: None,
20989        deny_since: None,
20990    },
20991    Lint {
20992        label: "clippy::ref_binding_to_reference",
20993        description: r##"Checks for `ref` bindings which create a reference to a reference."##,
20994        default_severity: Severity::Allow,
20995        warn_since: None,
20996        deny_since: None,
20997    },
20998    Lint {
20999        label: "clippy::ref_option",
21000        description: r##"Warns when a function signature uses `&Option<T>` instead of `Option<&T>`."##,
21001        default_severity: Severity::Allow,
21002        warn_since: None,
21003        deny_since: None,
21004    },
21005    Lint {
21006        label: "clippy::ref_option_ref",
21007        description: r##"Checks for usage of `&Option<&T>`."##,
21008        default_severity: Severity::Allow,
21009        warn_since: None,
21010        deny_since: None,
21011    },
21012    Lint {
21013        label: "clippy::ref_patterns",
21014        description: r##"Checks for usages of the `ref` keyword."##,
21015        default_severity: Severity::Allow,
21016        warn_since: None,
21017        deny_since: None,
21018    },
21019    Lint {
21020        label: "clippy::regex_macro",
21021        description: r##"Nothing. This lint has been deprecated"##,
21022        default_severity: Severity::Allow,
21023        warn_since: None,
21024        deny_since: None,
21025    },
21026    Lint {
21027        label: "clippy::renamed_function_params",
21028        description: r##"Lints when the name of function parameters from trait impl is
21029different than its default implementation."##,
21030        default_severity: Severity::Allow,
21031        warn_since: None,
21032        deny_since: None,
21033    },
21034    Lint {
21035        label: "clippy::repeat_once",
21036        description: r##"Checks for usage of `.repeat(1)` and suggest the following method for each types.
21037- `.to_string()` for `str`
21038- `.clone()` for `String`
21039- `.to_vec()` for `slice`
21040
21041The lint will evaluate constant expressions and values as arguments of `.repeat(..)` and emit a message if
21042they are equivalent to `1`. (Related discussion in [rust-clippy#7306](https://github.com/rust-lang/rust-clippy/issues/7306))"##,
21043        default_severity: Severity::Allow,
21044        warn_since: None,
21045        deny_since: None,
21046    },
21047    Lint {
21048        label: "clippy::repeat_vec_with_capacity",
21049        description: r##"Looks for patterns such as `vec![Vec::with_capacity(x); n]` or `iter::repeat(Vec::with_capacity(x))`."##,
21050        default_severity: Severity::Allow,
21051        warn_since: None,
21052        deny_since: None,
21053    },
21054    Lint {
21055        label: "clippy::replace_consts",
21056        description: r##"Nothing. This lint has been deprecated"##,
21057        default_severity: Severity::Allow,
21058        warn_since: None,
21059        deny_since: None,
21060    },
21061    Lint {
21062        label: "clippy::reserve_after_initialization",
21063        description: r##"Informs the user about a more concise way to create a vector with a known capacity."##,
21064        default_severity: Severity::Allow,
21065        warn_since: None,
21066        deny_since: None,
21067    },
21068    Lint {
21069        label: "clippy::rest_pat_in_fully_bound_structs",
21070        description: r##"Checks for unnecessary '..' pattern binding on struct when all fields are explicitly matched."##,
21071        default_severity: Severity::Allow,
21072        warn_since: None,
21073        deny_since: None,
21074    },
21075    Lint {
21076        label: "clippy::result_filter_map",
21077        description: r##"Checks for iterators of `Result`s using `.filter(Result::is_ok).map(Result::unwrap)` that may
21078be replaced with a `.flatten()` call."##,
21079        default_severity: Severity::Allow,
21080        warn_since: None,
21081        deny_since: None,
21082    },
21083    Lint {
21084        label: "clippy::result_large_err",
21085        description: r##"Checks for functions that return `Result` with an unusually large
21086`Err`-variant."##,
21087        default_severity: Severity::Allow,
21088        warn_since: None,
21089        deny_since: None,
21090    },
21091    Lint {
21092        label: "clippy::result_map_or_into_option",
21093        description: r##"Checks for usage of `_.map_or(None, Some)`."##,
21094        default_severity: Severity::Allow,
21095        warn_since: None,
21096        deny_since: None,
21097    },
21098    Lint {
21099        label: "clippy::result_map_unit_fn",
21100        description: r##"Checks for usage of `result.map(f)` where f is a function
21101or closure that returns the unit type `()`."##,
21102        default_severity: Severity::Allow,
21103        warn_since: None,
21104        deny_since: None,
21105    },
21106    Lint {
21107        label: "clippy::result_unit_err",
21108        description: r##"Checks for public functions that return a `Result`
21109with an `Err` type of `()`. It suggests using a custom type that
21110implements `std::error::Error`."##,
21111        default_severity: Severity::Allow,
21112        warn_since: None,
21113        deny_since: None,
21114    },
21115    Lint {
21116        label: "clippy::return_self_not_must_use",
21117        description: r##"This lint warns when a method returning `Self` doesn't have the `#[must_use]` attribute."##,
21118        default_severity: Severity::Allow,
21119        warn_since: None,
21120        deny_since: None,
21121    },
21122    Lint {
21123        label: "clippy::reversed_empty_ranges",
21124        description: r##"Checks for range expressions `x..y` where both `x` and `y`
21125are constant and `x` is greater to `y`. Also triggers if `x` is equal to `y` when they are conditions to a `for` loop."##,
21126        default_severity: Severity::Allow,
21127        warn_since: None,
21128        deny_since: None,
21129    },
21130    Lint {
21131        label: "clippy::same_functions_in_if_condition",
21132        description: r##"Checks for consecutive `if`s with the same function call."##,
21133        default_severity: Severity::Allow,
21134        warn_since: None,
21135        deny_since: None,
21136    },
21137    Lint {
21138        label: "clippy::same_item_push",
21139        description: r##"Checks whether a for loop is being used to push a constant
21140value into a Vec."##,
21141        default_severity: Severity::Allow,
21142        warn_since: None,
21143        deny_since: None,
21144    },
21145    Lint {
21146        label: "clippy::same_name_method",
21147        description: r##"It lints if a struct has two methods with the same name:
21148one from a trait, another not from a trait."##,
21149        default_severity: Severity::Allow,
21150        warn_since: None,
21151        deny_since: None,
21152    },
21153    Lint {
21154        label: "clippy::search_is_some",
21155        description: r##"Checks for an iterator or string search (such as `find()`,
21156`position()`, or `rposition()`) followed by a call to `is_some()` or `is_none()`."##,
21157        default_severity: Severity::Allow,
21158        warn_since: None,
21159        deny_since: None,
21160    },
21161    Lint {
21162        label: "clippy::seek_from_current",
21163        description: r##"Checks if the `seek` method of the `Seek` trait is called with `SeekFrom::Current(0)`,
21164and if it is, suggests using `stream_position` instead."##,
21165        default_severity: Severity::Allow,
21166        warn_since: None,
21167        deny_since: None,
21168    },
21169    Lint {
21170        label: "clippy::seek_to_start_instead_of_rewind",
21171        description: r##"Checks for jumps to the start of a stream that implements `Seek`
21172and uses the `seek` method providing `Start` as parameter."##,
21173        default_severity: Severity::Allow,
21174        warn_since: None,
21175        deny_since: None,
21176    },
21177    Lint {
21178        label: "clippy::self_assignment",
21179        description: r##"Checks for explicit self-assignments."##,
21180        default_severity: Severity::Allow,
21181        warn_since: None,
21182        deny_since: None,
21183    },
21184    Lint {
21185        label: "clippy::self_named_constructors",
21186        description: r##"Warns when constructors have the same name as their types."##,
21187        default_severity: Severity::Allow,
21188        warn_since: None,
21189        deny_since: None,
21190    },
21191    Lint {
21192        label: "clippy::self_named_module_files",
21193        description: r##"Checks that module layout uses only `mod.rs` files."##,
21194        default_severity: Severity::Allow,
21195        warn_since: None,
21196        deny_since: None,
21197    },
21198    Lint {
21199        label: "clippy::semicolon_if_nothing_returned",
21200        description: r##"Looks for blocks of expressions and fires if the last expression returns
21201`()` but is not followed by a semicolon."##,
21202        default_severity: Severity::Allow,
21203        warn_since: None,
21204        deny_since: None,
21205    },
21206    Lint {
21207        label: "clippy::semicolon_inside_block",
21208        description: r##"Suggests moving the semicolon after a block to the inside of the block, after its last
21209expression."##,
21210        default_severity: Severity::Allow,
21211        warn_since: None,
21212        deny_since: None,
21213    },
21214    Lint {
21215        label: "clippy::semicolon_outside_block",
21216        description: r##"Suggests moving the semicolon from a block's final expression outside of the block."##,
21217        default_severity: Severity::Allow,
21218        warn_since: None,
21219        deny_since: None,
21220    },
21221    Lint {
21222        label: "clippy::separated_literal_suffix",
21223        description: r##"Warns if literal suffixes are separated by an underscore.
21224To enforce separated literal suffix style,
21225see the `unseparated_literal_suffix` lint."##,
21226        default_severity: Severity::Allow,
21227        warn_since: None,
21228        deny_since: None,
21229    },
21230    Lint {
21231        label: "clippy::serde_api_misuse",
21232        description: r##"Checks for misuses of the serde API."##,
21233        default_severity: Severity::Allow,
21234        warn_since: None,
21235        deny_since: None,
21236    },
21237    Lint {
21238        label: "clippy::set_contains_or_insert",
21239        description: r##"Checks for usage of `contains` to see if a value is not present
21240in a set like `HashSet` or `BTreeSet`, followed by an `insert`."##,
21241        default_severity: Severity::Allow,
21242        warn_since: None,
21243        deny_since: None,
21244    },
21245    Lint {
21246        label: "clippy::shadow_reuse",
21247        description: r##"Checks for bindings that shadow other bindings already in
21248scope, while reusing the original value."##,
21249        default_severity: Severity::Allow,
21250        warn_since: None,
21251        deny_since: None,
21252    },
21253    Lint {
21254        label: "clippy::shadow_same",
21255        description: r##"Checks for bindings that shadow other bindings already in
21256scope, while just changing reference level or mutability."##,
21257        default_severity: Severity::Allow,
21258        warn_since: None,
21259        deny_since: None,
21260    },
21261    Lint {
21262        label: "clippy::shadow_unrelated",
21263        description: r##"Checks for bindings that shadow other bindings already in
21264scope, either without an initialization or with one that does not even use
21265the original value."##,
21266        default_severity: Severity::Allow,
21267        warn_since: None,
21268        deny_since: None,
21269    },
21270    Lint {
21271        label: "clippy::short_circuit_statement",
21272        description: r##"Checks for the use of short circuit boolean conditions as
21273a
21274statement."##,
21275        default_severity: Severity::Allow,
21276        warn_since: None,
21277        deny_since: None,
21278    },
21279    Lint {
21280        label: "clippy::should_assert_eq",
21281        description: r##"Nothing. This lint has been deprecated"##,
21282        default_severity: Severity::Allow,
21283        warn_since: None,
21284        deny_since: None,
21285    },
21286    Lint {
21287        label: "clippy::should_implement_trait",
21288        description: r##"Checks for methods that should live in a trait
21289implementation of a `std` trait (see [llogiq's blog
21290post](http://llogiq.github.io/2015/07/30/traits.html) for further
21291information) instead of an inherent implementation."##,
21292        default_severity: Severity::Allow,
21293        warn_since: None,
21294        deny_since: None,
21295    },
21296    Lint {
21297        label: "clippy::should_panic_without_expect",
21298        description: r##"Checks for `#[should_panic]` attributes without specifying the expected panic message."##,
21299        default_severity: Severity::Allow,
21300        warn_since: None,
21301        deny_since: None,
21302    },
21303    Lint {
21304        label: "clippy::significant_drop_in_scrutinee",
21305        description: r##"Checks for temporaries returned from function calls in a match scrutinee that have the
21306`clippy::has_significant_drop` attribute."##,
21307        default_severity: Severity::Allow,
21308        warn_since: None,
21309        deny_since: None,
21310    },
21311    Lint {
21312        label: "clippy::significant_drop_tightening",
21313        description: r##"Searches for elements marked with `#[clippy::has_significant_drop]` that could be early
21314dropped but are in fact dropped at the end of their scopes. In other words, enforces the
21315tightening of their possible lifetimes."##,
21316        default_severity: Severity::Allow,
21317        warn_since: None,
21318        deny_since: None,
21319    },
21320    Lint {
21321        label: "clippy::similar_names",
21322        description: r##"Checks for names that are very similar and thus confusing.
21323
21324Note: this lint looks for similar names throughout each
21325scope. To allow it, you need to allow it on the scope
21326level, not on the name that is reported."##,
21327        default_severity: Severity::Allow,
21328        warn_since: None,
21329        deny_since: None,
21330    },
21331    Lint {
21332        label: "clippy::single_call_fn",
21333        description: r##"Checks for functions that are only used once. Does not lint tests."##,
21334        default_severity: Severity::Allow,
21335        warn_since: None,
21336        deny_since: None,
21337    },
21338    Lint {
21339        label: "clippy::single_char_add_str",
21340        description: r##"Warns when using `push_str`/`insert_str` with a single-character string literal
21341where `push`/`insert` with a `char` would work fine."##,
21342        default_severity: Severity::Allow,
21343        warn_since: None,
21344        deny_since: None,
21345    },
21346    Lint {
21347        label: "clippy::single_char_lifetime_names",
21348        description: r##"Checks for lifetimes with names which are one character
21349long."##,
21350        default_severity: Severity::Allow,
21351        warn_since: None,
21352        deny_since: None,
21353    },
21354    Lint {
21355        label: "clippy::single_char_pattern",
21356        description: r##"Checks for string methods that receive a single-character
21357`str` as an argument, e.g., `_.split(x)`."##,
21358        default_severity: Severity::Allow,
21359        warn_since: None,
21360        deny_since: None,
21361    },
21362    Lint {
21363        label: "clippy::single_component_path_imports",
21364        description: r##"Checking for imports with single component use path."##,
21365        default_severity: Severity::Allow,
21366        warn_since: None,
21367        deny_since: None,
21368    },
21369    Lint {
21370        label: "clippy::single_element_loop",
21371        description: r##"Checks whether a for loop has a single element."##,
21372        default_severity: Severity::Allow,
21373        warn_since: None,
21374        deny_since: None,
21375    },
21376    Lint {
21377        label: "clippy::single_match",
21378        description: r##"Checks for matches with a single arm where an `if let`
21379will usually suffice.
21380
21381This intentionally does not lint if there are comments
21382inside of the other arm, so as to allow the user to document
21383why having another explicit pattern with an empty body is necessary,
21384or because the comments need to be preserved for other reasons."##,
21385        default_severity: Severity::Allow,
21386        warn_since: None,
21387        deny_since: None,
21388    },
21389    Lint {
21390        label: "clippy::single_match_else",
21391        description: r##"Checks for matches with two arms where an `if let else` will
21392usually suffice."##,
21393        default_severity: Severity::Allow,
21394        warn_since: None,
21395        deny_since: None,
21396    },
21397    Lint {
21398        label: "clippy::single_range_in_vec_init",
21399        description: r##"Checks for `Vec` or array initializations that contain only one range."##,
21400        default_severity: Severity::Allow,
21401        warn_since: None,
21402        deny_since: None,
21403    },
21404    Lint {
21405        label: "clippy::size_of_in_element_count",
21406        description: r##"Detects expressions where
21407`size_of::<T>` or `size_of_val::<T>` is used as a
21408count of elements of type `T`"##,
21409        default_severity: Severity::Allow,
21410        warn_since: None,
21411        deny_since: None,
21412    },
21413    Lint {
21414        label: "clippy::size_of_ref",
21415        description: r##"Checks for calls to `std::mem::size_of_val()` where the argument is
21416a reference to a reference."##,
21417        default_severity: Severity::Allow,
21418        warn_since: None,
21419        deny_since: None,
21420    },
21421    Lint {
21422        label: "clippy::skip_while_next",
21423        description: r##"Checks for usage of `_.skip_while(condition).next()`."##,
21424        default_severity: Severity::Allow,
21425        warn_since: None,
21426        deny_since: None,
21427    },
21428    Lint {
21429        label: "clippy::slow_vector_initialization",
21430        description: r##"Checks slow zero-filled vector initialization"##,
21431        default_severity: Severity::Allow,
21432        warn_since: None,
21433        deny_since: None,
21434    },
21435    Lint {
21436        label: "clippy::stable_sort_primitive",
21437        description: r##"When sorting primitive values (integers, bools, chars, as well
21438as arrays, slices, and tuples of such items), it is typically better to
21439use an unstable sort than a stable sort."##,
21440        default_severity: Severity::Allow,
21441        warn_since: None,
21442        deny_since: None,
21443    },
21444    Lint {
21445        label: "clippy::std_instead_of_alloc",
21446        description: r##"Finds items imported through `std` when available through `alloc`."##,
21447        default_severity: Severity::Allow,
21448        warn_since: None,
21449        deny_since: None,
21450    },
21451    Lint {
21452        label: "clippy::std_instead_of_core",
21453        description: r##"Finds items imported through `std` when available through `core`."##,
21454        default_severity: Severity::Allow,
21455        warn_since: None,
21456        deny_since: None,
21457    },
21458    Lint {
21459        label: "clippy::str_split_at_newline",
21460        description: r##"Checks for usages of `str.trim().split(\
21461)` and `str.trim().split(\\
21462)`."##,
21463        default_severity: Severity::Allow,
21464        warn_since: None,
21465        deny_since: None,
21466    },
21467    Lint {
21468        label: "clippy::str_to_string",
21469        description: r##"This lint checks for `.to_string()` method calls on values of type `&str`."##,
21470        default_severity: Severity::Allow,
21471        warn_since: None,
21472        deny_since: None,
21473    },
21474    Lint {
21475        label: "clippy::string_add",
21476        description: r##"Checks for all instances of `x + _` where `x` is of type
21477`String`, but only if [`string_add_assign`](#string_add_assign) does *not*
21478match."##,
21479        default_severity: Severity::Allow,
21480        warn_since: None,
21481        deny_since: None,
21482    },
21483    Lint {
21484        label: "clippy::string_add_assign",
21485        description: r##"Checks for string appends of the form `x = x + y` (without
21486`let`!)."##,
21487        default_severity: Severity::Allow,
21488        warn_since: None,
21489        deny_since: None,
21490    },
21491    Lint {
21492        label: "clippy::string_extend_chars",
21493        description: r##"Checks for the use of `.extend(s.chars())` where s is a
21494`&str` or `String`."##,
21495        default_severity: Severity::Allow,
21496        warn_since: None,
21497        deny_since: None,
21498    },
21499    Lint {
21500        label: "clippy::string_from_utf8_as_bytes",
21501        description: r##"Check if the string is transformed to byte array and casted back to string."##,
21502        default_severity: Severity::Allow,
21503        warn_since: None,
21504        deny_since: None,
21505    },
21506    Lint {
21507        label: "clippy::string_lit_as_bytes",
21508        description: r##"Checks for the `as_bytes` method called on string literals
21509that contain only ASCII characters."##,
21510        default_severity: Severity::Allow,
21511        warn_since: None,
21512        deny_since: None,
21513    },
21514    Lint {
21515        label: "clippy::string_lit_chars_any",
21516        description: r##"Checks for `<string_lit>.chars().any(|i| i == c)`."##,
21517        default_severity: Severity::Allow,
21518        warn_since: None,
21519        deny_since: None,
21520    },
21521    Lint {
21522        label: "clippy::string_slice",
21523        description: r##"Checks for slice operations on strings"##,
21524        default_severity: Severity::Allow,
21525        warn_since: None,
21526        deny_since: None,
21527    },
21528    Lint {
21529        label: "clippy::string_to_string",
21530        description: r##"This lint checks for `.to_string()` method calls on values of type `String`."##,
21531        default_severity: Severity::Allow,
21532        warn_since: None,
21533        deny_since: None,
21534    },
21535    Lint {
21536        label: "clippy::strlen_on_c_strings",
21537        description: r##"Checks for usage of `libc::strlen` on a `CString` or `CStr` value,
21538and suggest calling `as_bytes().len()` or `to_bytes().len()` respectively instead."##,
21539        default_severity: Severity::Allow,
21540        warn_since: None,
21541        deny_since: None,
21542    },
21543    Lint {
21544        label: "clippy::struct_excessive_bools",
21545        description: r##"Checks for excessive
21546use of bools in structs."##,
21547        default_severity: Severity::Allow,
21548        warn_since: None,
21549        deny_since: None,
21550    },
21551    Lint {
21552        label: "clippy::struct_field_names",
21553        description: r##"Detects struct fields that are prefixed or suffixed
21554by the same characters or the name of the struct itself."##,
21555        default_severity: Severity::Allow,
21556        warn_since: None,
21557        deny_since: None,
21558    },
21559    Lint {
21560        label: "clippy::suboptimal_flops",
21561        description: r##"Looks for floating-point expressions that
21562can be expressed using built-in methods to improve both
21563accuracy and performance."##,
21564        default_severity: Severity::Allow,
21565        warn_since: None,
21566        deny_since: None,
21567    },
21568    Lint {
21569        label: "clippy::suspicious_arithmetic_impl",
21570        description: r##"Lints for suspicious operations in impls of arithmetic operators, e.g.
21571subtracting elements in an Add impl."##,
21572        default_severity: Severity::Allow,
21573        warn_since: None,
21574        deny_since: None,
21575    },
21576    Lint {
21577        label: "clippy::suspicious_assignment_formatting",
21578        description: r##"Checks for usage of the non-existent `=*`, `=!` and `=-`
21579operators."##,
21580        default_severity: Severity::Allow,
21581        warn_since: None,
21582        deny_since: None,
21583    },
21584    Lint {
21585        label: "clippy::suspicious_command_arg_space",
21586        description: r##"Checks for `Command::arg()` invocations that look like they
21587should be multiple arguments instead, such as `arg(-t ext2)`."##,
21588        default_severity: Severity::Allow,
21589        warn_since: None,
21590        deny_since: None,
21591    },
21592    Lint {
21593        label: "clippy::suspicious_doc_comments",
21594        description: r##"Detects the use of outer doc comments (`///`, `/**`) followed by a bang (`!`): `///!`"##,
21595        default_severity: Severity::Allow,
21596        warn_since: None,
21597        deny_since: None,
21598    },
21599    Lint {
21600        label: "clippy::suspicious_else_formatting",
21601        description: r##"Checks for formatting of `else`. It lints if the `else`
21602is followed immediately by a newline or the `else` seems to be missing."##,
21603        default_severity: Severity::Allow,
21604        warn_since: None,
21605        deny_since: None,
21606    },
21607    Lint {
21608        label: "clippy::suspicious_map",
21609        description: r##"Checks for calls to `map` followed by a `count`."##,
21610        default_severity: Severity::Allow,
21611        warn_since: None,
21612        deny_since: None,
21613    },
21614    Lint {
21615        label: "clippy::suspicious_op_assign_impl",
21616        description: r##"Lints for suspicious operations in impls of OpAssign, e.g.
21617subtracting elements in an AddAssign impl."##,
21618        default_severity: Severity::Allow,
21619        warn_since: None,
21620        deny_since: None,
21621    },
21622    Lint {
21623        label: "clippy::suspicious_open_options",
21624        description: r##"Checks for the suspicious use of `OpenOptions::create()`
21625without an explicit `OpenOptions::truncate()`."##,
21626        default_severity: Severity::Allow,
21627        warn_since: None,
21628        deny_since: None,
21629    },
21630    Lint {
21631        label: "clippy::suspicious_operation_groupings",
21632        description: r##"Checks for unlikely usages of binary operators that are almost
21633certainly typos and/or copy/paste errors, given the other usages
21634of binary operators nearby."##,
21635        default_severity: Severity::Allow,
21636        warn_since: None,
21637        deny_since: None,
21638    },
21639    Lint {
21640        label: "clippy::suspicious_splitn",
21641        description: r##"Checks for calls to [`splitn`]
21642(https://doc.rust-lang.org/std/primitive.str.html#method.splitn) and
21643related functions with either zero or one splits."##,
21644        default_severity: Severity::Allow,
21645        warn_since: None,
21646        deny_since: None,
21647    },
21648    Lint {
21649        label: "clippy::suspicious_to_owned",
21650        description: r##"Checks for the usage of `_.to_owned()`, on a `Cow<'_, _>`."##,
21651        default_severity: Severity::Allow,
21652        warn_since: None,
21653        deny_since: None,
21654    },
21655    Lint {
21656        label: "clippy::suspicious_unary_op_formatting",
21657        description: r##"Checks the formatting of a unary operator on the right hand side
21658of a binary operator. It lints if there is no space between the binary and unary operators,
21659but there is a space between the unary and its operand."##,
21660        default_severity: Severity::Allow,
21661        warn_since: None,
21662        deny_since: None,
21663    },
21664    Lint {
21665        label: "clippy::suspicious_xor_used_as_pow",
21666        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."##,
21667        default_severity: Severity::Allow,
21668        warn_since: None,
21669        deny_since: None,
21670    },
21671    Lint {
21672        label: "clippy::swap_ptr_to_ref",
21673        description: r##"Checks for calls to `core::mem::swap` where either parameter is derived from a pointer"##,
21674        default_severity: Severity::Allow,
21675        warn_since: None,
21676        deny_since: None,
21677    },
21678    Lint {
21679        label: "clippy::tabs_in_doc_comments",
21680        description: r##"Checks doc comments for usage of tab characters."##,
21681        default_severity: Severity::Allow,
21682        warn_since: None,
21683        deny_since: None,
21684    },
21685    Lint {
21686        label: "clippy::temporary_assignment",
21687        description: r##"Checks for construction of a structure or tuple just to
21688assign a value in it."##,
21689        default_severity: Severity::Allow,
21690        warn_since: None,
21691        deny_since: None,
21692    },
21693    Lint {
21694        label: "clippy::test_attr_in_doctest",
21695        description: r##"Checks for `#[test]` in doctests unless they are marked with
21696either `ignore`, `no_run` or `compile_fail`."##,
21697        default_severity: Severity::Allow,
21698        warn_since: None,
21699        deny_since: None,
21700    },
21701    Lint {
21702        label: "clippy::tests_outside_test_module",
21703        description: r##"Triggers when a testing function (marked with the `#[test]` attribute) isn't inside a testing module
21704(marked with `#[cfg(test)]`)."##,
21705        default_severity: Severity::Allow,
21706        warn_since: None,
21707        deny_since: None,
21708    },
21709    Lint {
21710        label: "clippy::to_digit_is_some",
21711        description: r##"Checks for `.to_digit(..).is_some()` on `char`s."##,
21712        default_severity: Severity::Allow,
21713        warn_since: None,
21714        deny_since: None,
21715    },
21716    Lint {
21717        label: "clippy::to_string_in_format_args",
21718        description: r##"Checks for [`ToString::to_string`](https://doc.rust-lang.org/std/string/trait.ToString.html#tymethod.to_string)
21719applied to a type that implements [`Display`](https://doc.rust-lang.org/std/fmt/trait.Display.html)
21720in a macro that does formatting."##,
21721        default_severity: Severity::Allow,
21722        warn_since: None,
21723        deny_since: None,
21724    },
21725    Lint {
21726        label: "clippy::to_string_trait_impl",
21727        description: r##"Checks for direct implementations of `ToString`."##,
21728        default_severity: Severity::Allow,
21729        warn_since: None,
21730        deny_since: None,
21731    },
21732    Lint {
21733        label: "clippy::todo",
21734        description: r##"Checks for usage of `todo!`."##,
21735        default_severity: Severity::Allow,
21736        warn_since: None,
21737        deny_since: None,
21738    },
21739    Lint {
21740        label: "clippy::too_long_first_doc_paragraph",
21741        description: r##"Checks if the first line in the documentation of items listed in module page is too long."##,
21742        default_severity: Severity::Allow,
21743        warn_since: None,
21744        deny_since: None,
21745    },
21746    Lint {
21747        label: "clippy::too_many_arguments",
21748        description: r##"Checks for functions with too many parameters."##,
21749        default_severity: Severity::Allow,
21750        warn_since: None,
21751        deny_since: None,
21752    },
21753    Lint {
21754        label: "clippy::too_many_lines",
21755        description: r##"Checks for functions with a large amount of lines."##,
21756        default_severity: Severity::Allow,
21757        warn_since: None,
21758        deny_since: None,
21759    },
21760    Lint {
21761        label: "clippy::toplevel_ref_arg",
21762        description: r##"Checks for function arguments and let bindings denoted as
21763`ref`."##,
21764        default_severity: Severity::Allow,
21765        warn_since: None,
21766        deny_since: None,
21767    },
21768    Lint {
21769        label: "clippy::trailing_empty_array",
21770        description: r##"Displays a warning when a struct with a trailing zero-sized array is declared without a `repr` attribute."##,
21771        default_severity: Severity::Allow,
21772        warn_since: None,
21773        deny_since: None,
21774    },
21775    Lint {
21776        label: "clippy::trait_duplication_in_bounds",
21777        description: r##"Checks for cases where generics or trait objects are being used and multiple
21778syntax specifications for trait bounds are used simultaneously."##,
21779        default_severity: Severity::Allow,
21780        warn_since: None,
21781        deny_since: None,
21782    },
21783    Lint {
21784        label: "clippy::transmute_bytes_to_str",
21785        description: r##"Checks for transmutes from a `&[u8]` to a `&str`."##,
21786        default_severity: Severity::Allow,
21787        warn_since: None,
21788        deny_since: None,
21789    },
21790    Lint {
21791        label: "clippy::transmute_float_to_int",
21792        description: r##"Checks for transmutes from a float to an integer."##,
21793        default_severity: Severity::Allow,
21794        warn_since: None,
21795        deny_since: None,
21796    },
21797    Lint {
21798        label: "clippy::transmute_int_to_bool",
21799        description: r##"Checks for transmutes from an integer to a `bool`."##,
21800        default_severity: Severity::Allow,
21801        warn_since: None,
21802        deny_since: None,
21803    },
21804    Lint {
21805        label: "clippy::transmute_int_to_char",
21806        description: r##"Checks for transmutes from an integer to a `char`."##,
21807        default_severity: Severity::Allow,
21808        warn_since: None,
21809        deny_since: None,
21810    },
21811    Lint {
21812        label: "clippy::transmute_int_to_float",
21813        description: r##"Checks for transmutes from an integer to a float."##,
21814        default_severity: Severity::Allow,
21815        warn_since: None,
21816        deny_since: None,
21817    },
21818    Lint {
21819        label: "clippy::transmute_int_to_non_zero",
21820        description: r##"Checks for transmutes from `T` to `NonZero<T>`, and suggests the `new_unchecked`
21821method instead."##,
21822        default_severity: Severity::Allow,
21823        warn_since: None,
21824        deny_since: None,
21825    },
21826    Lint {
21827        label: "clippy::transmute_null_to_fn",
21828        description: r##"Checks for null function pointer creation through transmute."##,
21829        default_severity: Severity::Allow,
21830        warn_since: None,
21831        deny_since: None,
21832    },
21833    Lint {
21834        label: "clippy::transmute_num_to_bytes",
21835        description: r##"Checks for transmutes from a number to an array of `u8`"##,
21836        default_severity: Severity::Allow,
21837        warn_since: None,
21838        deny_since: None,
21839    },
21840    Lint {
21841        label: "clippy::transmute_ptr_to_ptr",
21842        description: r##"Checks for transmutes from a pointer to a pointer, or
21843from a reference to a reference."##,
21844        default_severity: Severity::Allow,
21845        warn_since: None,
21846        deny_since: None,
21847    },
21848    Lint {
21849        label: "clippy::transmute_ptr_to_ref",
21850        description: r##"Checks for transmutes from a pointer to a reference."##,
21851        default_severity: Severity::Allow,
21852        warn_since: None,
21853        deny_since: None,
21854    },
21855    Lint {
21856        label: "clippy::transmute_undefined_repr",
21857        description: r##"Checks for transmutes between types which do not have a representation defined relative to
21858each other."##,
21859        default_severity: Severity::Allow,
21860        warn_since: None,
21861        deny_since: None,
21862    },
21863    Lint {
21864        label: "clippy::transmutes_expressible_as_ptr_casts",
21865        description: r##"Checks for transmutes that could be a pointer cast."##,
21866        default_severity: Severity::Allow,
21867        warn_since: None,
21868        deny_since: None,
21869    },
21870    Lint {
21871        label: "clippy::transmuting_null",
21872        description: r##"Checks for transmute calls which would receive a null pointer."##,
21873        default_severity: Severity::Allow,
21874        warn_since: None,
21875        deny_since: None,
21876    },
21877    Lint {
21878        label: "clippy::trim_split_whitespace",
21879        description: r##"Warns about calling `str::trim` (or variants) before `str::split_whitespace`."##,
21880        default_severity: Severity::Allow,
21881        warn_since: None,
21882        deny_since: None,
21883    },
21884    Lint {
21885        label: "clippy::trivial_regex",
21886        description: r##"Checks for trivial [regex](https://crates.io/crates/regex)
21887creation (with `Regex::new`, `RegexBuilder::new`, or `RegexSet::new`)."##,
21888        default_severity: Severity::Allow,
21889        warn_since: None,
21890        deny_since: None,
21891    },
21892    Lint {
21893        label: "clippy::trivially_copy_pass_by_ref",
21894        description: r##"Checks for functions taking arguments by reference, where
21895the argument type is `Copy` and small enough to be more efficient to always
21896pass by value."##,
21897        default_severity: Severity::Allow,
21898        warn_since: None,
21899        deny_since: None,
21900    },
21901    Lint {
21902        label: "clippy::try_err",
21903        description: r##"Checks for usage of `Err(x)?`."##,
21904        default_severity: Severity::Allow,
21905        warn_since: None,
21906        deny_since: None,
21907    },
21908    Lint {
21909        label: "clippy::tuple_array_conversions",
21910        description: r##"Checks for tuple<=>array conversions that are not done with `.into()`."##,
21911        default_severity: Severity::Allow,
21912        warn_since: None,
21913        deny_since: None,
21914    },
21915    Lint {
21916        label: "clippy::type_complexity",
21917        description: r##"Checks for types used in structs, parameters and `let`
21918declarations above a certain complexity threshold."##,
21919        default_severity: Severity::Allow,
21920        warn_since: None,
21921        deny_since: None,
21922    },
21923    Lint {
21924        label: "clippy::type_id_on_box",
21925        description: r##"Looks for calls to `.type_id()` on a `Box<dyn _>`."##,
21926        default_severity: Severity::Allow,
21927        warn_since: None,
21928        deny_since: None,
21929    },
21930    Lint {
21931        label: "clippy::type_repetition_in_bounds",
21932        description: r##"This lint warns about unnecessary type repetitions in trait bounds"##,
21933        default_severity: Severity::Allow,
21934        warn_since: None,
21935        deny_since: None,
21936    },
21937    Lint {
21938        label: "clippy::unchecked_duration_subtraction",
21939        description: r##"Lints subtraction between an `Instant` and a `Duration`."##,
21940        default_severity: Severity::Allow,
21941        warn_since: None,
21942        deny_since: None,
21943    },
21944    Lint {
21945        label: "clippy::unconditional_recursion",
21946        description: r##"Checks that there isn't an infinite recursion in trait
21947implementations."##,
21948        default_severity: Severity::Allow,
21949        warn_since: None,
21950        deny_since: None,
21951    },
21952    Lint {
21953        label: "clippy::undocumented_unsafe_blocks",
21954        description: r##"Checks for `unsafe` blocks and impls without a `// SAFETY: ` comment
21955explaining why the unsafe operations performed inside
21956the block are safe.
21957
21958Note the comment must appear on the line(s) preceding the unsafe block
21959with nothing appearing in between. The following is ok:
21960```rust
21961foo(
21962    // SAFETY:
21963    // This is a valid safety comment
21964    unsafe { *x }
21965)
21966```
21967But neither of these are:
21968```rust
21969// SAFETY:
21970// This is not a valid safety comment
21971foo(
21972    /* SAFETY: Neither is this */ unsafe { *x },
21973);
21974```"##,
21975        default_severity: Severity::Allow,
21976        warn_since: None,
21977        deny_since: None,
21978    },
21979    Lint {
21980        label: "clippy::unicode_not_nfc",
21981        description: r##"Checks for string literals that contain Unicode in a form
21982that is not equal to its
21983[NFC-recomposition](http://www.unicode.org/reports/tr15/#Norm_Forms)."##,
21984        default_severity: Severity::Allow,
21985        warn_since: None,
21986        deny_since: None,
21987    },
21988    Lint {
21989        label: "clippy::unimplemented",
21990        description: r##"Checks for usage of `unimplemented!`."##,
21991        default_severity: Severity::Allow,
21992        warn_since: None,
21993        deny_since: None,
21994    },
21995    Lint {
21996        label: "clippy::uninhabited_references",
21997        description: r##"It detects references to uninhabited types, such as `!` and
21998warns when those are either dereferenced or returned from a function."##,
21999        default_severity: Severity::Allow,
22000        warn_since: None,
22001        deny_since: None,
22002    },
22003    Lint {
22004        label: "clippy::uninit_assumed_init",
22005        description: r##"Checks for `MaybeUninit::uninit().assume_init()`."##,
22006        default_severity: Severity::Allow,
22007        warn_since: None,
22008        deny_since: None,
22009    },
22010    Lint {
22011        label: "clippy::uninit_vec",
22012        description: r##"Checks for `set_len()` call that creates `Vec` with uninitialized elements.
22013This is commonly caused by calling `set_len()` right after allocating or
22014reserving a buffer with `new()`, `default()`, `with_capacity()`, or `reserve()`."##,
22015        default_severity: Severity::Allow,
22016        warn_since: None,
22017        deny_since: None,
22018    },
22019    Lint {
22020        label: "clippy::uninlined_format_args",
22021        description: r##"Detect when a variable is not inlined in a format string,
22022and suggests to inline it."##,
22023        default_severity: Severity::Allow,
22024        warn_since: None,
22025        deny_since: None,
22026    },
22027    Lint {
22028        label: "clippy::unit_arg",
22029        description: r##"Checks for passing a unit value as an argument to a function without using a
22030unit literal (`()`)."##,
22031        default_severity: Severity::Allow,
22032        warn_since: None,
22033        deny_since: None,
22034    },
22035    Lint {
22036        label: "clippy::unit_cmp",
22037        description: r##"Checks for comparisons to unit. This includes all binary
22038comparisons (like `==` and `<`) and asserts."##,
22039        default_severity: Severity::Allow,
22040        warn_since: None,
22041        deny_since: None,
22042    },
22043    Lint {
22044        label: "clippy::unit_hash",
22045        description: r##"Detects `().hash(_)`."##,
22046        default_severity: Severity::Allow,
22047        warn_since: None,
22048        deny_since: None,
22049    },
22050    Lint {
22051        label: "clippy::unit_return_expecting_ord",
22052        description: r##"Checks for functions that expect closures of type
22053Fn(...) -> Ord where the implemented closure returns the unit type.
22054The lint also suggests to remove the semi-colon at the end of the statement if present."##,
22055        default_severity: Severity::Allow,
22056        warn_since: None,
22057        deny_since: None,
22058    },
22059    Lint {
22060        label: "clippy::unnecessary_box_returns",
22061        description: r##"Checks for a return type containing a `Box<T>` where `T` implements `Sized`
22062
22063The lint ignores `Box<T>` where `T` is larger than `unnecessary_box_size`,
22064as returning a large `T` directly may be detrimental to performance."##,
22065        default_severity: Severity::Allow,
22066        warn_since: None,
22067        deny_since: None,
22068    },
22069    Lint {
22070        label: "clippy::unnecessary_cast",
22071        description: r##"Checks for casts to the same type, casts of int literals to integer
22072types, casts of float literals to float types, and casts between raw
22073pointers that don't change type or constness."##,
22074        default_severity: Severity::Allow,
22075        warn_since: None,
22076        deny_since: None,
22077    },
22078    Lint {
22079        label: "clippy::unnecessary_clippy_cfg",
22080        description: r##"Checks for `#[cfg_attr(clippy, allow(clippy::lint))]`
22081and suggests to replace it with `#[allow(clippy::lint)]`."##,
22082        default_severity: Severity::Allow,
22083        warn_since: None,
22084        deny_since: None,
22085    },
22086    Lint {
22087        label: "clippy::unnecessary_fallible_conversions",
22088        description: r##"Checks for calls to `TryInto::try_into` and `TryFrom::try_from` when their infallible counterparts
22089could be used."##,
22090        default_severity: Severity::Allow,
22091        warn_since: None,
22092        deny_since: None,
22093    },
22094    Lint {
22095        label: "clippy::unnecessary_filter_map",
22096        description: r##"Checks for `filter_map` calls that could be replaced by `filter` or `map`.
22097More specifically it checks if the closure provided is only performing one of the
22098filter or map operations and suggests the appropriate option."##,
22099        default_severity: Severity::Allow,
22100        warn_since: None,
22101        deny_since: None,
22102    },
22103    Lint {
22104        label: "clippy::unnecessary_find_map",
22105        description: r##"Checks for `find_map` calls that could be replaced by `find` or `map`. More
22106specifically it checks if the closure provided is only performing one of the
22107find or map operations and suggests the appropriate option."##,
22108        default_severity: Severity::Allow,
22109        warn_since: None,
22110        deny_since: None,
22111    },
22112    Lint {
22113        label: "clippy::unnecessary_first_then_check",
22114        description: r##"Checks the usage of `.first().is_some()` or `.first().is_none()` to check if a slice is
22115empty."##,
22116        default_severity: Severity::Allow,
22117        warn_since: None,
22118        deny_since: None,
22119    },
22120    Lint {
22121        label: "clippy::unnecessary_fold",
22122        description: r##"Checks for usage of `fold` when a more succinct alternative exists.
22123Specifically, this checks for `fold`s which could be replaced by `any`, `all`,
22124`sum` or `product`."##,
22125        default_severity: Severity::Allow,
22126        warn_since: None,
22127        deny_since: None,
22128    },
22129    Lint {
22130        label: "clippy::unnecessary_get_then_check",
22131        description: r##"Checks the usage of `.get().is_some()` or `.get().is_none()` on std map types."##,
22132        default_severity: Severity::Allow,
22133        warn_since: None,
22134        deny_since: None,
22135    },
22136    Lint {
22137        label: "clippy::unnecessary_join",
22138        description: r##"Checks for usage of `.collect::<Vec<String>>().join()` on iterators."##,
22139        default_severity: Severity::Allow,
22140        warn_since: None,
22141        deny_since: None,
22142    },
22143    Lint {
22144        label: "clippy::unnecessary_lazy_evaluations",
22145        description: r##"As the counterpart to `or_fun_call`, this lint looks for unnecessary
22146lazily evaluated closures on `Option` and `Result`.
22147
22148This lint suggests changing the following functions, when eager evaluation results in
22149simpler code:
22150 - `unwrap_or_else` to `unwrap_or`
22151 - `and_then` to `and`
22152 - `or_else` to `or`
22153 - `get_or_insert_with` to `get_or_insert`
22154 - `ok_or_else` to `ok_or`
22155 - `then` to `then_some` (for msrv >= 1.62.0)"##,
22156        default_severity: Severity::Allow,
22157        warn_since: None,
22158        deny_since: None,
22159    },
22160    Lint {
22161        label: "clippy::unnecessary_literal_unwrap",
22162        description: r##"Checks for `.unwrap()` related calls on `Result`s and `Option`s that are constructed."##,
22163        default_severity: Severity::Allow,
22164        warn_since: None,
22165        deny_since: None,
22166    },
22167    Lint {
22168        label: "clippy::unnecessary_map_on_constructor",
22169        description: r##"Suggests removing the use of a `map()` (or `map_err()`) method when an `Option` or `Result`
22170is being constructed."##,
22171        default_severity: Severity::Allow,
22172        warn_since: None,
22173        deny_since: None,
22174    },
22175    Lint {
22176        label: "clippy::unnecessary_min_or_max",
22177        description: r##"Checks for unnecessary calls to `min()` or `max()` in the following cases
22178- Either both side is constant
22179- One side is clearly larger than the other, like i32::MIN and an i32 variable"##,
22180        default_severity: Severity::Allow,
22181        warn_since: None,
22182        deny_since: None,
22183    },
22184    Lint {
22185        label: "clippy::unnecessary_mut_passed",
22186        description: r##"Detects passing a mutable reference to a function that only
22187requires an immutable reference."##,
22188        default_severity: Severity::Allow,
22189        warn_since: None,
22190        deny_since: None,
22191    },
22192    Lint {
22193        label: "clippy::unnecessary_operation",
22194        description: r##"Checks for expression statements that can be reduced to a
22195sub-expression."##,
22196        default_severity: Severity::Allow,
22197        warn_since: None,
22198        deny_since: None,
22199    },
22200    Lint {
22201        label: "clippy::unnecessary_owned_empty_strings",
22202        description: r##"Detects cases of owned empty strings being passed as an argument to a function expecting `&str`"##,
22203        default_severity: Severity::Allow,
22204        warn_since: None,
22205        deny_since: None,
22206    },
22207    Lint {
22208        label: "clippy::unnecessary_result_map_or_else",
22209        description: r##"Checks for usage of `.map_or_else()` map closure for `Result` type."##,
22210        default_severity: Severity::Allow,
22211        warn_since: None,
22212        deny_since: None,
22213    },
22214    Lint {
22215        label: "clippy::unnecessary_safety_comment",
22216        description: r##"Checks for `// SAFETY: ` comments on safe code."##,
22217        default_severity: Severity::Allow,
22218        warn_since: None,
22219        deny_since: None,
22220    },
22221    Lint {
22222        label: "clippy::unnecessary_safety_doc",
22223        description: r##"Checks for the doc comments of publicly visible
22224safe functions and traits and warns if there is a `# Safety` section."##,
22225        default_severity: Severity::Allow,
22226        warn_since: None,
22227        deny_since: None,
22228    },
22229    Lint {
22230        label: "clippy::unnecessary_self_imports",
22231        description: r##"Checks for imports ending in `::{self}`."##,
22232        default_severity: Severity::Allow,
22233        warn_since: None,
22234        deny_since: None,
22235    },
22236    Lint {
22237        label: "clippy::unnecessary_sort_by",
22238        description: r##"Checks for usage of `Vec::sort_by` passing in a closure
22239which compares the two arguments, either directly or indirectly."##,
22240        default_severity: Severity::Allow,
22241        warn_since: None,
22242        deny_since: None,
22243    },
22244    Lint {
22245        label: "clippy::unnecessary_struct_initialization",
22246        description: r##"Checks for initialization of an identical `struct` from another instance
22247of the type, either by copying a base without setting any field or by
22248moving all fields individually."##,
22249        default_severity: Severity::Allow,
22250        warn_since: None,
22251        deny_since: None,
22252    },
22253    Lint {
22254        label: "clippy::unnecessary_to_owned",
22255        description: r##"Checks for unnecessary calls to [`ToOwned::to_owned`](https://doc.rust-lang.org/std/borrow/trait.ToOwned.html#tymethod.to_owned)
22256and other `to_owned`-like functions."##,
22257        default_severity: Severity::Allow,
22258        warn_since: None,
22259        deny_since: None,
22260    },
22261    Lint {
22262        label: "clippy::unnecessary_unwrap",
22263        description: r##"Checks for calls of `unwrap[_err]()` that cannot fail."##,
22264        default_severity: Severity::Allow,
22265        warn_since: None,
22266        deny_since: None,
22267    },
22268    Lint {
22269        label: "clippy::unnecessary_wraps",
22270        description: r##"Checks for private functions that only return `Ok` or `Some`."##,
22271        default_severity: Severity::Allow,
22272        warn_since: None,
22273        deny_since: None,
22274    },
22275    Lint {
22276        label: "clippy::unneeded_field_pattern",
22277        description: r##"Checks for structure field patterns bound to wildcards."##,
22278        default_severity: Severity::Allow,
22279        warn_since: None,
22280        deny_since: None,
22281    },
22282    Lint {
22283        label: "clippy::unneeded_wildcard_pattern",
22284        description: r##"Checks for tuple patterns with a wildcard
22285pattern (`_`) is next to a rest pattern (`..`).
22286
22287_NOTE_: While `_, ..` means there is at least one element left, `..`
22288means there are 0 or more elements left. This can make a difference
22289when refactoring, but shouldn't result in errors in the refactored code,
22290since the wildcard pattern isn't used anyway."##,
22291        default_severity: Severity::Allow,
22292        warn_since: None,
22293        deny_since: None,
22294    },
22295    Lint {
22296        label: "clippy::unnested_or_patterns",
22297        description: r##"Checks for unnested or-patterns, e.g., `Some(0) | Some(2)` and
22298suggests replacing the pattern with a nested one, `Some(0 | 2)`.
22299
22300Another way to think of this is that it rewrites patterns in
22301*disjunctive normal form (DNF)* into *conjunctive normal form (CNF)*."##,
22302        default_severity: Severity::Allow,
22303        warn_since: None,
22304        deny_since: None,
22305    },
22306    Lint {
22307        label: "clippy::unreachable",
22308        description: r##"Checks for usage of `unreachable!`."##,
22309        default_severity: Severity::Allow,
22310        warn_since: None,
22311        deny_since: None,
22312    },
22313    Lint {
22314        label: "clippy::unreadable_literal",
22315        description: r##"Warns if a long integral or floating-point constant does
22316not contain underscores."##,
22317        default_severity: Severity::Allow,
22318        warn_since: None,
22319        deny_since: None,
22320    },
22321    Lint {
22322        label: "clippy::unsafe_derive_deserialize",
22323        description: r##"Checks for deriving `serde::Deserialize` on a type that
22324has methods using `unsafe`."##,
22325        default_severity: Severity::Allow,
22326        warn_since: None,
22327        deny_since: None,
22328    },
22329    Lint {
22330        label: "clippy::unsafe_removed_from_name",
22331        description: r##"Checks for imports that remove unsafe from an item's
22332name."##,
22333        default_severity: Severity::Allow,
22334        warn_since: None,
22335        deny_since: None,
22336    },
22337    Lint {
22338        label: "clippy::unsafe_vector_initialization",
22339        description: r##"Nothing. This lint has been deprecated"##,
22340        default_severity: Severity::Allow,
22341        warn_since: None,
22342        deny_since: None,
22343    },
22344    Lint {
22345        label: "clippy::unseparated_literal_suffix",
22346        description: r##"Warns if literal suffixes are not separated by an
22347underscore.
22348To enforce unseparated literal suffix style,
22349see the `separated_literal_suffix` lint."##,
22350        default_severity: Severity::Allow,
22351        warn_since: None,
22352        deny_since: None,
22353    },
22354    Lint {
22355        label: "clippy::unsound_collection_transmute",
22356        description: r##"Checks for transmutes between collections whose
22357types have different ABI, size or alignment."##,
22358        default_severity: Severity::Allow,
22359        warn_since: None,
22360        deny_since: None,
22361    },
22362    Lint {
22363        label: "clippy::unstable_as_mut_slice",
22364        description: r##"Nothing. This lint has been deprecated"##,
22365        default_severity: Severity::Allow,
22366        warn_since: None,
22367        deny_since: None,
22368    },
22369    Lint {
22370        label: "clippy::unstable_as_slice",
22371        description: r##"Nothing. This lint has been deprecated"##,
22372        default_severity: Severity::Allow,
22373        warn_since: None,
22374        deny_since: None,
22375    },
22376    Lint {
22377        label: "clippy::unused_async",
22378        description: r##"Checks for functions that are declared `async` but have no `.await`s inside of them."##,
22379        default_severity: Severity::Allow,
22380        warn_since: None,
22381        deny_since: None,
22382    },
22383    Lint {
22384        label: "clippy::unused_collect",
22385        description: r##"Nothing. This lint has been deprecated"##,
22386        default_severity: Severity::Allow,
22387        warn_since: None,
22388        deny_since: None,
22389    },
22390    Lint {
22391        label: "clippy::unused_enumerate_index",
22392        description: r##"Checks for uses of the `enumerate` method where the index is unused (`_`)"##,
22393        default_severity: Severity::Allow,
22394        warn_since: None,
22395        deny_since: None,
22396    },
22397    Lint {
22398        label: "clippy::unused_format_specs",
22399        description: r##"Detects [formatting parameters] that have no effect on the output of
22400`format!()`, `println!()` or similar macros."##,
22401        default_severity: Severity::Allow,
22402        warn_since: None,
22403        deny_since: None,
22404    },
22405    Lint {
22406        label: "clippy::unused_io_amount",
22407        description: r##"Checks for unused written/read amount."##,
22408        default_severity: Severity::Allow,
22409        warn_since: None,
22410        deny_since: None,
22411    },
22412    Lint {
22413        label: "clippy::unused_peekable",
22414        description: r##"Checks for the creation of a `peekable` iterator that is never `.peek()`ed"##,
22415        default_severity: Severity::Allow,
22416        warn_since: None,
22417        deny_since: None,
22418    },
22419    Lint {
22420        label: "clippy::unused_result_ok",
22421        description: r##"Checks for calls to `Result::ok()` without using the returned `Option`."##,
22422        default_severity: Severity::Allow,
22423        warn_since: None,
22424        deny_since: None,
22425    },
22426    Lint {
22427        label: "clippy::unused_rounding",
22428        description: r##"Detects cases where a whole-number literal float is being rounded, using
22429the `floor`, `ceil`, or `round` methods."##,
22430        default_severity: Severity::Allow,
22431        warn_since: None,
22432        deny_since: None,
22433    },
22434    Lint {
22435        label: "clippy::unused_self",
22436        description: r##"Checks methods that contain a `self` argument but don't use it"##,
22437        default_severity: Severity::Allow,
22438        warn_since: None,
22439        deny_since: None,
22440    },
22441    Lint {
22442        label: "clippy::unused_trait_names",
22443        description: r##"Checks for `use Trait` where the Trait is only used for its methods and not referenced by a path directly."##,
22444        default_severity: Severity::Allow,
22445        warn_since: None,
22446        deny_since: None,
22447    },
22448    Lint {
22449        label: "clippy::unused_unit",
22450        description: r##"Checks for unit (`()`) expressions that can be removed."##,
22451        default_severity: Severity::Allow,
22452        warn_since: None,
22453        deny_since: None,
22454    },
22455    Lint {
22456        label: "clippy::unusual_byte_groupings",
22457        description: r##"Warns if hexadecimal or binary literals are not grouped
22458by nibble or byte."##,
22459        default_severity: Severity::Allow,
22460        warn_since: None,
22461        deny_since: None,
22462    },
22463    Lint {
22464        label: "clippy::unwrap_in_result",
22465        description: r##"Checks for functions of type `Result` that contain `expect()` or `unwrap()`"##,
22466        default_severity: Severity::Allow,
22467        warn_since: None,
22468        deny_since: None,
22469    },
22470    Lint {
22471        label: "clippy::unwrap_or_default",
22472        description: r##"Checks for usages of the following functions with an argument that constructs a default value
22473(e.g., `Default::default` or `String::new`):
22474- `unwrap_or`
22475- `unwrap_or_else`
22476- `or_insert`
22477- `or_insert_with`"##,
22478        default_severity: Severity::Allow,
22479        warn_since: None,
22480        deny_since: None,
22481    },
22482    Lint {
22483        label: "clippy::unwrap_used",
22484        description: r##"Checks for `.unwrap()` or `.unwrap_err()` calls on `Result`s and `.unwrap()` call on `Option`s."##,
22485        default_severity: Severity::Allow,
22486        warn_since: None,
22487        deny_since: None,
22488    },
22489    Lint {
22490        label: "clippy::upper_case_acronyms",
22491        description: r##"Checks for fully capitalized names and optionally names containing a capitalized acronym."##,
22492        default_severity: Severity::Allow,
22493        warn_since: None,
22494        deny_since: None,
22495    },
22496    Lint {
22497        label: "clippy::use_debug",
22498        description: r##"Checks for usage of `Debug` formatting. The purpose of this
22499lint is to catch debugging remnants."##,
22500        default_severity: Severity::Allow,
22501        warn_since: None,
22502        deny_since: None,
22503    },
22504    Lint {
22505        label: "clippy::use_self",
22506        description: r##"Checks for unnecessary repetition of structure name when a
22507replacement with `Self` is applicable."##,
22508        default_severity: Severity::Allow,
22509        warn_since: None,
22510        deny_since: None,
22511    },
22512    Lint {
22513        label: "clippy::used_underscore_binding",
22514        description: r##"Checks for the use of bindings with a single leading
22515underscore."##,
22516        default_severity: Severity::Allow,
22517        warn_since: None,
22518        deny_since: None,
22519    },
22520    Lint {
22521        label: "clippy::used_underscore_items",
22522        description: r##"Checks for the use of item with a single leading
22523underscore."##,
22524        default_severity: Severity::Allow,
22525        warn_since: None,
22526        deny_since: None,
22527    },
22528    Lint {
22529        label: "clippy::useless_asref",
22530        description: r##"Checks for usage of `.as_ref()` or `.as_mut()` where the
22531types before and after the call are the same."##,
22532        default_severity: Severity::Allow,
22533        warn_since: None,
22534        deny_since: None,
22535    },
22536    Lint {
22537        label: "clippy::useless_attribute",
22538        description: r##"Checks for `extern crate` and `use` items annotated with
22539lint attributes.
22540
22541This lint permits lint attributes for lints emitted on the items themself.
22542For `use` items these lints are:
22543* ambiguous_glob_reexports
22544* dead_code
22545* deprecated
22546* hidden_glob_reexports
22547* unreachable_pub
22548* unused
22549* unused_braces
22550* unused_import_braces
22551* clippy::disallowed_types
22552* clippy::enum_glob_use
22553* clippy::macro_use_imports
22554* clippy::module_name_repetitions
22555* clippy::redundant_pub_crate
22556* clippy::single_component_path_imports
22557* clippy::unsafe_removed_from_name
22558* clippy::wildcard_imports
22559
22560For `extern crate` items these lints are:
22561* `unused_imports` on items with `#[macro_use]`"##,
22562        default_severity: Severity::Allow,
22563        warn_since: None,
22564        deny_since: None,
22565    },
22566    Lint {
22567        label: "clippy::useless_conversion",
22568        description: r##"Checks for `Into`, `TryInto`, `From`, `TryFrom`, or `IntoIter` calls
22569which uselessly convert to the same type."##,
22570        default_severity: Severity::Allow,
22571        warn_since: None,
22572        deny_since: None,
22573    },
22574    Lint {
22575        label: "clippy::useless_format",
22576        description: r##"Checks for the use of `format!(string literal with no
22577argument)` and `format!({}, foo)` where `foo` is a string."##,
22578        default_severity: Severity::Allow,
22579        warn_since: None,
22580        deny_since: None,
22581    },
22582    Lint {
22583        label: "clippy::useless_let_if_seq",
22584        description: r##"Checks for variable declarations immediately followed by a
22585conditional affectation."##,
22586        default_severity: Severity::Allow,
22587        warn_since: None,
22588        deny_since: None,
22589    },
22590    Lint {
22591        label: "clippy::useless_transmute",
22592        description: r##"Checks for transmutes to the original type of the object
22593and transmutes that could be a cast."##,
22594        default_severity: Severity::Allow,
22595        warn_since: None,
22596        deny_since: None,
22597    },
22598    Lint {
22599        label: "clippy::useless_vec",
22600        description: r##"Checks for usage of `vec![..]` when using `[..]` would
22601be possible."##,
22602        default_severity: Severity::Allow,
22603        warn_since: None,
22604        deny_since: None,
22605    },
22606    Lint {
22607        label: "clippy::vec_box",
22608        description: r##"Checks for usage of `Vec<Box<T>>` where T: Sized anywhere in the code.
22609Check the [Box documentation](https://doc.rust-lang.org/std/boxed/index.html) for more information."##,
22610        default_severity: Severity::Allow,
22611        warn_since: None,
22612        deny_since: None,
22613    },
22614    Lint {
22615        label: "clippy::vec_init_then_push",
22616        description: r##"Checks for calls to `push` immediately after creating a new `Vec`.
22617
22618If the `Vec` is created using `with_capacity` this will only lint if the capacity is a
22619constant and the number of pushes is greater than or equal to the initial capacity.
22620
22621If the `Vec` is extended after the initial sequence of pushes and it was default initialized
22622then this will only lint after there were at least four pushes. This number may change in
22623the future."##,
22624        default_severity: Severity::Allow,
22625        warn_since: None,
22626        deny_since: None,
22627    },
22628    Lint {
22629        label: "clippy::vec_resize_to_zero",
22630        description: r##"Finds occurrences of `Vec::resize(0, an_int)`"##,
22631        default_severity: Severity::Allow,
22632        warn_since: None,
22633        deny_since: None,
22634    },
22635    Lint {
22636        label: "clippy::verbose_bit_mask",
22637        description: r##"Checks for bit masks that can be replaced by a call
22638to `trailing_zeros`"##,
22639        default_severity: Severity::Allow,
22640        warn_since: None,
22641        deny_since: None,
22642    },
22643    Lint {
22644        label: "clippy::verbose_file_reads",
22645        description: r##"Checks for usage of File::read_to_end and File::read_to_string."##,
22646        default_severity: Severity::Allow,
22647        warn_since: None,
22648        deny_since: None,
22649    },
22650    Lint {
22651        label: "clippy::waker_clone_wake",
22652        description: r##"Checks for usage of `waker.clone().wake()`"##,
22653        default_severity: Severity::Allow,
22654        warn_since: None,
22655        deny_since: None,
22656    },
22657    Lint {
22658        label: "clippy::while_float",
22659        description: r##"Checks for while loops comparing floating point values."##,
22660        default_severity: Severity::Allow,
22661        warn_since: None,
22662        deny_since: None,
22663    },
22664    Lint {
22665        label: "clippy::while_immutable_condition",
22666        description: r##"Checks whether variables used within while loop condition
22667can be (and are) mutated in the body."##,
22668        default_severity: Severity::Allow,
22669        warn_since: None,
22670        deny_since: None,
22671    },
22672    Lint {
22673        label: "clippy::while_let_loop",
22674        description: r##"Detects `loop + match` combinations that are easier
22675written as a `while let` loop."##,
22676        default_severity: Severity::Allow,
22677        warn_since: None,
22678        deny_since: None,
22679    },
22680    Lint {
22681        label: "clippy::while_let_on_iterator",
22682        description: r##"Checks for `while let` expressions on iterators."##,
22683        default_severity: Severity::Allow,
22684        warn_since: None,
22685        deny_since: None,
22686    },
22687    Lint {
22688        label: "clippy::wildcard_dependencies",
22689        description: r##"Checks for wildcard dependencies in the `Cargo.toml`."##,
22690        default_severity: Severity::Allow,
22691        warn_since: None,
22692        deny_since: None,
22693    },
22694    Lint {
22695        label: "clippy::wildcard_enum_match_arm",
22696        description: r##"Checks for wildcard enum matches using `_`."##,
22697        default_severity: Severity::Allow,
22698        warn_since: None,
22699        deny_since: None,
22700    },
22701    Lint {
22702        label: "clippy::wildcard_imports",
22703        description: r##"Checks for wildcard imports `use _::*`."##,
22704        default_severity: Severity::Allow,
22705        warn_since: None,
22706        deny_since: None,
22707    },
22708    Lint {
22709        label: "clippy::wildcard_in_or_patterns",
22710        description: r##"Checks for wildcard pattern used with others patterns in same match arm."##,
22711        default_severity: Severity::Allow,
22712        warn_since: None,
22713        deny_since: None,
22714    },
22715    Lint {
22716        label: "clippy::write_literal",
22717        description: r##"This lint warns about the use of literals as `write!`/`writeln!` args."##,
22718        default_severity: Severity::Allow,
22719        warn_since: None,
22720        deny_since: None,
22721    },
22722    Lint {
22723        label: "clippy::write_with_newline",
22724        description: r##"This lint warns when you use `write!()` with a format
22725string that
22726ends in a newline."##,
22727        default_severity: Severity::Allow,
22728        warn_since: None,
22729        deny_since: None,
22730    },
22731    Lint {
22732        label: "clippy::writeln_empty_string",
22733        description: r##"This lint warns when you use `writeln!(buf, )` to
22734print a newline."##,
22735        default_severity: Severity::Allow,
22736        warn_since: None,
22737        deny_since: None,
22738    },
22739    Lint {
22740        label: "clippy::wrong_pub_self_convention",
22741        description: r##"Nothing. This lint has been deprecated"##,
22742        default_severity: Severity::Allow,
22743        warn_since: None,
22744        deny_since: None,
22745    },
22746    Lint {
22747        label: "clippy::wrong_self_convention",
22748        description: r##"Checks for methods with certain name prefixes or suffixes, and which
22749do not adhere to standard conventions regarding how `self` is taken.
22750The actual rules are:
22751
22752|Prefix |Postfix     |`self` taken                   | `self` type  |
22753|-------|------------|-------------------------------|--------------|
22754|`as_`  | none       |`&self` or `&mut self`         | any          |
22755|`from_`| none       | none                          | any          |
22756|`into_`| none       |`self`                         | any          |
22757|`is_`  | none       |`&mut self` or `&self` or none | any          |
22758|`to_`  | `_mut`     |`&mut self`                    | any          |
22759|`to_`  | not `_mut` |`self`                         | `Copy`       |
22760|`to_`  | not `_mut` |`&self`                        | not `Copy`   |
22761
22762Note: Clippy doesn't trigger methods with `to_` prefix in:
22763- Traits definition.
22764Clippy can not tell if a type that implements a trait is `Copy` or not.
22765- Traits implementation, when `&self` is taken.
22766The method signature is controlled by the trait and often `&self` is required for all types that implement the trait
22767(see e.g. the `std::string::ToString` trait).
22768
22769Clippy allows `Pin<&Self>` and `Pin<&mut Self>` if `&self` and `&mut self` is required.
22770
22771Please find more info here:
22772https://rust-lang.github.io/api-guidelines/naming.html#ad-hoc-conversions-follow-as_-to_-into_-conventions-c-conv"##,
22773        default_severity: Severity::Allow,
22774        warn_since: None,
22775        deny_since: None,
22776    },
22777    Lint {
22778        label: "clippy::wrong_transmute",
22779        description: r##"Checks for transmutes that can't ever be correct on any
22780architecture."##,
22781        default_severity: Severity::Allow,
22782        warn_since: None,
22783        deny_since: None,
22784    },
22785    Lint {
22786        label: "clippy::zero_divided_by_zero",
22787        description: r##"Checks for `0.0 / 0.0`."##,
22788        default_severity: Severity::Allow,
22789        warn_since: None,
22790        deny_since: None,
22791    },
22792    Lint {
22793        label: "clippy::zero_prefixed_literal",
22794        description: r##"Warns if an integral constant literal starts with `0`."##,
22795        default_severity: Severity::Allow,
22796        warn_since: None,
22797        deny_since: None,
22798    },
22799    Lint {
22800        label: "clippy::zero_ptr",
22801        description: r##"Catch casts from `0` to some pointer type"##,
22802        default_severity: Severity::Allow,
22803        warn_since: None,
22804        deny_since: None,
22805    },
22806    Lint {
22807        label: "clippy::zero_repeat_side_effects",
22808        description: r##"Checks for array or vec initializations which call a function or method,
22809but which have a repeat count of zero."##,
22810        default_severity: Severity::Allow,
22811        warn_since: None,
22812        deny_since: None,
22813    },
22814    Lint {
22815        label: "clippy::zero_sized_map_values",
22816        description: r##"Checks for maps with zero-sized value types anywhere in the code."##,
22817        default_severity: Severity::Allow,
22818        warn_since: None,
22819        deny_since: None,
22820    },
22821    Lint {
22822        label: "clippy::zombie_processes",
22823        description: r##"Looks for code that spawns a process but never calls `wait()` on the child."##,
22824        default_severity: Severity::Allow,
22825        warn_since: None,
22826        deny_since: None,
22827    },
22828    Lint {
22829        label: "clippy::zst_offset",
22830        description: r##"Checks for `offset(_)`, `wrapping_`{`add`, `sub`}, etc. on raw pointers to
22831zero-sized types"##,
22832        default_severity: Severity::Allow,
22833        warn_since: None,
22834        deny_since: None,
22835    },
22836];
22837pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
22838    LintGroup {
22839        lint: Lint {
22840            label: "clippy::cargo",
22841            description: r##"lint group for: clippy::cargo_common_metadata, clippy::multiple_crate_versions, clippy::negative_feature_names, clippy::redundant_feature_names, clippy::wildcard_dependencies"##,
22842            default_severity: Severity::Allow,
22843            warn_since: None,
22844            deny_since: None,
22845        },
22846        children: &[
22847            "clippy::cargo_common_metadata",
22848            "clippy::multiple_crate_versions",
22849            "clippy::negative_feature_names",
22850            "clippy::redundant_feature_names",
22851            "clippy::wildcard_dependencies",
22852        ],
22853    },
22854    LintGroup {
22855        lint: Lint {
22856            label: "clippy::complexity",
22857            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"##,
22858            default_severity: Severity::Allow,
22859            warn_since: None,
22860            deny_since: None,
22861        },
22862        children: &[
22863            "clippy::bind_instead_of_map",
22864            "clippy::bool_comparison",
22865            "clippy::borrow_deref_ref",
22866            "clippy::borrowed_box",
22867            "clippy::bytes_count_to_len",
22868            "clippy::char_lit_as_u8",
22869            "clippy::clone_on_copy",
22870            "clippy::crosspointer_transmute",
22871            "clippy::default_constructed_unit_structs",
22872            "clippy::deprecated_cfg_attr",
22873            "clippy::deref_addrof",
22874            "clippy::derivable_impls",
22875            "clippy::diverging_sub_expression",
22876            "clippy::double_comparisons",
22877            "clippy::double_parens",
22878            "clippy::duration_subsec",
22879            "clippy::excessive_nesting",
22880            "clippy::explicit_auto_deref",
22881            "clippy::explicit_counter_loop",
22882            "clippy::explicit_write",
22883            "clippy::extra_unused_lifetimes",
22884            "clippy::extra_unused_type_parameters",
22885            "clippy::filter_map_identity",
22886            "clippy::filter_next",
22887            "clippy::flat_map_identity",
22888            "clippy::get_last_with_len",
22889            "clippy::identity_op",
22890            "clippy::implied_bounds_in_impls",
22891            "clippy::inspect_for_each",
22892            "clippy::int_plus_one",
22893            "clippy::iter_count",
22894            "clippy::iter_kv_map",
22895            "clippy::let_with_type_underscore",
22896            "clippy::manual_c_str_literals",
22897            "clippy::manual_clamp",
22898            "clippy::manual_div_ceil",
22899            "clippy::manual_filter",
22900            "clippy::manual_filter_map",
22901            "clippy::manual_find",
22902            "clippy::manual_find_map",
22903            "clippy::manual_flatten",
22904            "clippy::manual_hash_one",
22905            "clippy::manual_inspect",
22906            "clippy::manual_is_power_of_two",
22907            "clippy::manual_main_separator_str",
22908            "clippy::manual_range_patterns",
22909            "clippy::manual_rem_euclid",
22910            "clippy::manual_slice_size_calculation",
22911            "clippy::manual_split_once",
22912            "clippy::manual_strip",
22913            "clippy::manual_swap",
22914            "clippy::manual_unwrap_or",
22915            "clippy::map_flatten",
22916            "clippy::map_identity",
22917            "clippy::match_as_ref",
22918            "clippy::match_single_binding",
22919            "clippy::needless_arbitrary_self_type",
22920            "clippy::needless_bool",
22921            "clippy::needless_bool_assign",
22922            "clippy::needless_borrowed_reference",
22923            "clippy::needless_if",
22924            "clippy::needless_lifetimes",
22925            "clippy::needless_match",
22926            "clippy::needless_option_as_deref",
22927            "clippy::needless_option_take",
22928            "clippy::needless_question_mark",
22929            "clippy::needless_splitn",
22930            "clippy::needless_update",
22931            "clippy::neg_cmp_op_on_partial_ord",
22932            "clippy::no_effect",
22933            "clippy::nonminimal_bool",
22934            "clippy::only_used_in_recursion",
22935            "clippy::option_as_ref_deref",
22936            "clippy::option_filter_map",
22937            "clippy::option_map_unit_fn",
22938            "clippy::or_then_unwrap",
22939            "clippy::partialeq_ne_impl",
22940            "clippy::precedence",
22941            "clippy::ptr_offset_with_cast",
22942            "clippy::range_zip_with_len",
22943            "clippy::redundant_as_str",
22944            "clippy::redundant_async_block",
22945            "clippy::redundant_at_rest_pattern",
22946            "clippy::redundant_closure_call",
22947            "clippy::redundant_guards",
22948            "clippy::redundant_slicing",
22949            "clippy::repeat_once",
22950            "clippy::reserve_after_initialization",
22951            "clippy::result_filter_map",
22952            "clippy::result_map_unit_fn",
22953            "clippy::search_is_some",
22954            "clippy::seek_from_current",
22955            "clippy::seek_to_start_instead_of_rewind",
22956            "clippy::short_circuit_statement",
22957            "clippy::single_element_loop",
22958            "clippy::skip_while_next",
22959            "clippy::string_from_utf8_as_bytes",
22960            "clippy::strlen_on_c_strings",
22961            "clippy::temporary_assignment",
22962            "clippy::too_many_arguments",
22963            "clippy::transmute_bytes_to_str",
22964            "clippy::transmute_float_to_int",
22965            "clippy::transmute_int_to_bool",
22966            "clippy::transmute_int_to_char",
22967            "clippy::transmute_int_to_float",
22968            "clippy::transmute_int_to_non_zero",
22969            "clippy::transmute_num_to_bytes",
22970            "clippy::transmute_ptr_to_ref",
22971            "clippy::transmutes_expressible_as_ptr_casts",
22972            "clippy::type_complexity",
22973            "clippy::unit_arg",
22974            "clippy::unnecessary_cast",
22975            "clippy::unnecessary_filter_map",
22976            "clippy::unnecessary_find_map",
22977            "clippy::unnecessary_first_then_check",
22978            "clippy::unnecessary_literal_unwrap",
22979            "clippy::unnecessary_map_on_constructor",
22980            "clippy::unnecessary_min_or_max",
22981            "clippy::unnecessary_operation",
22982            "clippy::unnecessary_sort_by",
22983            "clippy::unnecessary_unwrap",
22984            "clippy::unneeded_wildcard_pattern",
22985            "clippy::unused_format_specs",
22986            "clippy::useless_asref",
22987            "clippy::useless_conversion",
22988            "clippy::useless_format",
22989            "clippy::useless_transmute",
22990            "clippy::vec_box",
22991            "clippy::while_let_loop",
22992            "clippy::wildcard_in_or_patterns",
22993            "clippy::zero_divided_by_zero",
22994            "clippy::zero_prefixed_literal",
22995        ],
22996    },
22997    LintGroup {
22998        lint: Lint {
22999            label: "clippy::correctness",
23000            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"##,
23001            default_severity: Severity::Allow,
23002            warn_since: None,
23003            deny_since: None,
23004        },
23005        children: &[
23006            "clippy::absurd_extreme_comparisons",
23007            "clippy::almost_swapped",
23008            "clippy::approx_constant",
23009            "clippy::async_yields_async",
23010            "clippy::bad_bit_mask",
23011            "clippy::cast_slice_different_sizes",
23012            "clippy::deprecated_semver",
23013            "clippy::derive_ord_xor_partial_ord",
23014            "clippy::derived_hash_with_manual_eq",
23015            "clippy::eager_transmute",
23016            "clippy::enum_clike_unportable_variant",
23017            "clippy::eq_op",
23018            "clippy::erasing_op",
23019            "clippy::fn_address_comparisons",
23020            "clippy::if_let_mutex",
23021            "clippy::ifs_same_cond",
23022            "clippy::impl_hash_borrow_with_str_and_bytes",
23023            "clippy::impossible_comparisons",
23024            "clippy::ineffective_bit_mask",
23025            "clippy::infinite_iter",
23026            "clippy::inherent_to_string_shadow_display",
23027            "clippy::inline_fn_without_body",
23028            "clippy::invalid_null_ptr_usage",
23029            "clippy::invalid_regex",
23030            "clippy::inverted_saturating_sub",
23031            "clippy::invisible_characters",
23032            "clippy::iter_next_loop",
23033            "clippy::iter_skip_zero",
23034            "clippy::iterator_step_by_zero",
23035            "clippy::let_underscore_lock",
23036            "clippy::lint_groups_priority",
23037            "clippy::match_str_case_mismatch",
23038            "clippy::mem_replace_with_uninit",
23039            "clippy::min_max",
23040            "clippy::mistyped_literal_suffixes",
23041            "clippy::modulo_one",
23042            "clippy::mut_from_ref",
23043            "clippy::never_loop",
23044            "clippy::non_octal_unix_permissions",
23045            "clippy::nonsensical_open_options",
23046            "clippy::not_unsafe_ptr_arg_deref",
23047            "clippy::option_env_unwrap",
23048            "clippy::out_of_bounds_indexing",
23049            "clippy::overly_complex_bool_expr",
23050            "clippy::panicking_overflow_checks",
23051            "clippy::panicking_unwrap",
23052            "clippy::possible_missing_comma",
23053            "clippy::read_line_without_trim",
23054            "clippy::recursive_format_impl",
23055            "clippy::redundant_comparisons",
23056            "clippy::redundant_locals",
23057            "clippy::reversed_empty_ranges",
23058            "clippy::self_assignment",
23059            "clippy::serde_api_misuse",
23060            "clippy::size_of_in_element_count",
23061            "clippy::suspicious_splitn",
23062            "clippy::transmute_null_to_fn",
23063            "clippy::transmuting_null",
23064            "clippy::uninit_assumed_init",
23065            "clippy::uninit_vec",
23066            "clippy::unit_cmp",
23067            "clippy::unit_hash",
23068            "clippy::unit_return_expecting_ord",
23069            "clippy::unsound_collection_transmute",
23070            "clippy::unused_io_amount",
23071            "clippy::useless_attribute",
23072            "clippy::vec_resize_to_zero",
23073            "clippy::while_immutable_condition",
23074            "clippy::wrong_transmute",
23075            "clippy::zst_offset",
23076        ],
23077    },
23078    LintGroup {
23079        lint: Lint {
23080            label: "clippy::deprecated",
23081            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"##,
23082            default_severity: Severity::Allow,
23083            warn_since: None,
23084            deny_since: None,
23085        },
23086        children: &[
23087            "clippy::assign_ops",
23088            "clippy::extend_from_slice",
23089            "clippy::misaligned_transmute",
23090            "clippy::pub_enum_variant_names",
23091            "clippy::range_step_by_zero",
23092            "clippy::regex_macro",
23093            "clippy::replace_consts",
23094            "clippy::should_assert_eq",
23095            "clippy::unsafe_vector_initialization",
23096            "clippy::unstable_as_mut_slice",
23097            "clippy::unstable_as_slice",
23098            "clippy::unused_collect",
23099            "clippy::wrong_pub_self_convention",
23100        ],
23101    },
23102    LintGroup {
23103        lint: Lint {
23104            label: "clippy::nursery",
23105            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"##,
23106            default_severity: Severity::Allow,
23107            warn_since: None,
23108            deny_since: None,
23109        },
23110        children: &[
23111            "clippy::as_ptr_cast_mut",
23112            "clippy::branches_sharing_code",
23113            "clippy::clear_with_drain",
23114            "clippy::cognitive_complexity",
23115            "clippy::collection_is_never_read",
23116            "clippy::debug_assert_with_mut_call",
23117            "clippy::derive_partial_eq_without_eq",
23118            "clippy::equatable_if_let",
23119            "clippy::fallible_impl_from",
23120            "clippy::future_not_send",
23121            "clippy::imprecise_flops",
23122            "clippy::iter_on_empty_collections",
23123            "clippy::iter_on_single_items",
23124            "clippy::iter_with_drain",
23125            "clippy::large_stack_frames",
23126            "clippy::missing_const_for_fn",
23127            "clippy::mutex_integer",
23128            "clippy::needless_collect",
23129            "clippy::needless_pass_by_ref_mut",
23130            "clippy::non_send_fields_in_send_ty",
23131            "clippy::nonstandard_macro_braces",
23132            "clippy::option_if_let_else",
23133            "clippy::or_fun_call",
23134            "clippy::path_buf_push_overwrite",
23135            "clippy::read_zero_byte_vec",
23136            "clippy::redundant_clone",
23137            "clippy::redundant_pub_crate",
23138            "clippy::set_contains_or_insert",
23139            "clippy::significant_drop_in_scrutinee",
23140            "clippy::significant_drop_tightening",
23141            "clippy::string_lit_as_bytes",
23142            "clippy::suboptimal_flops",
23143            "clippy::suspicious_operation_groupings",
23144            "clippy::trailing_empty_array",
23145            "clippy::trait_duplication_in_bounds",
23146            "clippy::transmute_undefined_repr",
23147            "clippy::trivial_regex",
23148            "clippy::tuple_array_conversions",
23149            "clippy::type_repetition_in_bounds",
23150            "clippy::uninhabited_references",
23151            "clippy::unnecessary_struct_initialization",
23152            "clippy::unused_peekable",
23153            "clippy::unused_rounding",
23154            "clippy::use_self",
23155            "clippy::useless_let_if_seq",
23156            "clippy::while_float",
23157        ],
23158    },
23159    LintGroup {
23160        lint: Lint {
23161            label: "clippy::pedantic",
23162            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"##,
23163            default_severity: Severity::Allow,
23164            warn_since: None,
23165            deny_since: None,
23166        },
23167        children: &[
23168            "clippy::assigning_clones",
23169            "clippy::bool_to_int_with_if",
23170            "clippy::borrow_as_ptr",
23171            "clippy::case_sensitive_file_extension_comparisons",
23172            "clippy::cast_lossless",
23173            "clippy::cast_possible_truncation",
23174            "clippy::cast_possible_wrap",
23175            "clippy::cast_precision_loss",
23176            "clippy::cast_ptr_alignment",
23177            "clippy::cast_sign_loss",
23178            "clippy::checked_conversions",
23179            "clippy::cloned_instead_of_copied",
23180            "clippy::copy_iterator",
23181            "clippy::default_trait_access",
23182            "clippy::doc_link_with_quotes",
23183            "clippy::doc_markdown",
23184            "clippy::empty_enum",
23185            "clippy::enum_glob_use",
23186            "clippy::expl_impl_clone_on_copy",
23187            "clippy::explicit_deref_methods",
23188            "clippy::explicit_into_iter_loop",
23189            "clippy::explicit_iter_loop",
23190            "clippy::filter_map_next",
23191            "clippy::flat_map_option",
23192            "clippy::float_cmp",
23193            "clippy::fn_params_excessive_bools",
23194            "clippy::from_iter_instead_of_collect",
23195            "clippy::if_not_else",
23196            "clippy::ignored_unit_patterns",
23197            "clippy::implicit_clone",
23198            "clippy::implicit_hasher",
23199            "clippy::inconsistent_struct_constructor",
23200            "clippy::index_refutable_slice",
23201            "clippy::inefficient_to_string",
23202            "clippy::inline_always",
23203            "clippy::into_iter_without_iter",
23204            "clippy::invalid_upcast_comparisons",
23205            "clippy::items_after_statements",
23206            "clippy::iter_filter_is_ok",
23207            "clippy::iter_filter_is_some",
23208            "clippy::iter_not_returning_iterator",
23209            "clippy::iter_without_into_iter",
23210            "clippy::large_digit_groups",
23211            "clippy::large_futures",
23212            "clippy::large_stack_arrays",
23213            "clippy::large_types_passed_by_value",
23214            "clippy::linkedlist",
23215            "clippy::macro_use_imports",
23216            "clippy::manual_assert",
23217            "clippy::manual_instant_elapsed",
23218            "clippy::manual_is_variant_and",
23219            "clippy::manual_let_else",
23220            "clippy::manual_ok_or",
23221            "clippy::manual_string_new",
23222            "clippy::many_single_char_names",
23223            "clippy::map_unwrap_or",
23224            "clippy::match_bool",
23225            "clippy::match_on_vec_items",
23226            "clippy::match_same_arms",
23227            "clippy::match_wild_err_arm",
23228            "clippy::match_wildcard_for_single_variants",
23229            "clippy::maybe_infinite_iter",
23230            "clippy::mismatching_type_param_order",
23231            "clippy::missing_errors_doc",
23232            "clippy::missing_fields_in_debug",
23233            "clippy::missing_panics_doc",
23234            "clippy::module_name_repetitions",
23235            "clippy::must_use_candidate",
23236            "clippy::mut_mut",
23237            "clippy::naive_bytecount",
23238            "clippy::needless_bitwise_bool",
23239            "clippy::needless_continue",
23240            "clippy::needless_for_each",
23241            "clippy::needless_pass_by_value",
23242            "clippy::needless_raw_string_hashes",
23243            "clippy::no_effect_underscore_binding",
23244            "clippy::no_mangle_with_rust_abi",
23245            "clippy::option_as_ref_cloned",
23246            "clippy::option_option",
23247            "clippy::ptr_as_ptr",
23248            "clippy::ptr_cast_constness",
23249            "clippy::pub_underscore_fields",
23250            "clippy::range_minus_one",
23251            "clippy::range_plus_one",
23252            "clippy::redundant_closure_for_method_calls",
23253            "clippy::redundant_else",
23254            "clippy::ref_as_ptr",
23255            "clippy::ref_binding_to_reference",
23256            "clippy::ref_option",
23257            "clippy::ref_option_ref",
23258            "clippy::return_self_not_must_use",
23259            "clippy::same_functions_in_if_condition",
23260            "clippy::semicolon_if_nothing_returned",
23261            "clippy::should_panic_without_expect",
23262            "clippy::similar_names",
23263            "clippy::single_char_pattern",
23264            "clippy::single_match_else",
23265            "clippy::stable_sort_primitive",
23266            "clippy::str_split_at_newline",
23267            "clippy::string_add_assign",
23268            "clippy::struct_excessive_bools",
23269            "clippy::struct_field_names",
23270            "clippy::too_many_lines",
23271            "clippy::transmute_ptr_to_ptr",
23272            "clippy::trivially_copy_pass_by_ref",
23273            "clippy::unchecked_duration_subtraction",
23274            "clippy::unicode_not_nfc",
23275            "clippy::uninlined_format_args",
23276            "clippy::unnecessary_box_returns",
23277            "clippy::unnecessary_join",
23278            "clippy::unnecessary_wraps",
23279            "clippy::unnested_or_patterns",
23280            "clippy::unreadable_literal",
23281            "clippy::unsafe_derive_deserialize",
23282            "clippy::unused_async",
23283            "clippy::unused_self",
23284            "clippy::used_underscore_binding",
23285            "clippy::used_underscore_items",
23286            "clippy::verbose_bit_mask",
23287            "clippy::wildcard_imports",
23288            "clippy::zero_sized_map_values",
23289        ],
23290    },
23291    LintGroup {
23292        lint: Lint {
23293            label: "clippy::perf",
23294            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"##,
23295            default_severity: Severity::Allow,
23296            warn_since: None,
23297            deny_since: None,
23298        },
23299        children: &[
23300            "clippy::box_collection",
23301            "clippy::boxed_local",
23302            "clippy::cmp_owned",
23303            "clippy::collapsible_str_replace",
23304            "clippy::drain_collect",
23305            "clippy::expect_fun_call",
23306            "clippy::extend_with_drain",
23307            "clippy::format_collect",
23308            "clippy::format_in_format_args",
23309            "clippy::iter_overeager_cloned",
23310            "clippy::large_const_arrays",
23311            "clippy::large_enum_variant",
23312            "clippy::manual_memcpy",
23313            "clippy::manual_retain",
23314            "clippy::manual_str_repeat",
23315            "clippy::manual_try_fold",
23316            "clippy::map_entry",
23317            "clippy::missing_const_for_thread_local",
23318            "clippy::missing_spin_loop",
23319            "clippy::readonly_write_lock",
23320            "clippy::redundant_allocation",
23321            "clippy::result_large_err",
23322            "clippy::slow_vector_initialization",
23323            "clippy::to_string_in_format_args",
23324            "clippy::unnecessary_to_owned",
23325            "clippy::useless_vec",
23326            "clippy::vec_init_then_push",
23327            "clippy::waker_clone_wake",
23328        ],
23329    },
23330    LintGroup {
23331        lint: Lint {
23332            label: "clippy::restriction",
23333            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"##,
23334            default_severity: Severity::Allow,
23335            warn_since: None,
23336            deny_since: None,
23337        },
23338        children: &[
23339            "clippy::absolute_paths",
23340            "clippy::alloc_instead_of_core",
23341            "clippy::allow_attributes",
23342            "clippy::allow_attributes_without_reason",
23343            "clippy::arithmetic_side_effects",
23344            "clippy::as_conversions",
23345            "clippy::as_underscore",
23346            "clippy::assertions_on_result_states",
23347            "clippy::big_endian_bytes",
23348            "clippy::cfg_not_test",
23349            "clippy::clone_on_ref_ptr",
23350            "clippy::create_dir",
23351            "clippy::dbg_macro",
23352            "clippy::decimal_literal_representation",
23353            "clippy::default_numeric_fallback",
23354            "clippy::default_union_representation",
23355            "clippy::deref_by_slicing",
23356            "clippy::disallowed_script_idents",
23357            "clippy::else_if_without_else",
23358            "clippy::empty_drop",
23359            "clippy::empty_enum_variants_with_brackets",
23360            "clippy::empty_structs_with_brackets",
23361            "clippy::error_impl_error",
23362            "clippy::exhaustive_enums",
23363            "clippy::exhaustive_structs",
23364            "clippy::exit",
23365            "clippy::expect_used",
23366            "clippy::field_scoped_visibility_modifiers",
23367            "clippy::filetype_is_file",
23368            "clippy::float_arithmetic",
23369            "clippy::float_cmp_const",
23370            "clippy::fn_to_numeric_cast_any",
23371            "clippy::format_push_string",
23372            "clippy::get_unwrap",
23373            "clippy::host_endian_bytes",
23374            "clippy::if_then_some_else_none",
23375            "clippy::impl_trait_in_params",
23376            "clippy::implicit_return",
23377            "clippy::indexing_slicing",
23378            "clippy::infinite_loop",
23379            "clippy::inline_asm_x86_att_syntax",
23380            "clippy::inline_asm_x86_intel_syntax",
23381            "clippy::integer_division",
23382            "clippy::integer_division_remainder_used",
23383            "clippy::iter_over_hash_type",
23384            "clippy::large_include_file",
23385            "clippy::let_underscore_must_use",
23386            "clippy::let_underscore_untyped",
23387            "clippy::little_endian_bytes",
23388            "clippy::lossy_float_literal",
23389            "clippy::map_err_ignore",
23390            "clippy::mem_forget",
23391            "clippy::min_ident_chars",
23392            "clippy::missing_assert_message",
23393            "clippy::missing_asserts_for_indexing",
23394            "clippy::missing_docs_in_private_items",
23395            "clippy::missing_inline_in_public_items",
23396            "clippy::missing_trait_methods",
23397            "clippy::mixed_read_write_in_expression",
23398            "clippy::mod_module_files",
23399            "clippy::modulo_arithmetic",
23400            "clippy::multiple_inherent_impl",
23401            "clippy::multiple_unsafe_ops_per_block",
23402            "clippy::mutex_atomic",
23403            "clippy::needless_raw_strings",
23404            "clippy::non_ascii_literal",
23405            "clippy::non_zero_suggestions",
23406            "clippy::panic",
23407            "clippy::panic_in_result_fn",
23408            "clippy::partial_pub_fields",
23409            "clippy::pathbuf_init_then_push",
23410            "clippy::pattern_type_mismatch",
23411            "clippy::print_stderr",
23412            "clippy::print_stdout",
23413            "clippy::pub_use",
23414            "clippy::pub_with_shorthand",
23415            "clippy::pub_without_shorthand",
23416            "clippy::question_mark_used",
23417            "clippy::rc_buffer",
23418            "clippy::rc_mutex",
23419            "clippy::redundant_type_annotations",
23420            "clippy::ref_patterns",
23421            "clippy::renamed_function_params",
23422            "clippy::rest_pat_in_fully_bound_structs",
23423            "clippy::same_name_method",
23424            "clippy::self_named_module_files",
23425            "clippy::semicolon_inside_block",
23426            "clippy::semicolon_outside_block",
23427            "clippy::separated_literal_suffix",
23428            "clippy::shadow_reuse",
23429            "clippy::shadow_same",
23430            "clippy::shadow_unrelated",
23431            "clippy::single_call_fn",
23432            "clippy::single_char_lifetime_names",
23433            "clippy::std_instead_of_alloc",
23434            "clippy::std_instead_of_core",
23435            "clippy::str_to_string",
23436            "clippy::string_add",
23437            "clippy::string_lit_chars_any",
23438            "clippy::string_slice",
23439            "clippy::string_to_string",
23440            "clippy::suspicious_xor_used_as_pow",
23441            "clippy::tests_outside_test_module",
23442            "clippy::todo",
23443            "clippy::try_err",
23444            "clippy::undocumented_unsafe_blocks",
23445            "clippy::unimplemented",
23446            "clippy::unnecessary_safety_comment",
23447            "clippy::unnecessary_safety_doc",
23448            "clippy::unnecessary_self_imports",
23449            "clippy::unneeded_field_pattern",
23450            "clippy::unreachable",
23451            "clippy::unseparated_literal_suffix",
23452            "clippy::unused_result_ok",
23453            "clippy::unused_trait_names",
23454            "clippy::unwrap_in_result",
23455            "clippy::unwrap_used",
23456            "clippy::use_debug",
23457            "clippy::verbose_file_reads",
23458            "clippy::wildcard_enum_match_arm",
23459        ],
23460    },
23461    LintGroup {
23462        lint: Lint {
23463            label: "clippy::style",
23464            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"##,
23465            default_severity: Severity::Allow,
23466            warn_since: None,
23467            deny_since: None,
23468        },
23469        children: &[
23470            "clippy::assertions_on_constants",
23471            "clippy::assign_op_pattern",
23472            "clippy::blocks_in_conditions",
23473            "clippy::bool_assert_comparison",
23474            "clippy::borrow_interior_mutable_const",
23475            "clippy::box_default",
23476            "clippy::builtin_type_shadow",
23477            "clippy::byte_char_slices",
23478            "clippy::bytes_nth",
23479            "clippy::chars_last_cmp",
23480            "clippy::chars_next_cmp",
23481            "clippy::cmp_null",
23482            "clippy::collapsible_else_if",
23483            "clippy::collapsible_if",
23484            "clippy::collapsible_match",
23485            "clippy::comparison_chain",
23486            "clippy::comparison_to_empty",
23487            "clippy::declare_interior_mutable_const",
23488            "clippy::default_instead_of_iter_empty",
23489            "clippy::disallowed_macros",
23490            "clippy::disallowed_methods",
23491            "clippy::disallowed_names",
23492            "clippy::disallowed_types",
23493            "clippy::doc_lazy_continuation",
23494            "clippy::double_must_use",
23495            "clippy::double_neg",
23496            "clippy::duplicate_underscore_argument",
23497            "clippy::enum_variant_names",
23498            "clippy::err_expect",
23499            "clippy::excessive_precision",
23500            "clippy::field_reassign_with_default",
23501            "clippy::filter_map_bool_then",
23502            "clippy::fn_to_numeric_cast",
23503            "clippy::fn_to_numeric_cast_with_truncation",
23504            "clippy::for_kv_map",
23505            "clippy::from_over_into",
23506            "clippy::from_str_radix_10",
23507            "clippy::get_first",
23508            "clippy::if_same_then_else",
23509            "clippy::implicit_saturating_add",
23510            "clippy::implicit_saturating_sub",
23511            "clippy::inconsistent_digit_grouping",
23512            "clippy::infallible_destructuring_match",
23513            "clippy::inherent_to_string",
23514            "clippy::init_numbered_fields",
23515            "clippy::into_iter_on_ref",
23516            "clippy::is_digit_ascii_radix",
23517            "clippy::items_after_test_module",
23518            "clippy::iter_cloned_collect",
23519            "clippy::iter_next_slice",
23520            "clippy::iter_nth",
23521            "clippy::iter_nth_zero",
23522            "clippy::iter_skip_next",
23523            "clippy::just_underscores_and_digits",
23524            "clippy::legacy_numeric_constants",
23525            "clippy::len_without_is_empty",
23526            "clippy::len_zero",
23527            "clippy::let_and_return",
23528            "clippy::let_unit_value",
23529            "clippy::main_recursion",
23530            "clippy::manual_async_fn",
23531            "clippy::manual_bits",
23532            "clippy::manual_is_ascii_check",
23533            "clippy::manual_is_finite",
23534            "clippy::manual_is_infinite",
23535            "clippy::manual_map",
23536            "clippy::manual_next_back",
23537            "clippy::manual_non_exhaustive",
23538            "clippy::manual_pattern_char_comparison",
23539            "clippy::manual_range_contains",
23540            "clippy::manual_rotate",
23541            "clippy::manual_saturating_arithmetic",
23542            "clippy::manual_while_let_some",
23543            "clippy::map_clone",
23544            "clippy::map_collect_result_unit",
23545            "clippy::match_like_matches_macro",
23546            "clippy::match_overlapping_arm",
23547            "clippy::match_ref_pats",
23548            "clippy::match_result_ok",
23549            "clippy::mem_replace_option_with_none",
23550            "clippy::mem_replace_with_default",
23551            "clippy::missing_enforced_import_renames",
23552            "clippy::missing_safety_doc",
23553            "clippy::mixed_attributes_style",
23554            "clippy::mixed_case_hex_literals",
23555            "clippy::module_inception",
23556            "clippy::must_use_unit",
23557            "clippy::mut_mutex_lock",
23558            "clippy::needless_borrow",
23559            "clippy::needless_borrows_for_generic_args",
23560            "clippy::needless_doctest_main",
23561            "clippy::needless_else",
23562            "clippy::needless_late_init",
23563            "clippy::needless_parens_on_range_literals",
23564            "clippy::needless_pub_self",
23565            "clippy::needless_range_loop",
23566            "clippy::needless_return",
23567            "clippy::needless_return_with_question_mark",
23568            "clippy::neg_multiply",
23569            "clippy::new_ret_no_self",
23570            "clippy::new_without_default",
23571            "clippy::non_minimal_cfg",
23572            "clippy::obfuscated_if_else",
23573            "clippy::ok_expect",
23574            "clippy::op_ref",
23575            "clippy::option_map_or_err_ok",
23576            "clippy::option_map_or_none",
23577            "clippy::partialeq_to_none",
23578            "clippy::print_literal",
23579            "clippy::print_with_newline",
23580            "clippy::println_empty_string",
23581            "clippy::ptr_arg",
23582            "clippy::ptr_eq",
23583            "clippy::question_mark",
23584            "clippy::redundant_closure",
23585            "clippy::redundant_field_names",
23586            "clippy::redundant_pattern",
23587            "clippy::redundant_pattern_matching",
23588            "clippy::redundant_static_lifetimes",
23589            "clippy::result_map_or_into_option",
23590            "clippy::result_unit_err",
23591            "clippy::same_item_push",
23592            "clippy::self_named_constructors",
23593            "clippy::should_implement_trait",
23594            "clippy::single_char_add_str",
23595            "clippy::single_component_path_imports",
23596            "clippy::single_match",
23597            "clippy::string_extend_chars",
23598            "clippy::tabs_in_doc_comments",
23599            "clippy::to_digit_is_some",
23600            "clippy::to_string_trait_impl",
23601            "clippy::too_long_first_doc_paragraph",
23602            "clippy::toplevel_ref_arg",
23603            "clippy::trim_split_whitespace",
23604            "clippy::unnecessary_fallible_conversions",
23605            "clippy::unnecessary_fold",
23606            "clippy::unnecessary_lazy_evaluations",
23607            "clippy::unnecessary_mut_passed",
23608            "clippy::unnecessary_owned_empty_strings",
23609            "clippy::unsafe_removed_from_name",
23610            "clippy::unused_enumerate_index",
23611            "clippy::unused_unit",
23612            "clippy::unusual_byte_groupings",
23613            "clippy::unwrap_or_default",
23614            "clippy::upper_case_acronyms",
23615            "clippy::while_let_on_iterator",
23616            "clippy::write_literal",
23617            "clippy::write_with_newline",
23618            "clippy::writeln_empty_string",
23619            "clippy::wrong_self_convention",
23620            "clippy::zero_ptr",
23621        ],
23622    },
23623    LintGroup {
23624        lint: Lint {
23625            label: "clippy::suspicious",
23626            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"##,
23627            default_severity: Severity::Allow,
23628            warn_since: None,
23629            deny_since: None,
23630        },
23631        children: &[
23632            "clippy::almost_complete_range",
23633            "clippy::arc_with_non_send_sync",
23634            "clippy::await_holding_invalid_type",
23635            "clippy::await_holding_lock",
23636            "clippy::await_holding_refcell_ref",
23637            "clippy::blanket_clippy_restriction_lints",
23638            "clippy::cast_abs_to_unsigned",
23639            "clippy::cast_enum_constructor",
23640            "clippy::cast_enum_truncation",
23641            "clippy::cast_nan_to_int",
23642            "clippy::cast_slice_from_raw_parts",
23643            "clippy::const_is_empty",
23644            "clippy::crate_in_macro_def",
23645            "clippy::deprecated_clippy_cfg_attr",
23646            "clippy::drop_non_drop",
23647            "clippy::duplicate_mod",
23648            "clippy::duplicated_attributes",
23649            "clippy::empty_docs",
23650            "clippy::empty_line_after_doc_comments",
23651            "clippy::empty_line_after_outer_attr",
23652            "clippy::empty_loop",
23653            "clippy::float_equality_without_abs",
23654            "clippy::forget_non_drop",
23655            "clippy::four_forward_slashes",
23656            "clippy::from_raw_with_void_ptr",
23657            "clippy::incompatible_msrv",
23658            "clippy::ineffective_open_options",
23659            "clippy::iter_out_of_bounds",
23660            "clippy::join_absolute_paths",
23661            "clippy::let_underscore_future",
23662            "clippy::lines_filter_map_ok",
23663            "clippy::macro_metavars_in_unsafe",
23664            "clippy::manual_unwrap_or_default",
23665            "clippy::misnamed_getters",
23666            "clippy::misrefactored_assign_op",
23667            "clippy::missing_transmute_annotations",
23668            "clippy::multi_assignments",
23669            "clippy::multiple_bound_locations",
23670            "clippy::mut_range_bound",
23671            "clippy::mutable_key_type",
23672            "clippy::needless_character_iteration",
23673            "clippy::needless_maybe_sized",
23674            "clippy::no_effect_replace",
23675            "clippy::non_canonical_clone_impl",
23676            "clippy::non_canonical_partial_ord_impl",
23677            "clippy::octal_escapes",
23678            "clippy::path_ends_with_ext",
23679            "clippy::permissions_set_readonly_false",
23680            "clippy::pointers_in_nomem_asm_block",
23681            "clippy::print_in_format_impl",
23682            "clippy::rc_clone_in_vec_init",
23683            "clippy::repeat_vec_with_capacity",
23684            "clippy::single_range_in_vec_init",
23685            "clippy::size_of_ref",
23686            "clippy::suspicious_arithmetic_impl",
23687            "clippy::suspicious_assignment_formatting",
23688            "clippy::suspicious_command_arg_space",
23689            "clippy::suspicious_doc_comments",
23690            "clippy::suspicious_else_formatting",
23691            "clippy::suspicious_map",
23692            "clippy::suspicious_op_assign_impl",
23693            "clippy::suspicious_open_options",
23694            "clippy::suspicious_to_owned",
23695            "clippy::suspicious_unary_op_formatting",
23696            "clippy::swap_ptr_to_ref",
23697            "clippy::test_attr_in_doctest",
23698            "clippy::type_id_on_box",
23699            "clippy::unconditional_recursion",
23700            "clippy::unnecessary_clippy_cfg",
23701            "clippy::unnecessary_get_then_check",
23702            "clippy::unnecessary_result_map_or_else",
23703            "clippy::zero_repeat_side_effects",
23704            "clippy::zombie_processes",
23705        ],
23706    },
23707];