1use 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];