├── .github ├── FUNDING.yml └── workflows │ └── ci.yml ├── .gitignore ├── Cargo.toml ├── LICENSE-APACHE ├── LICENSE-MIT ├── README.md └── src ├── lints.rs ├── main.rs ├── name.rs ├── parse.rs ├── render.rs ├── style.css └── tests.rs /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: dtolnay 2 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: 4 | push: 5 | pull_request: 6 | workflow_dispatch: 7 | schedule: [cron: "40 1 * * *"] 8 | 9 | permissions: 10 | contents: read 11 | 12 | env: 13 | RUSTFLAGS: -Dwarnings 14 | 15 | jobs: 16 | pre_ci: 17 | uses: dtolnay/.github/.github/workflows/pre_ci.yml@master 18 | 19 | check: 20 | name: Rust ${{matrix.rust}} 21 | needs: pre_ci 22 | if: needs.pre_ci.outputs.continue 23 | runs-on: ubuntu-latest 24 | strategy: 25 | fail-fast: false 26 | matrix: 27 | rust: [nightly, beta, stable] 28 | timeout-minutes: 45 29 | steps: 30 | - uses: actions/checkout@v4 31 | - uses: dtolnay/rust-toolchain@master 32 | with: 33 | toolchain: ${{matrix.rust}} 34 | - name: Enable type layout randomization 35 | run: echo RUSTFLAGS=${RUSTFLAGS}\ -Zrandomize-layout >> $GITHUB_ENV 36 | if: matrix.rust == 'nightly' 37 | - run: cargo build 38 | - run: cargo test 39 | - uses: actions/upload-artifact@v4 40 | if: matrix.rust == 'nightly' && always() 41 | with: 42 | name: Cargo.lock 43 | path: Cargo.lock 44 | continue-on-error: true 45 | 46 | clippy: 47 | name: Clippy 48 | runs-on: ubuntu-latest 49 | if: github.event_name != 'pull_request' 50 | timeout-minutes: 45 51 | steps: 52 | - uses: actions/checkout@v4 53 | - uses: dtolnay/rust-toolchain@clippy 54 | - run: cargo clippy -- -Dclippy::all -Dclippy::pedantic 55 | 56 | outdated: 57 | name: Outdated 58 | runs-on: ubuntu-latest 59 | if: github.event_name != 'pull_request' 60 | timeout-minutes: 45 61 | steps: 62 | - uses: actions/checkout@v4 63 | - uses: dtolnay/rust-toolchain@stable 64 | - uses: dtolnay/install@cargo-outdated 65 | - run: cargo outdated --workspace --exit-code 1 66 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.crate 2 | /*.css 3 | /*.html 4 | /target/ 5 | /Cargo.lock 6 | lints.json 7 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "noisy-clippy" 3 | version = "0.0.0" 4 | authors = ["David Tolnay "] 5 | description = "How often is each Clippy lint suppressed on crates.io" 6 | edition = "2021" 7 | keywords = ["clippy"] 8 | license = "MIT OR Apache-2.0" 9 | publish = false 10 | repository = "https://github.com/dtolnay/noisy-clippy" 11 | 12 | [dependencies] 13 | anyhow = "1.0" 14 | clap = { version = "4", features = ["deprecated", "derive"] } 15 | flate2 = "1.0" 16 | git2 = "0.20" 17 | parking_lot = "0.12" 18 | proc-macro2 = { version = "1.0", features = ["span-locations"] } 19 | rayon = "1.0" 20 | reqwest = { version = "0.12", features = ["blocking", "json"] } 21 | semver = "1.0" 22 | serde = "1.0" 23 | serde_derive = "1.0" 24 | syn = { version = "2.0", default-features = false, features = ["full", "parsing", "visit"] } 25 | tar = "0.4" 26 | walkdir = "2.3" 27 | 28 | [dev-dependencies] 29 | quote = "1.0" 30 | -------------------------------------------------------------------------------- /LICENSE-APACHE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | -------------------------------------------------------------------------------- /LICENSE-MIT: -------------------------------------------------------------------------------- 1 | Permission is hereby granted, free of charge, to any 2 | person obtaining a copy of this software and associated 3 | documentation files (the "Software"), to deal in the 4 | Software without restriction, including without 5 | limitation the rights to use, copy, modify, merge, 6 | publish, distribute, sublicense, and/or sell copies of 7 | the Software, and to permit persons to whom the Software 8 | is furnished to do so, subject to the following 9 | conditions: 10 | 11 | The above copyright notice and this permission notice 12 | shall be included in all copies or substantial portions 13 | of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF 16 | ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 17 | TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 18 | PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT 19 | SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 21 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR 22 | IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 23 | DEALINGS IN THE SOFTWARE. 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## How often is each Clippy lint suppressed on crates.io 2 | 3 | [Clippy]'s most severe flaw in my experience has been low-signal lints that are 4 | enabled by default, aren't worth resolving and commonly need to be suppressed. 5 | 6 | I use Clippy across a large number of my Rust projects, so I already get good 7 | visibility into which lints are misguided, buggy, or have unacceptably low true 8 | positive rate on real world code. One of my [hobbies] apparently is deleting 9 | such lints from Clippy or downgrading them out of the set of enabled-by-default 10 | lints (opt-out lints) to the `pedantic` or `restriction` (opt-in) groups 11 | instead. 12 | 13 | This repo contains a script for analyzing suppressed lints on a bigger corpus: 14 | all of crates.io. For every Clippy lint, the program counts how many times it is 15 | suppressed globally (at module scope) or locally (on one single place the lint 16 | is triggered). 17 | 18 | In the table below, I would recommend paying attention to the **style** and 19 | **perf** lints. Highly suppressed **style** lints indicate that the community 20 | has consciously decided that Clippy's opinion on style is wrong. Highly 21 | suppressed **perf** lints indicate that the community does not consider it 22 | valuable to make their code more obtuse for the sake of questionable alleged 23 | performance. I think it would be wise to delete or downgrade many of these. 24 | 25 | [Clippy]: https://github.com/rust-lang/rust-clippy 26 | [hobbies]: https://github.com/rust-lang/rust-clippy/pulls?q=is%3Apr+is%3Amerged+author%3Adtolnay+downgrade 27 | 28 |
29 | 30 | ## Results (updated February 2023) 31 | 32 | local | global | lint name | category 33 | --- | --- | --- | --- 34 | [4181](https://dtolnay.github.io/noisy-clippy/too_many_arguments.html#local) | [979](https://dtolnay.github.io/noisy-clippy/too_many_arguments.html#global) | **[too_many_arguments](https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments)** | complexity 35 | [2888](https://dtolnay.github.io/noisy-clippy/type_complexity.html#local) | [1149](https://dtolnay.github.io/noisy-clippy/type_complexity.html#global) | **[type_complexity](https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity)** | complexity 36 | ~*[3878](https://dtolnay.github.io/noisy-clippy/unnecessary_wraps.html#local)*~ | ~*[98](https://dtolnay.github.io/noisy-clippy/unnecessary_wraps.html#global)*~ | ~*[unnecessary_wraps](https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_wraps)*~ | ~*complexity*~ pedantic 37 | [3421](https://dtolnay.github.io/noisy-clippy/needless_borrow.html#local) | [30](https://dtolnay.github.io/noisy-clippy/needless_borrow.html#global) | **[needless_borrow](https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow)** | style 38 | [3104](https://dtolnay.github.io/noisy-clippy/useless_conversion.html#local) | [63](https://dtolnay.github.io/noisy-clippy/useless_conversion.html#global) | **[useless_conversion](https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion)** | complexity 39 | [1103](https://dtolnay.github.io/noisy-clippy/upper_case_acronyms.html#local) | [955](https://dtolnay.github.io/noisy-clippy/upper_case_acronyms.html#global) | **[upper_case_acronyms](https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms)** | style 40 | [1257](https://dtolnay.github.io/noisy-clippy/large_enum_variant.html#local) | [798](https://dtolnay.github.io/noisy-clippy/large_enum_variant.html#global) | **[large_enum_variant](https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant)** | perf 41 | [1882](https://dtolnay.github.io/noisy-clippy/let_and_return.html#local) | [75](https://dtolnay.github.io/noisy-clippy/let_and_return.html#global) | **[let_and_return](https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return)** | style 42 | ~*[726](https://dtolnay.github.io/noisy-clippy/module_name_repetitions.html#local)*~ | ~*[872](https://dtolnay.github.io/noisy-clippy/module_name_repetitions.html#global)*~ | ~*[module_name_repetitions](https://rust-lang.github.io/rust-clippy/master/index.html#module_name_repetitions)*~ | pedantic 43 | ~*[1160](https://dtolnay.github.io/noisy-clippy/cast_possible_truncation.html#local)*~ | ~*[347](https://dtolnay.github.io/noisy-clippy/cast_possible_truncation.html#global)*~ | ~*[cast_possible_truncation](https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_truncation)*~ | pedantic 44 | [912](https://dtolnay.github.io/noisy-clippy/wrong_self_convention.html#local) | [471](https://dtolnay.github.io/noisy-clippy/wrong_self_convention.html#global) | **[wrong_self_convention](https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention)** | style 45 | [288](https://dtolnay.github.io/noisy-clippy/all.html#local) | [970](https://dtolnay.github.io/noisy-clippy/all.html#global) | **[all](https://rust-lang.github.io/rust-clippy/master/index.html#all)** | unknown 46 | ~*[792](https://dtolnay.github.io/noisy-clippy/many_single_char_names.html#local)*~ | ~*[379](https://dtolnay.github.io/noisy-clippy/many_single_char_names.html#global)*~ | ~*[many_single_char_names](https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names)*~ | ~*style*~ pedantic 47 | [265](https://dtolnay.github.io/noisy-clippy/redundant_clone.html#local) | [894](https://dtolnay.github.io/noisy-clippy/redundant_clone.html#global) | **[redundant_clone](https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone)** | perf 48 | [365](https://dtolnay.github.io/noisy-clippy/module_inception.html#local) | [793](https://dtolnay.github.io/noisy-clippy/module_inception.html#global) | **[module_inception](https://rust-lang.github.io/rust-clippy/master/index.html#module_inception)** | style 49 | [567](https://dtolnay.github.io/noisy-clippy/should_implement_trait.html#local) | [421](https://dtolnay.github.io/noisy-clippy/should_implement_trait.html#global) | **[should_implement_trait](https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait)** | style 50 | ~*[734](https://dtolnay.github.io/noisy-clippy/cognitive_complexity.html#local)*~ | ~*[205](https://dtolnay.github.io/noisy-clippy/cognitive_complexity.html#global)*~ | ~*[cognitive_complexity](https://rust-lang.github.io/rust-clippy/master/index.html#cognitive_complexity)*~ | ~*complexity*~ nursery 51 | ~*[650](https://dtolnay.github.io/noisy-clippy/too_many_lines.html#local)*~ | ~*[272](https://dtolnay.github.io/noisy-clippy/too_many_lines.html#global)*~ | ~*[too_many_lines](https://rust-lang.github.io/rust-clippy/master/index.html#too_many_lines)*~ | pedantic 52 | ~*[352](https://dtolnay.github.io/noisy-clippy/unreadable_literal.html#local)*~ | ~*[562](https://dtolnay.github.io/noisy-clippy/unreadable_literal.html#global)*~ | ~*[unreadable_literal](https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal)*~ | ~*style*~ pedantic 53 | ~*[624](https://dtolnay.github.io/noisy-clippy/float_cmp.html#local)*~ | ~*[226](https://dtolnay.github.io/noisy-clippy/float_cmp.html#global)*~ | ~*[float_cmp](https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp)*~ | ~*correctness*~ pedantic 54 | ~*[604](https://dtolnay.github.io/noisy-clippy/cast_sign_loss.html#local)*~ | ~*[243](https://dtolnay.github.io/noisy-clippy/cast_sign_loss.html#global)*~ | ~*[cast_sign_loss](https://rust-lang.github.io/rust-clippy/master/index.html#cast_sign_loss)*~ | pedantic 55 | [522](https://dtolnay.github.io/noisy-clippy/new_without_default.html#local) | [317](https://dtolnay.github.io/noisy-clippy/new_without_default.html#global) | **[new_without_default](https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default)** | style 56 | ~*[626](https://dtolnay.github.io/noisy-clippy/needless_pass_by_value.html#local)*~ | ~*[198](https://dtolnay.github.io/noisy-clippy/needless_pass_by_value.html#global)*~ | ~*[needless_pass_by_value](https://rust-lang.github.io/rust-clippy/master/index.html#needless_pass_by_value)*~ | ~*style*~ pedantic 57 | ~*[311](https://dtolnay.github.io/noisy-clippy/derive_partial_eq_without_eq.html#local)*~ | ~*[467](https://dtolnay.github.io/noisy-clippy/derive_partial_eq_without_eq.html#global)*~ | ~*[derive_partial_eq_without_eq](https://rust-lang.github.io/rust-clippy/master/index.html#derive_partial_eq_without_eq)*~ | ~*style*~ nursery 58 | ~*[517](https://dtolnay.github.io/noisy-clippy/unwrap_used.html#local)*~ | ~*[248](https://dtolnay.github.io/noisy-clippy/unwrap_used.html#global)*~ | ~*[unwrap_used](https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_used)*~ | restriction 59 | ~*[675](https://dtolnay.github.io/noisy-clippy/cast_ptr_alignment.html#local)*~ | ~*[86](https://dtolnay.github.io/noisy-clippy/cast_ptr_alignment.html#global)*~ | ~*[cast_ptr_alignment](https://rust-lang.github.io/rust-clippy/master/index.html#cast_ptr_alignment)*~ | ~*correctness*~ pedantic 60 | [365](https://dtolnay.github.io/noisy-clippy/missing_safety_doc.html#local) | [383](https://dtolnay.github.io/noisy-clippy/missing_safety_doc.html#global) | **[missing_safety_doc](https://rust-lang.github.io/rust-clippy/master/index.html#missing_safety_doc)** | style 61 | [374](https://dtolnay.github.io/noisy-clippy/ptr_arg.html#local) | [323](https://dtolnay.github.io/noisy-clippy/ptr_arg.html#global) | **[ptr_arg](https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg)** | style 62 | [563](https://dtolnay.github.io/noisy-clippy/len_without_is_empty.html#local) | [116](https://dtolnay.github.io/noisy-clippy/len_without_is_empty.html#global) | **[len_without_is_empty](https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty)** | style 63 | ~*[534](https://dtolnay.github.io/noisy-clippy/trivially_copy_pass_by_ref.html#local)*~ | ~*[123](https://dtolnay.github.io/noisy-clippy/trivially_copy_pass_by_ref.html#global)*~ | ~*[trivially_copy_pass_by_ref](https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref)*~ | ~*perf*~ pedantic 64 | [72](https://dtolnay.github.io/noisy-clippy/let_unit_value.html#local) | [549](https://dtolnay.github.io/noisy-clippy/let_unit_value.html#global) | **[let_unit_value](https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value)** | style 65 | ~*[389](https://dtolnay.github.io/noisy-clippy/missing_panics_doc.html#local)*~ | ~*[207](https://dtolnay.github.io/noisy-clippy/missing_panics_doc.html#global)*~ | ~*[missing_panics_doc](https://rust-lang.github.io/rust-clippy/master/index.html#missing_panics_doc)*~ | pedantic 66 | [70](https://dtolnay.github.io/noisy-clippy/needless_return.html#local) | [517](https://dtolnay.github.io/noisy-clippy/needless_return.html#global) | **[needless_return](https://rust-lang.github.io/rust-clippy/master/index.html#needless_return)** | style 67 | ~*[241](https://dtolnay.github.io/noisy-clippy/integer_arithmetic.html#local)*~ | ~*[342](https://dtolnay.github.io/noisy-clippy/integer_arithmetic.html#global)*~ | ~*[integer_arithmetic](https://rust-lang.github.io/rust-clippy/master/index.html#integer_arithmetic)*~ | restriction 68 | [460](https://dtolnay.github.io/noisy-clippy/needless_range_loop.html#local) | [117](https://dtolnay.github.io/noisy-clippy/needless_range_loop.html#global) | **[needless_range_loop](https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop)** | style 69 | [488](https://dtolnay.github.io/noisy-clippy/new_ret_no_self.html#local) | [84](https://dtolnay.github.io/noisy-clippy/new_ret_no_self.html#global) | **[new_ret_no_self](https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self)** | style 70 | ~*[130](https://dtolnay.github.io/noisy-clippy/missing_errors_doc.html#local)*~ | ~*[436](https://dtolnay.github.io/noisy-clippy/missing_errors_doc.html#global)*~ | ~*[missing_errors_doc](https://rust-lang.github.io/rust-clippy/master/index.html#missing_errors_doc)*~ | pedantic 71 | [479](https://dtolnay.github.io/noisy-clippy/collapsible_if.html#local) | [83](https://dtolnay.github.io/noisy-clippy/collapsible_if.html#global) | **[collapsible_if](https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if)** | style 72 | [455](https://dtolnay.github.io/noisy-clippy/enum_variant_names.html#local) | [88](https://dtolnay.github.io/noisy-clippy/enum_variant_names.html#global) | **[enum_variant_names](https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names)** | style 73 | ~*[384](https://dtolnay.github.io/noisy-clippy/cast_precision_loss.html#local)*~ | ~*[156](https://dtolnay.github.io/noisy-clippy/cast_precision_loss.html#global)*~ | ~*[cast_precision_loss](https://rust-lang.github.io/rust-clippy/master/index.html#cast_precision_loss)*~ | pedantic 74 | ~*[435](https://dtolnay.github.io/noisy-clippy/missing_const_for_fn.html#local)*~ | ~*[103](https://dtolnay.github.io/noisy-clippy/missing_const_for_fn.html#global)*~ | ~*[missing_const_for_fn](https://rust-lang.github.io/rust-clippy/master/index.html#missing_const_for_fn)*~ | nursery 75 | ~*[320](https://dtolnay.github.io/noisy-clippy/cast_possible_wrap.html#local)*~ | ~*[189](https://dtolnay.github.io/noisy-clippy/cast_possible_wrap.html#global)*~ | ~*[cast_possible_wrap](https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_wrap)*~ | pedantic 76 | ~*[102](https://dtolnay.github.io/noisy-clippy/must_use_candidate.html#local)*~ | ~*[371](https://dtolnay.github.io/noisy-clippy/must_use_candidate.html#global)*~ | ~*[must_use_candidate](https://rust-lang.github.io/rust-clippy/master/index.html#must_use_candidate)*~ | pedantic 77 | [315](https://dtolnay.github.io/noisy-clippy/identity_op.html#local) | [144](https://dtolnay.github.io/noisy-clippy/identity_op.html#global) | **[identity_op](https://rust-lang.github.io/rust-clippy/master/index.html#identity_op)** | complexity 78 | [31](https://dtolnay.github.io/noisy-clippy/disallowed_names.html#local) | [403](https://dtolnay.github.io/noisy-clippy/disallowed_names.html#global) | **[disallowed_names](https://rust-lang.github.io/rust-clippy/master/index.html#disallowed_names)** | style 79 | ~*[175](https://dtolnay.github.io/noisy-clippy/similar_names.html#local)*~ | ~*[250](https://dtolnay.github.io/noisy-clippy/similar_names.html#global)*~ | ~*[similar_names](https://rust-lang.github.io/rust-clippy/master/index.html#similar_names)*~ | pedantic 80 | [387](https://dtolnay.github.io/noisy-clippy/nonminimal_bool.html#local) | [33](https://dtolnay.github.io/noisy-clippy/nonminimal_bool.html#global) | **[nonminimal_bool](https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool)** | complexity 81 | [302](https://dtolnay.github.io/noisy-clippy/redundant_closure.html#local) | [112](https://dtolnay.github.io/noisy-clippy/redundant_closure.html#global) | **[redundant_closure](https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure)** | style 82 | [35](https://dtolnay.github.io/noisy-clippy/vec_init_then_push.html#local) | [372](https://dtolnay.github.io/noisy-clippy/vec_init_then_push.html#global) | **[vec_init_then_push](https://rust-lang.github.io/rust-clippy/master/index.html#vec_init_then_push)** | perf 83 | [44](https://dtolnay.github.io/noisy-clippy/needless_doctest_main.html#local) | [354](https://dtolnay.github.io/noisy-clippy/needless_doctest_main.html#global) | **[needless_doctest_main](https://rust-lang.github.io/rust-clippy/master/index.html#needless_doctest_main)** | style 84 | [297](https://dtolnay.github.io/noisy-clippy/from_over_into.html#local) | [90](https://dtolnay.github.io/noisy-clippy/from_over_into.html#global) | **[from_over_into](https://rust-lang.github.io/rust-clippy/master/index.html#from_over_into)** | style 85 | [356](https://dtolnay.github.io/noisy-clippy/bool_comparison.html#local) | [29](https://dtolnay.github.io/noisy-clippy/bool_comparison.html#global) | **[bool_comparison](https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison)** | complexity 86 | ~*[152](https://dtolnay.github.io/noisy-clippy/cast_lossless.html#local)*~ | ~*[233](https://dtolnay.github.io/noisy-clippy/cast_lossless.html#global)*~ | ~*[cast_lossless](https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless)*~ | pedantic 87 | [363](https://dtolnay.github.io/noisy-clippy/redundant_pattern_matching.html#local) | [19](https://dtolnay.github.io/noisy-clippy/redundant_pattern_matching.html#global) | **[redundant_pattern_matching](https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching)** | style 88 | [368](https://dtolnay.github.io/noisy-clippy/unnecessary_lazy_evaluations.html#local) | [14](https://dtolnay.github.io/noisy-clippy/unnecessary_lazy_evaluations.html#global) | **[unnecessary_lazy_evaluations](https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations)** | style 89 | [311](https://dtolnay.github.io/noisy-clippy/suspicious_arithmetic_impl.html#local) | [67](https://dtolnay.github.io/noisy-clippy/suspicious_arithmetic_impl.html#global) | **[suspicious_arithmetic_impl](https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_arithmetic_impl)** | suspicious 90 | [251](https://dtolnay.github.io/noisy-clippy/single_match.html#local) | [122](https://dtolnay.github.io/noisy-clippy/single_match.html#global) | **[single_match](https://rust-lang.github.io/rust-clippy/master/index.html#single_match)** | style 91 | [268](https://dtolnay.github.io/noisy-clippy/needless_lifetimes.html#local) | [103](https://dtolnay.github.io/noisy-clippy/needless_lifetimes.html#global) | **[needless_lifetimes](https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes)** | complexity 92 | ~*[178](https://dtolnay.github.io/noisy-clippy/use_self.html#local)*~ | ~*[188](https://dtolnay.github.io/noisy-clippy/use_self.html#global)*~ | ~*[use_self](https://rust-lang.github.io/rust-clippy/master/index.html#use_self)*~ | nursery 93 | [338](https://dtolnay.github.io/noisy-clippy/comparison_to_empty.html#local) | [8](https://dtolnay.github.io/noisy-clippy/comparison_to_empty.html#global) | **[comparison_to_empty](https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty)** | style 94 | ~*[323](https://dtolnay.github.io/noisy-clippy/needless_collect.html#local)*~ | ~*[18](https://dtolnay.github.io/noisy-clippy/needless_collect.html#global)*~ | ~*[needless_collect](https://rust-lang.github.io/rust-clippy/master/index.html#needless_collect)*~ | ~*perf*~ nursery 95 | ~*[97](https://dtolnay.github.io/noisy-clippy/wildcard_imports.html#local)*~ | ~*[226](https://dtolnay.github.io/noisy-clippy/wildcard_imports.html#global)*~ | ~*[wildcard_imports](https://rust-lang.github.io/rust-clippy/master/index.html#wildcard_imports)*~ | pedantic 96 | ~*[267](https://dtolnay.github.io/noisy-clippy/unused_self.html#local)*~ | ~*[55](https://dtolnay.github.io/noisy-clippy/unused_self.html#global)*~ | ~*[unused_self](https://rust-lang.github.io/rust-clippy/master/index.html#unused_self)*~ | pedantic 97 | ~*[80](https://dtolnay.github.io/noisy-clippy/doc_markdown.html#local)*~ | ~*[239](https://dtolnay.github.io/noisy-clippy/doc_markdown.html#global)*~ | ~*[doc_markdown](https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown)*~ | pedantic 98 | ~*[236](https://dtolnay.github.io/noisy-clippy/indexing_slicing.html#local)*~ | ~*[64](https://dtolnay.github.io/noisy-clippy/indexing_slicing.html#global)*~ | ~*[indexing_slicing](https://rust-lang.github.io/rust-clippy/master/index.html#indexing_slicing)*~ | restriction 99 | ~*[206](https://dtolnay.github.io/noisy-clippy/match_same_arms.html#local)*~ | ~*[86](https://dtolnay.github.io/noisy-clippy/match_same_arms.html#global)*~ | ~*[match_same_arms](https://rust-lang.github.io/rust-clippy/master/index.html#match_same_arms)*~ | pedantic 100 | [228](https://dtolnay.github.io/noisy-clippy/eq_op.html#local) | [56](https://dtolnay.github.io/noisy-clippy/eq_op.html#global) | **[eq_op](https://rust-lang.github.io/rust-clippy/master/index.html#eq_op)** | correctness 101 | [198](https://dtolnay.github.io/noisy-clippy/comparison_chain.html#local) | [77](https://dtolnay.github.io/noisy-clippy/comparison_chain.html#global) | **[comparison_chain](https://rust-lang.github.io/rust-clippy/master/index.html#comparison_chain)** | style 102 | [143](https://dtolnay.github.io/noisy-clippy/excessive_precision.html#local) | [127](https://dtolnay.github.io/noisy-clippy/excessive_precision.html#global) | **[excessive_precision](https://rust-lang.github.io/rust-clippy/master/index.html#excessive_precision)** | style 103 | [118](https://dtolnay.github.io/noisy-clippy/approx_constant.html#local) | [148](https://dtolnay.github.io/noisy-clippy/approx_constant.html#global) | **[approx_constant](https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant)** | correctness 104 | [259](https://dtolnay.github.io/noisy-clippy/mut_from_ref.html#local) | [6](https://dtolnay.github.io/noisy-clippy/mut_from_ref.html#global) | **[mut_from_ref](https://rust-lang.github.io/rust-clippy/master/index.html#mut_from_ref)** | correctness 105 | [218](https://dtolnay.github.io/noisy-clippy/derived_hash_with_manual_eq.html#local) | [35](https://dtolnay.github.io/noisy-clippy/derived_hash_with_manual_eq.html#global) | **[derived_hash_with_manual_eq](https://rust-lang.github.io/rust-clippy/master/index.html#derived_hash_with_manual_eq)** | correctness 106 | ~*[125](https://dtolnay.github.io/noisy-clippy/option_if_let_else.html#local)*~ | ~*[126](https://dtolnay.github.io/noisy-clippy/option_if_let_else.html#global)*~ | ~*[option_if_let_else](https://rust-lang.github.io/rust-clippy/master/index.html#option_if_let_else)*~ | ~*pedantic*~ nursery 107 | [184](https://dtolnay.github.io/noisy-clippy/not_unsafe_ptr_arg_deref.html#local) | [65](https://dtolnay.github.io/noisy-clippy/not_unsafe_ptr_arg_deref.html#global) | **[not_unsafe_ptr_arg_deref](https://rust-lang.github.io/rust-clippy/master/index.html#not_unsafe_ptr_arg_deref)** | correctness 108 | ~*[177](https://dtolnay.github.io/noisy-clippy/expect_used.html#local)*~ | ~*[71](https://dtolnay.github.io/noisy-clippy/expect_used.html#global)*~ | ~*[expect_used](https://rust-lang.github.io/rust-clippy/master/index.html#expect_used)*~ | restriction 109 | ~*[164](https://dtolnay.github.io/noisy-clippy/struct_excessive_bools.html#local)*~ | ~*[78](https://dtolnay.github.io/noisy-clippy/struct_excessive_bools.html#global)*~ | ~*[struct_excessive_bools](https://rust-lang.github.io/rust-clippy/master/index.html#struct_excessive_bools)*~ | pedantic 110 | [186](https://dtolnay.github.io/noisy-clippy/ptr_offset_with_cast.html#local) | [37](https://dtolnay.github.io/noisy-clippy/ptr_offset_with_cast.html#global) | **[ptr_offset_with_cast](https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast)** | complexity 111 | [115](https://dtolnay.github.io/noisy-clippy/match_like_matches_macro.html#local) | [100](https://dtolnay.github.io/noisy-clippy/match_like_matches_macro.html#global) | **[match_like_matches_macro](https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro)** | style 112 | [160](https://dtolnay.github.io/noisy-clippy/clone_on_copy.html#local) | [54](https://dtolnay.github.io/noisy-clippy/clone_on_copy.html#global) | **[clone_on_copy](https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy)** | complexity 113 | [173](https://dtolnay.github.io/noisy-clippy/if_same_then_else.html#local) | [41](https://dtolnay.github.io/noisy-clippy/if_same_then_else.html#global) | **[if_same_then_else](https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else)** | correctness 114 | [149](https://dtolnay.github.io/noisy-clippy/unnecessary_cast.html#local) | [57](https://dtolnay.github.io/noisy-clippy/unnecessary_cast.html#global) | **[unnecessary_cast](https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast)** | complexity 115 | ~*[86](https://dtolnay.github.io/noisy-clippy/inline_always.html#local)*~ | ~*[117](https://dtolnay.github.io/noisy-clippy/inline_always.html#global)*~ | ~*[inline_always](https://rust-lang.github.io/rust-clippy/master/index.html#inline_always)*~ | pedantic 116 | ~*[153](https://dtolnay.github.io/noisy-clippy/exhaustive_structs.html#local)*~ | ~*[47](https://dtolnay.github.io/noisy-clippy/exhaustive_structs.html#global)*~ | ~*[exhaustive_structs](https://rust-lang.github.io/rust-clippy/master/index.html#exhaustive_structs)*~ | restriction 117 | [150](https://dtolnay.github.io/noisy-clippy/result_unit_err.html#local) | [45](https://dtolnay.github.io/noisy-clippy/result_unit_err.html#global) | **[result_unit_err](https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err)** | style 118 | [128](https://dtolnay.github.io/noisy-clippy/op_ref.html#local) | [65](https://dtolnay.github.io/noisy-clippy/op_ref.html#global) | **[op_ref](https://rust-lang.github.io/rust-clippy/master/index.html#op_ref)** | style 119 | ~*[80](https://dtolnay.github.io/noisy-clippy/missing_docs_in_private_items.html#local)*~ | ~*[107](https://dtolnay.github.io/noisy-clippy/missing_docs_in_private_items.html#global)*~ | ~*[missing_docs_in_private_items](https://rust-lang.github.io/rust-clippy/master/index.html#missing_docs_in_private_items)*~ | restriction 120 | [168](https://dtolnay.github.io/noisy-clippy/derivable_impls.html#local) | [14](https://dtolnay.github.io/noisy-clippy/derivable_impls.html#global) | **[derivable_impls](https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls)** | complexity 121 | ~*[83](https://dtolnay.github.io/noisy-clippy/shadow_unrelated.html#local)*~ | ~*[97](https://dtolnay.github.io/noisy-clippy/shadow_unrelated.html#global)*~ | ~*[shadow_unrelated](https://rust-lang.github.io/rust-clippy/master/index.html#shadow_unrelated)*~ | restriction 122 | [101](https://dtolnay.github.io/noisy-clippy/collapsible_else_if.html#local) | [78](https://dtolnay.github.io/noisy-clippy/collapsible_else_if.html#global) | **[collapsible_else_if](https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_else_if)** | style 123 | [155](https://dtolnay.github.io/noisy-clippy/borrowed_box.html#local) | [23](https://dtolnay.github.io/noisy-clippy/borrowed_box.html#global) | **[borrowed_box](https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box)** | complexity 124 | ~*[37](https://dtolnay.github.io/noisy-clippy/non_ascii_literal.html#local)*~ | ~*[135](https://dtolnay.github.io/noisy-clippy/non_ascii_literal.html#global)*~ | ~*[non_ascii_literal](https://rust-lang.github.io/rust-clippy/master/index.html#non_ascii_literal)*~ | ~*pedantic*~ restriction 125 | [55](https://dtolnay.github.io/noisy-clippy/manual_range_contains.html#local) | [116](https://dtolnay.github.io/noisy-clippy/manual_range_contains.html#global) | **[manual_range_contains](https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains)** | style 126 | ~*0*~ | ~*[171](https://dtolnay.github.io/noisy-clippy/multiple_crate_versions.html#global)*~ | ~*[multiple_crate_versions](https://rust-lang.github.io/rust-clippy/master/index.html#multiple_crate_versions)*~ | cargo 127 | [80](https://dtolnay.github.io/noisy-clippy/bool_assert_comparison.html#local) | [90](https://dtolnay.github.io/noisy-clippy/bool_assert_comparison.html#global) | **[bool_assert_comparison](https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison)** | style 128 | [127](https://dtolnay.github.io/noisy-clippy/assertions_on_constants.html#local) | [42](https://dtolnay.github.io/noisy-clippy/assertions_on_constants.html#global) | **[assertions_on_constants](https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants)** | style 129 | ~*[111](https://dtolnay.github.io/noisy-clippy/panic.html#local)*~ | ~*[58](https://dtolnay.github.io/noisy-clippy/panic.html#global)*~ | ~*[panic](https://rust-lang.github.io/rust-clippy/master/index.html#panic)*~ | restriction 130 | [137](https://dtolnay.github.io/noisy-clippy/declare_interior_mutable_const.html#local) | [31](https://dtolnay.github.io/noisy-clippy/declare_interior_mutable_const.html#global) | **[declare_interior_mutable_const](https://rust-lang.github.io/rust-clippy/master/index.html#declare_interior_mutable_const)** | ~*correctness*~ style 131 | [75](https://dtolnay.github.io/noisy-clippy/unit_arg.html#local) | [91](https://dtolnay.github.io/noisy-clippy/unit_arg.html#global) | **[unit_arg](https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg)** | complexity 132 | ~*[123](https://dtolnay.github.io/noisy-clippy/as_conversions.html#local)*~ | ~*[42](https://dtolnay.github.io/noisy-clippy/as_conversions.html#global)*~ | ~*[as_conversions](https://rust-lang.github.io/rust-clippy/master/index.html#as_conversions)*~ | restriction 133 | ~*[123](https://dtolnay.github.io/noisy-clippy/mutex_atomic.html#local)*~ | ~*[41](https://dtolnay.github.io/noisy-clippy/mutex_atomic.html#global)*~ | ~*[mutex_atomic](https://rust-lang.github.io/rust-clippy/master/index.html#mutex_atomic)*~ | ~*perf*~ restriction 134 | ~*[80](https://dtolnay.github.io/noisy-clippy/non_send_fields_in_send_ty.html#local)*~ | ~*[81](https://dtolnay.github.io/noisy-clippy/non_send_fields_in_send_ty.html#global)*~ | ~*[non_send_fields_in_send_ty](https://rust-lang.github.io/rust-clippy/master/index.html#non_send_fields_in_send_ty)*~ | nursery 135 | ~*[122](https://dtolnay.github.io/noisy-clippy/exhaustive_enums.html#local)*~ | ~*[35](https://dtolnay.github.io/noisy-clippy/exhaustive_enums.html#global)*~ | ~*[exhaustive_enums](https://rust-lang.github.io/rust-clippy/master/index.html#exhaustive_enums)*~ | restriction 136 | ~*[27](https://dtolnay.github.io/noisy-clippy/default_trait_access.html#local)*~ | ~*[129](https://dtolnay.github.io/noisy-clippy/default_trait_access.html#global)*~ | ~*[default_trait_access](https://rust-lang.github.io/rust-clippy/master/index.html#default_trait_access)*~ | pedantic 137 | [47](https://dtolnay.github.io/noisy-clippy/unused_unit.html#local) | [108](https://dtolnay.github.io/noisy-clippy/unused_unit.html#global) | **[unused_unit](https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit)** | style 138 | [126](https://dtolnay.github.io/noisy-clippy/match_single_binding.html#local) | [28](https://dtolnay.github.io/noisy-clippy/match_single_binding.html#global) | **[match_single_binding](https://rust-lang.github.io/rust-clippy/master/index.html#match_single_binding)** | complexity 139 | [86](https://dtolnay.github.io/noisy-clippy/result_large_err.html#local) | [65](https://dtolnay.github.io/noisy-clippy/result_large_err.html#global) | **[result_large_err](https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err)** | perf 140 | [104](https://dtolnay.github.io/noisy-clippy/never_loop.html#local) | [42](https://dtolnay.github.io/noisy-clippy/never_loop.html#global) | **[never_loop](https://rust-lang.github.io/rust-clippy/master/index.html#never_loop)** | correctness 141 | [69](https://dtolnay.github.io/noisy-clippy/field_reassign_with_default.html#local) | [74](https://dtolnay.github.io/noisy-clippy/field_reassign_with_default.html#global) | **[field_reassign_with_default](https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default)** | style 142 | ~*[62](https://dtolnay.github.io/noisy-clippy/used_underscore_binding.html#local)*~ | ~*[80](https://dtolnay.github.io/noisy-clippy/used_underscore_binding.html#global)*~ | ~*[used_underscore_binding](https://rust-lang.github.io/rust-clippy/master/index.html#used_underscore_binding)*~ | pedantic 143 | ~*[60](https://dtolnay.github.io/noisy-clippy/enum_glob_use.html#local)*~ | ~*[80](https://dtolnay.github.io/noisy-clippy/enum_glob_use.html#global)*~ | ~*[enum_glob_use](https://rust-lang.github.io/rust-clippy/master/index.html#enum_glob_use)*~ | pedantic 144 | ~*[37](https://dtolnay.github.io/noisy-clippy/single_match_else.html#local)*~ | ~*[95](https://dtolnay.github.io/noisy-clippy/single_match_else.html#global)*~ | ~*[single_match_else](https://rust-lang.github.io/rust-clippy/master/index.html#single_match_else)*~ | pedantic 145 | [75](https://dtolnay.github.io/noisy-clippy/unusual_byte_groupings.html#local) | [57](https://dtolnay.github.io/noisy-clippy/unusual_byte_groupings.html#global) | **[unusual_byte_groupings](https://rust-lang.github.io/rust-clippy/master/index.html#unusual_byte_groupings)** | style 146 | [37](https://dtolnay.github.io/noisy-clippy/assign_op_pattern.html#local) | [94](https://dtolnay.github.io/noisy-clippy/assign_op_pattern.html#global) | **[assign_op_pattern](https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern)** | style 147 | [11](https://dtolnay.github.io/noisy-clippy/tabs_in_doc_comments.html#local) | [120](https://dtolnay.github.io/noisy-clippy/tabs_in_doc_comments.html#global) | **[tabs_in_doc_comments](https://rust-lang.github.io/rust-clippy/master/index.html#tabs_in_doc_comments)** | style 148 | ~*[35](https://dtolnay.github.io/noisy-clippy/print_stdout.html#local)*~ | ~*[94](https://dtolnay.github.io/noisy-clippy/print_stdout.html#global)*~ | ~*[print_stdout](https://rust-lang.github.io/rust-clippy/master/index.html#print_stdout)*~ | restriction 149 | ~*[80](https://dtolnay.github.io/noisy-clippy/undocumented_unsafe_blocks.html#local)*~ | ~*[47](https://dtolnay.github.io/noisy-clippy/undocumented_unsafe_blocks.html#global)*~ | ~*[undocumented_unsafe_blocks](https://rust-lang.github.io/rust-clippy/master/index.html#undocumented_unsafe_blocks)*~ | restriction 150 | [29](https://dtolnay.github.io/noisy-clippy/redundant_field_names.html#local) | [95](https://dtolnay.github.io/noisy-clippy/redundant_field_names.html#global) | **[redundant_field_names](https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names)** | style 151 | ~*[71](https://dtolnay.github.io/noisy-clippy/missing_inline_in_public_items.html#local)*~ | ~*[52](https://dtolnay.github.io/noisy-clippy/missing_inline_in_public_items.html#global)*~ | ~*[missing_inline_in_public_items](https://rust-lang.github.io/rust-clippy/master/index.html#missing_inline_in_public_items)*~ | restriction 152 | [99](https://dtolnay.github.io/noisy-clippy/mutable_key_type.html#local) | [24](https://dtolnay.github.io/noisy-clippy/mutable_key_type.html#global) | **[mutable_key_type](https://rust-lang.github.io/rust-clippy/master/index.html#mutable_key_type)** | suspicious 153 | ~*[42](https://dtolnay.github.io/noisy-clippy/redundant_pub_crate.html#local)*~ | ~*[81](https://dtolnay.github.io/noisy-clippy/redundant_pub_crate.html#global)*~ | ~*[redundant_pub_crate](https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pub_crate)*~ | nursery 154 | [93](https://dtolnay.github.io/noisy-clippy/reversed_empty_ranges.html#local) | [30](https://dtolnay.github.io/noisy-clippy/reversed_empty_ranges.html#global) | **[reversed_empty_ranges](https://rust-lang.github.io/rust-clippy/master/index.html#reversed_empty_ranges)** | correctness 155 | ~*[32](https://dtolnay.github.io/noisy-clippy/items_after_statements.html#local)*~ | ~*[90](https://dtolnay.github.io/noisy-clippy/items_after_statements.html#global)*~ | ~*[items_after_statements](https://rust-lang.github.io/rust-clippy/master/index.html#items_after_statements)*~ | pedantic 156 | [109](https://dtolnay.github.io/noisy-clippy/map_entry.html#local) | [12](https://dtolnay.github.io/noisy-clippy/map_entry.html#global) | **[map_entry](https://rust-lang.github.io/rust-clippy/master/index.html#map_entry)** | perf 157 | ~*[72](https://dtolnay.github.io/noisy-clippy/or_fun_call.html#local)*~ | ~*[48](https://dtolnay.github.io/noisy-clippy/or_fun_call.html#global)*~ | ~*[or_fun_call](https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call)*~ | nursery 158 | ~*[72](https://dtolnay.github.io/noisy-clippy/transmute_ptr_to_ptr.html#local)*~ | ~*[47](https://dtolnay.github.io/noisy-clippy/transmute_ptr_to_ptr.html#global)*~ | ~*[transmute_ptr_to_ptr](https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr)*~ | pedantic 159 | [108](https://dtolnay.github.io/noisy-clippy/uninit_assumed_init.html#local) | [9](https://dtolnay.github.io/noisy-clippy/uninit_assumed_init.html#global) | **[uninit_assumed_init](https://rust-lang.github.io/rust-clippy/master/index.html#uninit_assumed_init)** | correctness 160 | [67](https://dtolnay.github.io/noisy-clippy/suspicious_op_assign_impl.html#local) | [48](https://dtolnay.github.io/noisy-clippy/suspicious_op_assign_impl.html#global) | **[suspicious_op_assign_impl](https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_op_assign_impl)** | suspicious 161 | ~*[56](https://dtolnay.github.io/noisy-clippy/type_repetition_in_bounds.html#local)*~ | ~*[59](https://dtolnay.github.io/noisy-clippy/type_repetition_in_bounds.html#global)*~ | ~*[type_repetition_in_bounds](https://rust-lang.github.io/rust-clippy/master/index.html#type_repetition_in_bounds)*~ | nursery 162 | [109](https://dtolnay.github.io/noisy-clippy/uninit_vec.html#local) | [6](https://dtolnay.github.io/noisy-clippy/uninit_vec.html#global) | **[uninit_vec](https://rust-lang.github.io/rust-clippy/master/index.html#uninit_vec)** | correctness 163 | [79](https://dtolnay.github.io/noisy-clippy/blocks_in_if_conditions.html#local) | [34](https://dtolnay.github.io/noisy-clippy/blocks_in_if_conditions.html#global) | **[blocks_in_if_conditions](https://rust-lang.github.io/rust-clippy/master/index.html#blocks_in_if_conditions)** | style 164 | ~*[32](https://dtolnay.github.io/noisy-clippy/if_not_else.html#local)*~ | ~*[72](https://dtolnay.github.io/noisy-clippy/if_not_else.html#global)*~ | ~*[if_not_else](https://rust-lang.github.io/rust-clippy/master/index.html#if_not_else)*~ | pedantic 165 | ~*0*~ | ~*[104](https://dtolnay.github.io/noisy-clippy/implicit_return.html#global)*~ | ~*[implicit_return](https://rust-lang.github.io/rust-clippy/master/index.html#implicit_return)*~ | restriction 166 | ~*[65](https://dtolnay.github.io/noisy-clippy/implicit_hasher.html#local)*~ | ~*[37](https://dtolnay.github.io/noisy-clippy/implicit_hasher.html#global)*~ | ~*[implicit_hasher](https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher)*~ | ~*style*~ pedantic 167 | [65](https://dtolnay.github.io/noisy-clippy/zero_prefixed_literal.html#local) | [37](https://dtolnay.github.io/noisy-clippy/zero_prefixed_literal.html#global) | **[zero_prefixed_literal](https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal)** | complexity 168 | [18](https://dtolnay.github.io/noisy-clippy/redundant_static_lifetimes.html#local) | [82](https://dtolnay.github.io/noisy-clippy/redundant_static_lifetimes.html#global) | **[redundant_static_lifetimes](https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes)** | style 169 | [72](https://dtolnay.github.io/noisy-clippy/empty_loop.html#local) | [25](https://dtolnay.github.io/noisy-clippy/empty_loop.html#global) | **[empty_loop](https://rust-lang.github.io/rust-clippy/master/index.html#empty_loop)** | suspicious 170 | ~*[12](https://dtolnay.github.io/noisy-clippy/unseparated_literal_suffix.html#local)*~ | ~*[84](https://dtolnay.github.io/noisy-clippy/unseparated_literal_suffix.html#global)*~ | ~*[unseparated_literal_suffix](https://rust-lang.github.io/rust-clippy/master/index.html#unseparated_literal_suffix)*~ | restriction 171 | [55](https://dtolnay.github.io/noisy-clippy/manual_map.html#local) | [37](https://dtolnay.github.io/noisy-clippy/manual_map.html#global) | **[manual_map](https://rust-lang.github.io/rust-clippy/master/index.html#manual_map)** | style 172 | ~*[74](https://dtolnay.github.io/noisy-clippy/option_option.html#local)*~ | ~*[17](https://dtolnay.github.io/noisy-clippy/option_option.html#global)*~ | ~*[option_option](https://rust-lang.github.io/rust-clippy/master/index.html#option_option)*~ | ~*complexity*~ pedantic 173 | ~*[62](https://dtolnay.github.io/noisy-clippy/range_plus_one.html#local)*~ | ~*[29](https://dtolnay.github.io/noisy-clippy/range_plus_one.html#global)*~ | ~*[range_plus_one](https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one)*~ | ~*complexity*~ pedantic 174 | [81](https://dtolnay.github.io/noisy-clippy/while_let_on_iterator.html#local) | [10](https://dtolnay.github.io/noisy-clippy/while_let_on_iterator.html#global) | **[while_let_on_iterator](https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator)** | style 175 | [86](https://dtolnay.github.io/noisy-clippy/no_effect.html#local) | [4](https://dtolnay.github.io/noisy-clippy/no_effect.html#global) | **[no_effect](https://rust-lang.github.io/rust-clippy/master/index.html#no_effect)** | complexity 176 | [33](https://dtolnay.github.io/noisy-clippy/pedantic.html#local) | [56](https://dtolnay.github.io/noisy-clippy/pedantic.html#global) | **[pedantic](https://rust-lang.github.io/rust-clippy/master/index.html#pedantic)** | unknown 177 | ~*[25](https://dtolnay.github.io/noisy-clippy/match_bool.html#local)*~ | ~*[62](https://dtolnay.github.io/noisy-clippy/match_bool.html#global)*~ | ~*[match_bool](https://rust-lang.github.io/rust-clippy/master/index.html#match_bool)*~ | ~*style*~ pedantic 178 | [46](https://dtolnay.github.io/noisy-clippy/needless_update.html#local) | [41](https://dtolnay.github.io/noisy-clippy/needless_update.html#global) | **[needless_update](https://rust-lang.github.io/rust-clippy/master/index.html#needless_update)** | complexity 179 | [78](https://dtolnay.github.io/noisy-clippy/erasing_op.html#local) | [8](https://dtolnay.github.io/noisy-clippy/erasing_op.html#global) | **[erasing_op](https://rust-lang.github.io/rust-clippy/master/index.html#erasing_op)** | correctness 180 | [59](https://dtolnay.github.io/noisy-clippy/inconsistent_digit_grouping.html#local) | [27](https://dtolnay.github.io/noisy-clippy/inconsistent_digit_grouping.html#global) | **[inconsistent_digit_grouping](https://rust-lang.github.io/rust-clippy/master/index.html#inconsistent_digit_grouping)** | style 181 | [33](https://dtolnay.github.io/noisy-clippy/useless_transmute.html#local) | [52](https://dtolnay.github.io/noisy-clippy/useless_transmute.html#global) | **[useless_transmute](https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute)** | complexity 182 | ~*[68](https://dtolnay.github.io/noisy-clippy/branches_sharing_code.html#local)*~ | ~*[14](https://dtolnay.github.io/noisy-clippy/branches_sharing_code.html#global)*~ | ~*[branches_sharing_code](https://rust-lang.github.io/rust-clippy/master/index.html#branches_sharing_code)*~ | ~*complexity*~ nursery 183 | ~*[41](https://dtolnay.github.io/noisy-clippy/significant_drop_in_scrutinee.html#local)*~ | ~*[41](https://dtolnay.github.io/noisy-clippy/significant_drop_in_scrutinee.html#global)*~ | ~*[significant_drop_in_scrutinee](https://rust-lang.github.io/rust-clippy/master/index.html#significant_drop_in_scrutinee)*~ | ~*suspicious*~ nursery 184 | [75](https://dtolnay.github.io/noisy-clippy/same_item_push.html#local) | [6](https://dtolnay.github.io/noisy-clippy/same_item_push.html#global) | **[same_item_push](https://rust-lang.github.io/rust-clippy/master/index.html#same_item_push)** | style 185 | [65](https://dtolnay.github.io/noisy-clippy/boxed_local.html#local) | [15](https://dtolnay.github.io/noisy-clippy/boxed_local.html#global) | **[boxed_local](https://rust-lang.github.io/rust-clippy/master/index.html#boxed_local)** | perf 186 | [50](https://dtolnay.github.io/noisy-clippy/vec_box.html#local) | [29](https://dtolnay.github.io/noisy-clippy/vec_box.html#global) | **[vec_box](https://rust-lang.github.io/rust-clippy/master/index.html#vec_box)** | complexity 187 | ~*[6](https://dtolnay.github.io/noisy-clippy/uninlined_format_args.html#local)*~ | ~*[72](https://dtolnay.github.io/noisy-clippy/uninlined_format_args.html#global)*~ | ~*[uninlined_format_args](https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args)*~ | pedantic 188 | [50](https://dtolnay.github.io/noisy-clippy/deprecated_cfg_attr.html#local) | [26](https://dtolnay.github.io/noisy-clippy/deprecated_cfg_attr.html#global) | **[deprecated_cfg_attr](https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr)** | complexity 189 | ~*[69](https://dtolnay.github.io/noisy-clippy/suspicious_operation_groupings.html#local)*~ | ~*[6](https://dtolnay.github.io/noisy-clippy/suspicious_operation_groupings.html#global)*~ | ~*[suspicious_operation_groupings](https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_operation_groupings)*~ | ~*style*~ nursery 190 | [65](https://dtolnay.github.io/noisy-clippy/unnecessary_unwrap.html#local) | [10](https://dtolnay.github.io/noisy-clippy/unnecessary_unwrap.html#global) | **[unnecessary_unwrap](https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap)** | complexity 191 | [27](https://dtolnay.github.io/noisy-clippy/borrow_interior_mutable_const.html#local) | [46](https://dtolnay.github.io/noisy-clippy/borrow_interior_mutable_const.html#global) | **[borrow_interior_mutable_const](https://rust-lang.github.io/rust-clippy/master/index.html#borrow_interior_mutable_const)** | ~*correctness*~ style 192 | [27](https://dtolnay.github.io/noisy-clippy/len_zero.html#local) | [45](https://dtolnay.github.io/noisy-clippy/len_zero.html#global) | **[len_zero](https://rust-lang.github.io/rust-clippy/master/index.html#len_zero)** | style 193 | [55](https://dtolnay.github.io/noisy-clippy/question_mark.html#local) | [14](https://dtolnay.github.io/noisy-clippy/question_mark.html#global) | **[question_mark](https://rust-lang.github.io/rust-clippy/master/index.html#question_mark)** | style 194 | ~*[41](https://dtolnay.github.io/noisy-clippy/wildcard_enum_match_arm.html#local)*~ | ~*[28](https://dtolnay.github.io/noisy-clippy/wildcard_enum_match_arm.html#global)*~ | ~*[wildcard_enum_match_arm](https://rust-lang.github.io/rust-clippy/master/index.html#wildcard_enum_match_arm)*~ | restriction 195 | [61](https://dtolnay.github.io/noisy-clippy/absurd_extreme_comparisons.html#local) | [7](https://dtolnay.github.io/noisy-clippy/absurd_extreme_comparisons.html#global) | **[absurd_extreme_comparisons](https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons)** | correctness 196 | [34](https://dtolnay.github.io/noisy-clippy/extra_unused_lifetimes.html#local) | [33](https://dtolnay.github.io/noisy-clippy/extra_unused_lifetimes.html#global) | **[extra_unused_lifetimes](https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes)** | complexity 197 | [27](https://dtolnay.github.io/noisy-clippy/unknown_clippy_lints.html#local) | [40](https://dtolnay.github.io/noisy-clippy/unknown_clippy_lints.html#global) | **[unknown_clippy_lints](https://rust-lang.github.io/rust-clippy/master/index.html#unknown_clippy_lints)** | unknown 198 | [52](https://dtolnay.github.io/noisy-clippy/unnecessary_operation.html#local) | [15](https://dtolnay.github.io/noisy-clippy/unnecessary_operation.html#global) | **[unnecessary_operation](https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation)** | complexity 199 | ~*[35](https://dtolnay.github.io/noisy-clippy/fallible_impl_from.html#local)*~ | ~*[29](https://dtolnay.github.io/noisy-clippy/fallible_impl_from.html#global)*~ | ~*[fallible_impl_from](https://rust-lang.github.io/rust-clippy/master/index.html#fallible_impl_from)*~ | nursery 200 | ~*[47](https://dtolnay.github.io/noisy-clippy/mixed_read_write_in_expression.html#local)*~ | ~*[17](https://dtolnay.github.io/noisy-clippy/mixed_read_write_in_expression.html#global)*~ | ~*[mixed_read_write_in_expression](https://rust-lang.github.io/rust-clippy/master/index.html#mixed_read_write_in_expression)*~ | ~*suspicious*~ restriction 201 | ~*[41](https://dtolnay.github.io/noisy-clippy/unused_async.html#local)*~ | ~*[23](https://dtolnay.github.io/noisy-clippy/unused_async.html#global)*~ | ~*[unused_async](https://rust-lang.github.io/rust-clippy/master/index.html#unused_async)*~ | pedantic 202 | ~*[47](https://dtolnay.github.io/noisy-clippy/rc_buffer.html#local)*~ | ~*[16](https://dtolnay.github.io/noisy-clippy/rc_buffer.html#global)*~ | ~*[rc_buffer](https://rust-lang.github.io/rust-clippy/master/index.html#rc_buffer)*~ | ~*perf*~ restriction 203 | [61](https://dtolnay.github.io/noisy-clippy/cast_ref_to_mut.html#local) | [1](https://dtolnay.github.io/noisy-clippy/cast_ref_to_mut.html#global) | **[cast_ref_to_mut](https://rust-lang.github.io/rust-clippy/master/index.html#cast_ref_to_mut)** | correctness 204 | [29](https://dtolnay.github.io/noisy-clippy/suspicious_else_formatting.html#local) | [33](https://dtolnay.github.io/noisy-clippy/suspicious_else_formatting.html#global) | **[suspicious_else_formatting](https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting)** | suspicious 205 | ~*[21](https://dtolnay.github.io/noisy-clippy/float_arithmetic.html#local)*~ | ~*[40](https://dtolnay.github.io/noisy-clippy/float_arithmetic.html#global)*~ | ~*[float_arithmetic](https://rust-lang.github.io/rust-clippy/master/index.html#float_arithmetic)*~ | restriction 206 | ~*[48](https://dtolnay.github.io/noisy-clippy/match_wild_err_arm.html#local)*~ | ~*[13](https://dtolnay.github.io/noisy-clippy/match_wild_err_arm.html#global)*~ | ~*[match_wild_err_arm](https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm)*~ | ~*style*~ pedantic 207 | ~*[47](https://dtolnay.github.io/noisy-clippy/mut_mut.html#local)*~ | ~*[14](https://dtolnay.github.io/noisy-clippy/mut_mut.html#global)*~ | ~*[mut_mut](https://rust-lang.github.io/rust-clippy/master/index.html#mut_mut)*~ | pedantic 208 | [22](https://dtolnay.github.io/noisy-clippy/single_char_pattern.html#local) | [39](https://dtolnay.github.io/noisy-clippy/single_char_pattern.html#global) | **[single_char_pattern](https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern)** | perf 209 | 0 | [60](https://dtolnay.github.io/noisy-clippy/blanket_clippy_restriction_lints.html#global) | **[blanket_clippy_restriction_lints](https://rust-lang.github.io/rust-clippy/master/index.html#blanket_clippy_restriction_lints)** | suspicious 210 | [18](https://dtolnay.github.io/noisy-clippy/redundant_closure_call.html#local) | [42](https://dtolnay.github.io/noisy-clippy/redundant_closure_call.html#global) | **[redundant_closure_call](https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_call)** | complexity 211 | ~*[16](https://dtolnay.github.io/noisy-clippy/shadow_reuse.html#local)*~ | ~*[44](https://dtolnay.github.io/noisy-clippy/shadow_reuse.html#global)*~ | ~*[shadow_reuse](https://rust-lang.github.io/rust-clippy/master/index.html#shadow_reuse)*~ | restriction 212 | ~*[39](https://dtolnay.github.io/noisy-clippy/integer_division.html#local)*~ | ~*[20](https://dtolnay.github.io/noisy-clippy/integer_division.html#global)*~ | ~*[integer_division](https://rust-lang.github.io/rust-clippy/master/index.html#integer_division)*~ | ~*pedantic*~ restriction 213 | ~*[25](https://dtolnay.github.io/noisy-clippy/semicolon_if_nothing_returned.html#local)*~ | ~*[33](https://dtolnay.github.io/noisy-clippy/semicolon_if_nothing_returned.html#global)*~ | ~*[semicolon_if_nothing_returned](https://rust-lang.github.io/rust-clippy/master/index.html#semicolon_if_nothing_returned)*~ | pedantic 214 | ~*[17](https://dtolnay.github.io/noisy-clippy/return_self_not_must_use.html#local)*~ | ~*[40](https://dtolnay.github.io/noisy-clippy/return_self_not_must_use.html#global)*~ | ~*[return_self_not_must_use](https://rust-lang.github.io/rust-clippy/master/index.html#return_self_not_must_use)*~ | pedantic 215 | [31](https://dtolnay.github.io/noisy-clippy/inherent_to_string.html#local) | [24](https://dtolnay.github.io/noisy-clippy/inherent_to_string.html#global) | **[inherent_to_string](https://rust-lang.github.io/rust-clippy/master/index.html#inherent_to_string)** | style 216 | [26](https://dtolnay.github.io/noisy-clippy/write_with_newline.html#local) | [29](https://dtolnay.github.io/noisy-clippy/write_with_newline.html#global) | **[write_with_newline](https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline)** | style 217 | [51](https://dtolnay.github.io/noisy-clippy/useless_attribute.html#local) | [3](https://dtolnay.github.io/noisy-clippy/useless_attribute.html#global) | **[useless_attribute](https://rust-lang.github.io/rust-clippy/master/index.html#useless_attribute)** | correctness 218 | ~*[19](https://dtolnay.github.io/noisy-clippy/print_stderr.html#local)*~ | ~*[34](https://dtolnay.github.io/noisy-clippy/print_stderr.html#global)*~ | ~*[print_stderr](https://rust-lang.github.io/rust-clippy/master/index.html#print_stderr)*~ | restriction 219 | [37](https://dtolnay.github.io/noisy-clippy/unit_cmp.html#local) | [15](https://dtolnay.github.io/noisy-clippy/unit_cmp.html#global) | **[unit_cmp](https://rust-lang.github.io/rust-clippy/master/index.html#unit_cmp)** | correctness 220 | [36](https://dtolnay.github.io/noisy-clippy/complexity.html#local) | [15](https://dtolnay.github.io/noisy-clippy/complexity.html#global) | **[complexity](https://rust-lang.github.io/rust-clippy/master/index.html#complexity)** | unknown 221 | [37](https://dtolnay.github.io/noisy-clippy/wildcard_in_or_patterns.html#local) | [13](https://dtolnay.github.io/noisy-clippy/wildcard_in_or_patterns.html#global) | **[wildcard_in_or_patterns](https://rust-lang.github.io/rust-clippy/master/index.html#wildcard_in_or_patterns)** | complexity 222 | [41](https://dtolnay.github.io/noisy-clippy/cmp_owned.html#local) | [8](https://dtolnay.github.io/noisy-clippy/cmp_owned.html#global) | **[cmp_owned](https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned)** | perf 223 | ~*[2](https://dtolnay.github.io/noisy-clippy/dbg_macro.html#local)*~ | ~*[47](https://dtolnay.github.io/noisy-clippy/dbg_macro.html#global)*~ | ~*[dbg_macro](https://rust-lang.github.io/rust-clippy/master/index.html#dbg_macro)*~ | restriction 224 | ~*[28](https://dtolnay.github.io/noisy-clippy/match_wildcard_for_single_variants.html#local)*~ | ~*[21](https://dtolnay.github.io/noisy-clippy/match_wildcard_for_single_variants.html#global)*~ | ~*[match_wildcard_for_single_variants](https://rust-lang.github.io/rust-clippy/master/index.html#match_wildcard_for_single_variants)*~ | pedantic 225 | [8](https://dtolnay.github.io/noisy-clippy/single_component_path_imports.html#local) | [41](https://dtolnay.github.io/noisy-clippy/single_component_path_imports.html#global) | **[single_component_path_imports](https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports)** | style 226 | ~*[22](https://dtolnay.github.io/noisy-clippy/bool_to_int_with_if.html#local)*~ | ~*[26](https://dtolnay.github.io/noisy-clippy/bool_to_int_with_if.html#global)*~ | ~*[bool_to_int_with_if](https://rust-lang.github.io/rust-clippy/master/index.html#bool_to_int_with_if)*~ | pedantic 227 | [28](https://dtolnay.github.io/noisy-clippy/manual_non_exhaustive.html#local) | [20](https://dtolnay.github.io/noisy-clippy/manual_non_exhaustive.html#global) | **[manual_non_exhaustive](https://rust-lang.github.io/rust-clippy/master/index.html#manual_non_exhaustive)** | style 228 | ~*[1](https://dtolnay.github.io/noisy-clippy/nonstandard_macro_braces.html#local)*~ | ~*[47](https://dtolnay.github.io/noisy-clippy/nonstandard_macro_braces.html#global)*~ | ~*[nonstandard_macro_braces](https://rust-lang.github.io/rust-clippy/master/index.html#nonstandard_macro_braces)*~ | ~*style*~ nursery 229 | [34](https://dtolnay.github.io/noisy-clippy/needless_bool.html#local) | [13](https://dtolnay.github.io/noisy-clippy/needless_bool.html#global) | **[needless_bool](https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool)** | complexity 230 | [41](https://dtolnay.github.io/noisy-clippy/only_used_in_recursion.html#local) | [6](https://dtolnay.github.io/noisy-clippy/only_used_in_recursion.html#global) | **[only_used_in_recursion](https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion)** | complexity 231 | [36](https://dtolnay.github.io/noisy-clippy/clone_double_ref.html#local) | [10](https://dtolnay.github.io/noisy-clippy/clone_double_ref.html#global) | **[clone_double_ref](https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref)** | correctness 232 | ~*[29](https://dtolnay.github.io/noisy-clippy/future_not_send.html#local)*~ | ~*[17](https://dtolnay.github.io/noisy-clippy/future_not_send.html#global)*~ | ~*[future_not_send](https://rust-lang.github.io/rust-clippy/master/index.html#future_not_send)*~ | nursery 233 | ~*[27](https://dtolnay.github.io/noisy-clippy/map_err_ignore.html#local)*~ | ~*[19](https://dtolnay.github.io/noisy-clippy/map_err_ignore.html#global)*~ | ~*[map_err_ignore](https://rust-lang.github.io/rust-clippy/master/index.html#map_err_ignore)*~ | restriction 234 | ~*[13](https://dtolnay.github.io/noisy-clippy/string_lit_as_bytes.html#local)*~ | ~*[33](https://dtolnay.github.io/noisy-clippy/string_lit_as_bytes.html#global)*~ | ~*[string_lit_as_bytes](https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes)*~ | ~*style*~ nursery 235 | ~*[34](https://dtolnay.github.io/noisy-clippy/trivial_regex.html#local)*~ | ~*[12](https://dtolnay.github.io/noisy-clippy/trivial_regex.html#global)*~ | ~*[trivial_regex](https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex)*~ | ~*style*~ nursery 236 | ~*[23](https://dtolnay.github.io/noisy-clippy/unreachable.html#local)*~ | ~*[23](https://dtolnay.github.io/noisy-clippy/unreachable.html#global)*~ | ~*[unreachable](https://rust-lang.github.io/rust-clippy/master/index.html#unreachable)*~ | restriction 237 | [16](https://dtolnay.github.io/noisy-clippy/let_underscore_drop.html#local) | [29](https://dtolnay.github.io/noisy-clippy/let_underscore_drop.html#global) | **[let_underscore_drop](https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_drop)** | unknown 238 | ~*[25](https://dtolnay.github.io/noisy-clippy/useless_let_if_seq.html#local)*~ | ~*[20](https://dtolnay.github.io/noisy-clippy/useless_let_if_seq.html#global)*~ | ~*[useless_let_if_seq](https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq)*~ | ~*style*~ nursery 239 | [42](https://dtolnay.github.io/noisy-clippy/derive_ord_xor_partial_ord.html#local) | [2](https://dtolnay.github.io/noisy-clippy/derive_ord_xor_partial_ord.html#global) | **[derive_ord_xor_partial_ord](https://rust-lang.github.io/rust-clippy/master/index.html#derive_ord_xor_partial_ord)** | correctness 240 | [39](https://dtolnay.github.io/noisy-clippy/redundant_allocation.html#local) | [5](https://dtolnay.github.io/noisy-clippy/redundant_allocation.html#global) | **[redundant_allocation](https://rust-lang.github.io/rust-clippy/master/index.html#redundant_allocation)** | perf 241 | [43](https://dtolnay.github.io/noisy-clippy/manual_flatten.html#local) | 0 | **[manual_flatten](https://rust-lang.github.io/rust-clippy/master/index.html#manual_flatten)** | complexity 242 | [33](https://dtolnay.github.io/noisy-clippy/partialeq_ne_impl.html#local) | [10](https://dtolnay.github.io/noisy-clippy/partialeq_ne_impl.html#global) | **[partialeq_ne_impl](https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_ne_impl)** | complexity 243 | ~*[22](https://dtolnay.github.io/noisy-clippy/redundant_closure_for_method_calls.html#local)*~ | ~*[21](https://dtolnay.github.io/noisy-clippy/redundant_closure_for_method_calls.html#global)*~ | ~*[redundant_closure_for_method_calls](https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls)*~ | pedantic 244 | ~*[6](https://dtolnay.github.io/noisy-clippy/else_if_without_else.html#local)*~ | ~*[36](https://dtolnay.github.io/noisy-clippy/else_if_without_else.html#global)*~ | ~*[else_if_without_else](https://rust-lang.github.io/rust-clippy/master/index.html#else_if_without_else)*~ | restriction 245 | ~*[34](https://dtolnay.github.io/noisy-clippy/trait_duplication_in_bounds.html#local)*~ | ~*[8](https://dtolnay.github.io/noisy-clippy/trait_duplication_in_bounds.html#global)*~ | ~*[trait_duplication_in_bounds](https://rust-lang.github.io/rust-clippy/master/index.html#trait_duplication_in_bounds)*~ | nursery 246 | ~*[13](https://dtolnay.github.io/noisy-clippy/unnested_or_patterns.html#local)*~ | ~*[29](https://dtolnay.github.io/noisy-clippy/unnested_or_patterns.html#global)*~ | ~*[unnested_or_patterns](https://rust-lang.github.io/rust-clippy/master/index.html#unnested_or_patterns)*~ | ~*complexity*~ pedantic 247 | [34](https://dtolnay.github.io/noisy-clippy/vtable_address_comparisons.html#local) | [8](https://dtolnay.github.io/noisy-clippy/vtable_address_comparisons.html#global) | **[vtable_address_comparisons](https://rust-lang.github.io/rust-clippy/master/index.html#vtable_address_comparisons)** | correctness 248 | ~*[15](https://dtolnay.github.io/noisy-clippy/pattern_type_mismatch.html#local)*~ | ~*[26](https://dtolnay.github.io/noisy-clippy/pattern_type_mismatch.html#global)*~ | ~*[pattern_type_mismatch](https://rust-lang.github.io/rust-clippy/master/index.html#pattern_type_mismatch)*~ | restriction 249 | ~*[12](https://dtolnay.github.io/noisy-clippy/suboptimal_flops.html#local)*~ | ~*[29](https://dtolnay.github.io/noisy-clippy/suboptimal_flops.html#global)*~ | ~*[suboptimal_flops](https://rust-lang.github.io/rust-clippy/master/index.html#suboptimal_flops)*~ | nursery 250 | ~*[20](https://dtolnay.github.io/noisy-clippy/assertions_on_result_states.html#local)*~ | ~*[20](https://dtolnay.github.io/noisy-clippy/assertions_on_result_states.html#global)*~ | ~*[assertions_on_result_states](https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_result_states)*~ | ~*style*~ restriction 251 | [26](https://dtolnay.github.io/noisy-clippy/iter_nth_zero.html#local) | [14](https://dtolnay.github.io/noisy-clippy/iter_nth_zero.html#global) | **[iter_nth_zero](https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero)** | style 252 | ~*[5](https://dtolnay.github.io/noisy-clippy/redundant_else.html#local)*~ | ~*[35](https://dtolnay.github.io/noisy-clippy/redundant_else.html#global)*~ | ~*[redundant_else](https://rust-lang.github.io/rust-clippy/master/index.html#redundant_else)*~ | pedantic 253 | [23](https://dtolnay.github.io/noisy-clippy/needless_late_init.html#local) | [16](https://dtolnay.github.io/noisy-clippy/needless_late_init.html#global) | **[needless_late_init](https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init)** | style 254 | ~*[15](https://dtolnay.github.io/noisy-clippy/manual_assert.html#local)*~ | ~*[23](https://dtolnay.github.io/noisy-clippy/manual_assert.html#global)*~ | ~*[manual_assert](https://rust-lang.github.io/rust-clippy/master/index.html#manual_assert)*~ | pedantic 255 | [25](https://dtolnay.github.io/noisy-clippy/neg_cmp_op_on_partial_ord.html#local) | [13](https://dtolnay.github.io/noisy-clippy/neg_cmp_op_on_partial_ord.html#global) | **[neg_cmp_op_on_partial_ord](https://rust-lang.github.io/rust-clippy/master/index.html#neg_cmp_op_on_partial_ord)** | complexity 256 | ~*[13](https://dtolnay.github.io/noisy-clippy/panic_in_result_fn.html#local)*~ | ~*[25](https://dtolnay.github.io/noisy-clippy/panic_in_result_fn.html#global)*~ | ~*[panic_in_result_fn](https://rust-lang.github.io/rust-clippy/master/index.html#panic_in_result_fn)*~ | restriction 257 | [3](https://dtolnay.github.io/noisy-clippy/precedence.html#local) | [35](https://dtolnay.github.io/noisy-clippy/precedence.html#global) | **[precedence](https://rust-lang.github.io/rust-clippy/master/index.html#precedence)** | complexity 258 | ~*[12](https://dtolnay.github.io/noisy-clippy/unneeded_field_pattern.html#local)*~ | ~*[26](https://dtolnay.github.io/noisy-clippy/unneeded_field_pattern.html#global)*~ | ~*[unneeded_field_pattern](https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern)*~ | restriction 259 | [24](https://dtolnay.github.io/noisy-clippy/deref_addrof.html#local) | [13](https://dtolnay.github.io/noisy-clippy/deref_addrof.html#global) | **[deref_addrof](https://rust-lang.github.io/rust-clippy/master/index.html#deref_addrof)** | complexity 260 | ~*[17](https://dtolnay.github.io/noisy-clippy/ptr_as_ptr.html#local)*~ | ~*[20](https://dtolnay.github.io/noisy-clippy/ptr_as_ptr.html#global)*~ | ~*[ptr_as_ptr](https://rust-lang.github.io/rust-clippy/master/index.html#ptr_as_ptr)*~ | pedantic 261 | ~*[16](https://dtolnay.github.io/noisy-clippy/use_debug.html#local)*~ | ~*[21](https://dtolnay.github.io/noisy-clippy/use_debug.html#global)*~ | ~*[use_debug](https://rust-lang.github.io/rust-clippy/master/index.html#use_debug)*~ | restriction 262 | [29](https://dtolnay.github.io/noisy-clippy/while_let_loop.html#local) | [8](https://dtolnay.github.io/noisy-clippy/while_let_loop.html#global) | **[while_let_loop](https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop)** | complexity 263 | [11](https://dtolnay.github.io/noisy-clippy/pub_enum_variant_names.html#local) | [25](https://dtolnay.github.io/noisy-clippy/pub_enum_variant_names.html#global) | **[pub_enum_variant_names](https://rust-lang.github.io/rust-clippy/master/index.html#pub_enum_variant_names)** | deprecated 264 | [33](https://dtolnay.github.io/noisy-clippy/unnecessary_to_owned.html#local) | [3](https://dtolnay.github.io/noisy-clippy/unnecessary_to_owned.html#global) | **[unnecessary_to_owned](https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned)** | perf 265 | [25](https://dtolnay.github.io/noisy-clippy/map_clone.html#local) | [10](https://dtolnay.github.io/noisy-clippy/map_clone.html#global) | **[map_clone](https://rust-lang.github.io/rust-clippy/master/index.html#map_clone)** | style 266 | ~*[18](https://dtolnay.github.io/noisy-clippy/empty_enum.html#local)*~ | ~*[16](https://dtolnay.github.io/noisy-clippy/empty_enum.html#global)*~ | ~*[empty_enum](https://rust-lang.github.io/rust-clippy/master/index.html#empty_enum)*~ | pedantic 267 | [11](https://dtolnay.github.io/noisy-clippy/option_map_unit_fn.html#local) | [23](https://dtolnay.github.io/noisy-clippy/option_map_unit_fn.html#global) | **[option_map_unit_fn](https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn)** | complexity 268 | ~*[31](https://dtolnay.github.io/noisy-clippy/ref_option_ref.html#local)*~ | ~*[3](https://dtolnay.github.io/noisy-clippy/ref_option_ref.html#global)*~ | ~*[ref_option_ref](https://rust-lang.github.io/rust-clippy/master/index.html#ref_option_ref)*~ | pedantic 269 | [18](https://dtolnay.github.io/noisy-clippy/manual_strip.html#local) | [15](https://dtolnay.github.io/noisy-clippy/manual_strip.html#global) | **[manual_strip](https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip)** | complexity 270 | [23](https://dtolnay.github.io/noisy-clippy/unused_io_amount.html#local) | [10](https://dtolnay.github.io/noisy-clippy/unused_io_amount.html#global) | **[unused_io_amount](https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount)** | correctness 271 | [5](https://dtolnay.github.io/noisy-clippy/style.html#local) | [27](https://dtolnay.github.io/noisy-clippy/style.html#global) | **[style](https://rust-lang.github.io/rust-clippy/master/index.html#style)** | unknown 272 | ~*[19](https://dtolnay.github.io/noisy-clippy/unimplemented.html#local)*~ | ~*[13](https://dtolnay.github.io/noisy-clippy/unimplemented.html#global)*~ | ~*[unimplemented](https://rust-lang.github.io/rust-clippy/master/index.html#unimplemented)*~ | restriction 273 | [31](https://dtolnay.github.io/noisy-clippy/drop_bounds.html#local) | 0 | **[drop_bounds](https://rust-lang.github.io/rust-clippy/master/index.html#drop_bounds)** | unknown 274 | ~*[8](https://dtolnay.github.io/noisy-clippy/expl_impl_clone_on_copy.html#local)*~ | ~*[23](https://dtolnay.github.io/noisy-clippy/expl_impl_clone_on_copy.html#global)*~ | ~*[expl_impl_clone_on_copy](https://rust-lang.github.io/rust-clippy/master/index.html#expl_impl_clone_on_copy)*~ | pedantic 275 | [18](https://dtolnay.github.io/noisy-clippy/int_plus_one.html#local) | [13](https://dtolnay.github.io/noisy-clippy/int_plus_one.html#global) | **[int_plus_one](https://rust-lang.github.io/rust-clippy/master/index.html#int_plus_one)** | complexity 276 | [18](https://dtolnay.github.io/noisy-clippy/just_underscores_and_digits.html#local) | [13](https://dtolnay.github.io/noisy-clippy/just_underscores_and_digits.html#global) | **[just_underscores_and_digits](https://rust-lang.github.io/rust-clippy/master/index.html#just_underscores_and_digits)** | style 277 | [10](https://dtolnay.github.io/noisy-clippy/toplevel_ref_arg.html#local) | [21](https://dtolnay.github.io/noisy-clippy/toplevel_ref_arg.html#global) | **[toplevel_ref_arg](https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg)** | style 278 | [26](https://dtolnay.github.io/noisy-clippy/collapsible_match.html#local) | [4](https://dtolnay.github.io/noisy-clippy/collapsible_match.html#global) | **[collapsible_match](https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match)** | style 279 | [23](https://dtolnay.github.io/noisy-clippy/explicit_counter_loop.html#local) | [7](https://dtolnay.github.io/noisy-clippy/explicit_counter_loop.html#global) | **[explicit_counter_loop](https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop)** | complexity 280 | [28](https://dtolnay.github.io/noisy-clippy/needless_option_as_deref.html#local) | [2](https://dtolnay.github.io/noisy-clippy/needless_option_as_deref.html#global) | **[needless_option_as_deref](https://rust-lang.github.io/rust-clippy/master/index.html#needless_option_as_deref)** | complexity 281 | [29](https://dtolnay.github.io/noisy-clippy/neg_multiply.html#local) | [1](https://dtolnay.github.io/noisy-clippy/neg_multiply.html#global) | **[neg_multiply](https://rust-lang.github.io/rust-clippy/master/index.html#neg_multiply)** | style 282 | ~*[28](https://dtolnay.github.io/noisy-clippy/stable_sort_primitive.html#local)*~ | ~*[2](https://dtolnay.github.io/noisy-clippy/stable_sort_primitive.html#global)*~ | ~*[stable_sort_primitive](https://rust-lang.github.io/rust-clippy/master/index.html#stable_sort_primitive)*~ | pedantic 283 | [22](https://dtolnay.github.io/noisy-clippy/await_holding_lock.html#local) | [7](https://dtolnay.github.io/noisy-clippy/await_holding_lock.html#global) | **[await_holding_lock](https://rust-lang.github.io/rust-clippy/master/index.html#await_holding_lock)** | ~*correctness*~ suspicious 284 | [25](https://dtolnay.github.io/noisy-clippy/box_collection.html#local) | [4](https://dtolnay.github.io/noisy-clippy/box_collection.html#global) | **[box_collection](https://rust-lang.github.io/rust-clippy/master/index.html#box_collection)** | perf 285 | [18](https://dtolnay.github.io/noisy-clippy/expect_fun_call.html#local) | [11](https://dtolnay.github.io/noisy-clippy/expect_fun_call.html#global) | **[expect_fun_call](https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call)** | perf 286 | [27](https://dtolnay.github.io/noisy-clippy/into_iter_on_ref.html#local) | [2](https://dtolnay.github.io/noisy-clippy/into_iter_on_ref.html#global) | **[into_iter_on_ref](https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref)** | style 287 | ~*[9](https://dtolnay.github.io/noisy-clippy/try_err.html#local)*~ | ~*[20](https://dtolnay.github.io/noisy-clippy/try_err.html#global)*~ | ~*[try_err](https://rust-lang.github.io/rust-clippy/master/index.html#try_err)*~ | ~*style*~ restriction 288 | ~*[21](https://dtolnay.github.io/noisy-clippy/unsafe_derive_deserialize.html#local)*~ | ~*[8](https://dtolnay.github.io/noisy-clippy/unsafe_derive_deserialize.html#global)*~ | ~*[unsafe_derive_deserialize](https://rust-lang.github.io/rust-clippy/master/index.html#unsafe_derive_deserialize)*~ | pedantic 289 | ~*0*~ | ~*[28](https://dtolnay.github.io/noisy-clippy/cargo_common_metadata.html#global)*~ | ~*[cargo_common_metadata](https://rust-lang.github.io/rust-clippy/master/index.html#cargo_common_metadata)*~ | cargo 290 | [18](https://dtolnay.github.io/noisy-clippy/drop_copy.html#local) | [10](https://dtolnay.github.io/noisy-clippy/drop_copy.html#global) | **[drop_copy](https://rust-lang.github.io/rust-clippy/master/index.html#drop_copy)** | correctness 291 | [15](https://dtolnay.github.io/noisy-clippy/forget_copy.html#local) | [13](https://dtolnay.github.io/noisy-clippy/forget_copy.html#global) | **[forget_copy](https://rust-lang.github.io/rust-clippy/master/index.html#forget_copy)** | correctness 292 | ~*[21](https://dtolnay.github.io/noisy-clippy/format_push_string.html#local)*~ | ~*[7](https://dtolnay.github.io/noisy-clippy/format_push_string.html#global)*~ | ~*[format_push_string](https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string)*~ | ~*perf*~ restriction 293 | [14](https://dtolnay.github.io/noisy-clippy/filter_map.html#local) | [13](https://dtolnay.github.io/noisy-clippy/filter_map.html#global) | **[filter_map](https://rust-lang.github.io/rust-clippy/master/index.html#filter_map)** | deprecated 294 | [26](https://dtolnay.github.io/noisy-clippy/format_in_format_args.html#local) | [1](https://dtolnay.github.io/noisy-clippy/format_in_format_args.html#global) | **[format_in_format_args](https://rust-lang.github.io/rust-clippy/master/index.html#format_in_format_args)** | perf 295 | [8](https://dtolnay.github.io/noisy-clippy/match_ref_pats.html#local) | [19](https://dtolnay.github.io/noisy-clippy/match_ref_pats.html#global) | **[match_ref_pats](https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats)** | style 296 | [12](https://dtolnay.github.io/noisy-clippy/nursery.html#local) | [15](https://dtolnay.github.io/noisy-clippy/nursery.html#global) | **[nursery](https://rust-lang.github.io/rust-clippy/master/index.html#nursery)** | unknown 297 | [16](https://dtolnay.github.io/noisy-clippy/explicit_auto_deref.html#local) | [10](https://dtolnay.github.io/noisy-clippy/explicit_auto_deref.html#global) | **[explicit_auto_deref](https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref)** | complexity 298 | ~*[21](https://dtolnay.github.io/noisy-clippy/mem_forget.html#local)*~ | ~*[5](https://dtolnay.github.io/noisy-clippy/mem_forget.html#global)*~ | ~*[mem_forget](https://rust-lang.github.io/rust-clippy/master/index.html#mem_forget)*~ | restriction 299 | [14](https://dtolnay.github.io/noisy-clippy/print_literal.html#local) | [12](https://dtolnay.github.io/noisy-clippy/print_literal.html#global) | **[print_literal](https://rust-lang.github.io/rust-clippy/master/index.html#print_literal)** | style 300 | [11](https://dtolnay.github.io/noisy-clippy/useless_format.html#local) | [15](https://dtolnay.github.io/noisy-clippy/useless_format.html#global) | **[useless_format](https://rust-lang.github.io/rust-clippy/master/index.html#useless_format)** | complexity 301 | ~*[8](https://dtolnay.github.io/noisy-clippy/checked_conversions.html#local)*~ | ~*[17](https://dtolnay.github.io/noisy-clippy/checked_conversions.html#global)*~ | ~*[checked_conversions](https://rust-lang.github.io/rust-clippy/master/index.html#checked_conversions)*~ | pedantic 302 | ~*[2](https://dtolnay.github.io/noisy-clippy/clone_on_ref_ptr.html#local)*~ | ~*[23](https://dtolnay.github.io/noisy-clippy/clone_on_ref_ptr.html#global)*~ | ~*[clone_on_ref_ptr](https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_ref_ptr)*~ | restriction 303 | [14](https://dtolnay.github.io/noisy-clippy/manual_async_fn.html#local) | [11](https://dtolnay.github.io/noisy-clippy/manual_async_fn.html#global) | **[manual_async_fn](https://rust-lang.github.io/rust-clippy/master/index.html#manual_async_fn)** | style 304 | ~*[13](https://dtolnay.github.io/noisy-clippy/borrow_as_ptr.html#local)*~ | ~*[11](https://dtolnay.github.io/noisy-clippy/borrow_as_ptr.html#global)*~ | ~*[borrow_as_ptr](https://rust-lang.github.io/rust-clippy/master/index.html#borrow_as_ptr)*~ | pedantic 305 | ~*0*~ | ~*[24](https://dtolnay.github.io/noisy-clippy/default_numeric_fallback.html#global)*~ | ~*[default_numeric_fallback](https://rust-lang.github.io/rust-clippy/master/index.html#default_numeric_fallback)*~ | restriction 306 | [11](https://dtolnay.github.io/noisy-clippy/needless_question_mark.html#local) | [13](https://dtolnay.github.io/noisy-clippy/needless_question_mark.html#global) | **[needless_question_mark](https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark)** | complexity 307 | [16](https://dtolnay.github.io/noisy-clippy/redundant_slicing.html#local) | [8](https://dtolnay.github.io/noisy-clippy/redundant_slicing.html#global) | **[redundant_slicing](https://rust-lang.github.io/rust-clippy/master/index.html#redundant_slicing)** | complexity 308 | [4](https://dtolnay.github.io/noisy-clippy/renamed_and_removed_lints.html#local) | [20](https://dtolnay.github.io/noisy-clippy/renamed_and_removed_lints.html#global) | **[renamed_and_removed_lints](https://rust-lang.github.io/rust-clippy/master/index.html#renamed_and_removed_lints)** | unknown 309 | [21](https://dtolnay.github.io/noisy-clippy/self_named_constructors.html#local) | [3](https://dtolnay.github.io/noisy-clippy/self_named_constructors.html#global) | **[self_named_constructors](https://rust-lang.github.io/rust-clippy/master/index.html#self_named_constructors)** | style 310 | [13](https://dtolnay.github.io/noisy-clippy/suspicious_map.html#local) | [11](https://dtolnay.github.io/noisy-clippy/suspicious_map.html#global) | **[suspicious_map](https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_map)** | suspicious 311 | ~*[20](https://dtolnay.github.io/noisy-clippy/unwrap_in_result.html#local)*~ | ~*[4](https://dtolnay.github.io/noisy-clippy/unwrap_in_result.html#global)*~ | ~*[unwrap_in_result](https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_in_result)*~ | restriction 312 | [4](https://dtolnay.github.io/noisy-clippy/await_holding_refcell_ref.html#local) | [19](https://dtolnay.github.io/noisy-clippy/await_holding_refcell_ref.html#global) | **[await_holding_refcell_ref](https://rust-lang.github.io/rust-clippy/master/index.html#await_holding_refcell_ref)** | ~*correctness*~ suspicious 313 | [11](https://dtolnay.github.io/noisy-clippy/restriction.html#local) | [12](https://dtolnay.github.io/noisy-clippy/restriction.html#global) | **[restriction](https://rust-lang.github.io/rust-clippy/master/index.html#restriction)** | unknown 314 | ~*[3](https://dtolnay.github.io/noisy-clippy/map_unwrap_or.html#local)*~ | ~*[19](https://dtolnay.github.io/noisy-clippy/map_unwrap_or.html#global)*~ | ~*[map_unwrap_or](https://rust-lang.github.io/rust-clippy/master/index.html#map_unwrap_or)*~ | pedantic 315 | ~*[22](https://dtolnay.github.io/noisy-clippy/needless_continue.html#local)*~ | ~*0*~ | ~*[needless_continue](https://rust-lang.github.io/rust-clippy/master/index.html#needless_continue)*~ | pedantic 316 | ~*[9](https://dtolnay.github.io/noisy-clippy/no_effect_underscore_binding.html#local)*~ | ~*[13](https://dtolnay.github.io/noisy-clippy/no_effect_underscore_binding.html#global)*~ | ~*[no_effect_underscore_binding](https://rust-lang.github.io/rust-clippy/master/index.html#no_effect_underscore_binding)*~ | pedantic 317 | [12](https://dtolnay.github.io/noisy-clippy/transmute_ptr_to_ref.html#local) | [10](https://dtolnay.github.io/noisy-clippy/transmute_ptr_to_ref.html#global) | **[transmute_ptr_to_ref](https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref)** | complexity 318 | ~*[6](https://dtolnay.github.io/noisy-clippy/from_iter_instead_of_collect.html#local)*~ | ~*[15](https://dtolnay.github.io/noisy-clippy/from_iter_instead_of_collect.html#global)*~ | ~*[from_iter_instead_of_collect](https://rust-lang.github.io/rust-clippy/master/index.html#from_iter_instead_of_collect)*~ | pedantic 319 | ~*[3](https://dtolnay.github.io/noisy-clippy/match_on_vec_items.html#local)*~ | ~*[18](https://dtolnay.github.io/noisy-clippy/match_on_vec_items.html#global)*~ | ~*[match_on_vec_items](https://rust-lang.github.io/rust-clippy/master/index.html#match_on_vec_items)*~ | pedantic 320 | ~*[3](https://dtolnay.github.io/noisy-clippy/shadow_same.html#local)*~ | ~*[18](https://dtolnay.github.io/noisy-clippy/shadow_same.html#global)*~ | ~*[shadow_same](https://rust-lang.github.io/rust-clippy/master/index.html#shadow_same)*~ | restriction 321 | [14](https://dtolnay.github.io/noisy-clippy/unnecessary_mut_passed.html#local) | [7](https://dtolnay.github.io/noisy-clippy/unnecessary_mut_passed.html#global) | **[unnecessary_mut_passed](https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed)** | style 322 | ~*[2](https://dtolnay.github.io/noisy-clippy/inconsistent_struct_constructor.html#local)*~ | ~*[18](https://dtolnay.github.io/noisy-clippy/inconsistent_struct_constructor.html#global)*~ | ~*[inconsistent_struct_constructor](https://rust-lang.github.io/rust-clippy/master/index.html#inconsistent_struct_constructor)*~ | pedantic 323 | [20](https://dtolnay.github.io/noisy-clippy/let_underscore_future.html#local) | 0 | **[let_underscore_future](https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_future)** | suspicious 324 | ~*[5](https://dtolnay.github.io/noisy-clippy/std_instead_of_core.html#local)*~ | ~*[15](https://dtolnay.github.io/noisy-clippy/std_instead_of_core.html#global)*~ | ~*[std_instead_of_core](https://rust-lang.github.io/rust-clippy/master/index.html#std_instead_of_core)*~ | restriction 325 | [15](https://dtolnay.github.io/noisy-clippy/manual_swap.html#local) | [4](https://dtolnay.github.io/noisy-clippy/manual_swap.html#global) | **[manual_swap](https://rust-lang.github.io/rust-clippy/master/index.html#manual_swap)** | complexity 326 | ~*[1](https://dtolnay.github.io/noisy-clippy/mod_module_files.html#local)*~ | ~*[18](https://dtolnay.github.io/noisy-clippy/mod_module_files.html#global)*~ | ~*[mod_module_files](https://rust-lang.github.io/rust-clippy/master/index.html#mod_module_files)*~ | restriction 327 | ~*[4](https://dtolnay.github.io/noisy-clippy/verbose_bit_mask.html#local)*~ | ~*[15](https://dtolnay.github.io/noisy-clippy/verbose_bit_mask.html#global)*~ | ~*[verbose_bit_mask](https://rust-lang.github.io/rust-clippy/master/index.html#verbose_bit_mask)*~ | ~*style*~ pedantic 328 | ~*[13](https://dtolnay.github.io/noisy-clippy/arithmetic_side_effects.html#local)*~ | ~*[5](https://dtolnay.github.io/noisy-clippy/arithmetic_side_effects.html#global)*~ | ~*[arithmetic_side_effects](https://rust-lang.github.io/rust-clippy/master/index.html#arithmetic_side_effects)*~ | restriction 329 | [13](https://dtolnay.github.io/noisy-clippy/diverging_sub_expression.html#local) | [5](https://dtolnay.github.io/noisy-clippy/diverging_sub_expression.html#global) | **[diverging_sub_expression](https://rust-lang.github.io/rust-clippy/master/index.html#diverging_sub_expression)** | complexity 330 | ~*[11](https://dtolnay.github.io/noisy-clippy/exit.html#local)*~ | ~*[7](https://dtolnay.github.io/noisy-clippy/exit.html#global)*~ | ~*[exit](https://rust-lang.github.io/rust-clippy/master/index.html#exit)*~ | restriction 331 | [18](https://dtolnay.github.io/noisy-clippy/inherent_to_string_shadow_display.html#local) | 0 | **[inherent_to_string_shadow_display](https://rust-lang.github.io/rust-clippy/master/index.html#inherent_to_string_shadow_display)** | correctness 332 | [11](https://dtolnay.github.io/noisy-clippy/option_as_ref_deref.html#local) | [7](https://dtolnay.github.io/noisy-clippy/option_as_ref_deref.html#global) | **[option_as_ref_deref](https://rust-lang.github.io/rust-clippy/master/index.html#option_as_ref_deref)** | complexity 333 | ~*[15](https://dtolnay.github.io/noisy-clippy/case_sensitive_file_extension_comparisons.html#local)*~ | ~*[2](https://dtolnay.github.io/noisy-clippy/case_sensitive_file_extension_comparisons.html#global)*~ | ~*[case_sensitive_file_extension_comparisons](https://rust-lang.github.io/rust-clippy/master/index.html#case_sensitive_file_extension_comparisons)*~ | pedantic 334 | [14](https://dtolnay.github.io/noisy-clippy/drop_ref.html#local) | [3](https://dtolnay.github.io/noisy-clippy/drop_ref.html#global) | **[drop_ref](https://rust-lang.github.io/rust-clippy/master/index.html#drop_ref)** | correctness 335 | [11](https://dtolnay.github.io/noisy-clippy/from_str_radix_10.html#local) | [6](https://dtolnay.github.io/noisy-clippy/from_str_radix_10.html#global) | **[from_str_radix_10](https://rust-lang.github.io/rust-clippy/master/index.html#from_str_radix_10)** | style 336 | ~*[10](https://dtolnay.github.io/noisy-clippy/iter_not_returning_iterator.html#local)*~ | ~*[7](https://dtolnay.github.io/noisy-clippy/iter_not_returning_iterator.html#global)*~ | ~*[iter_not_returning_iterator](https://rust-lang.github.io/rust-clippy/master/index.html#iter_not_returning_iterator)*~ | pedantic 337 | [16](https://dtolnay.github.io/noisy-clippy/match_overlapping_arm.html#local) | [1](https://dtolnay.github.io/noisy-clippy/match_overlapping_arm.html#global) | **[match_overlapping_arm](https://rust-lang.github.io/rust-clippy/master/index.html#match_overlapping_arm)** | style 338 | ~*[4](https://dtolnay.github.io/noisy-clippy/single_char_lifetime_names.html#local)*~ | ~*[13](https://dtolnay.github.io/noisy-clippy/single_char_lifetime_names.html#global)*~ | ~*[single_char_lifetime_names](https://rust-lang.github.io/rust-clippy/master/index.html#single_char_lifetime_names)*~ | restriction 339 | [10](https://dtolnay.github.io/noisy-clippy/double_parens.html#local) | [6](https://dtolnay.github.io/noisy-clippy/double_parens.html#global) | **[double_parens](https://rust-lang.github.io/rust-clippy/master/index.html#double_parens)** | complexity 340 | [3](https://dtolnay.github.io/noisy-clippy/forget_non_drop.html#local) | [13](https://dtolnay.github.io/noisy-clippy/forget_non_drop.html#global) | **[forget_non_drop](https://rust-lang.github.io/rust-clippy/master/index.html#forget_non_drop)** | suspicious 341 | ~*[6](https://dtolnay.github.io/noisy-clippy/multiple_inherent_impl.html#local)*~ | ~*[10](https://dtolnay.github.io/noisy-clippy/multiple_inherent_impl.html#global)*~ | ~*[multiple_inherent_impl](https://rust-lang.github.io/rust-clippy/master/index.html#multiple_inherent_impl)*~ | restriction 342 | ~*0*~ | ~*[16](https://dtolnay.github.io/noisy-clippy/pub_use.html#global)*~ | ~*[pub_use](https://rust-lang.github.io/rust-clippy/master/index.html#pub_use)*~ | restriction 343 | [3](https://dtolnay.github.io/noisy-clippy/borrow_deref_ref.html#local) | [12](https://dtolnay.github.io/noisy-clippy/borrow_deref_ref.html#global) | **[borrow_deref_ref](https://rust-lang.github.io/rust-clippy/master/index.html#borrow_deref_ref)** | complexity 344 | ~*[12](https://dtolnay.github.io/noisy-clippy/explicit_deref_methods.html#local)*~ | ~*[3](https://dtolnay.github.io/noisy-clippy/explicit_deref_methods.html#global)*~ | ~*[explicit_deref_methods](https://rust-lang.github.io/rust-clippy/master/index.html#explicit_deref_methods)*~ | pedantic 345 | ~*[9](https://dtolnay.github.io/noisy-clippy/todo.html#local)*~ | ~*[6](https://dtolnay.github.io/noisy-clippy/todo.html#global)*~ | ~*[todo](https://rust-lang.github.io/rust-clippy/master/index.html#todo)*~ | restriction 346 | [11](https://dtolnay.github.io/noisy-clippy/write_literal.html#local) | [4](https://dtolnay.github.io/noisy-clippy/write_literal.html#global) | **[write_literal](https://rust-lang.github.io/rust-clippy/master/index.html#write_literal)** | style 347 | ~*[12](https://dtolnay.github.io/noisy-clippy/zero_sized_map_values.html#local)*~ | ~*[3](https://dtolnay.github.io/noisy-clippy/zero_sized_map_values.html#global)*~ | ~*[zero_sized_map_values](https://rust-lang.github.io/rust-clippy/master/index.html#zero_sized_map_values)*~ | pedantic 348 | [10](https://dtolnay.github.io/noisy-clippy/manual_filter_map.html#local) | [4](https://dtolnay.github.io/noisy-clippy/manual_filter_map.html#global) | **[manual_filter_map](https://rust-lang.github.io/rust-clippy/master/index.html#manual_filter_map)** | complexity 349 | [12](https://dtolnay.github.io/noisy-clippy/useless_vec.html#local) | [2](https://dtolnay.github.io/noisy-clippy/useless_vec.html#global) | **[useless_vec](https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec)** | perf 350 | [8](https://dtolnay.github.io/noisy-clippy/zero_ptr.html#local) | [6](https://dtolnay.github.io/noisy-clippy/zero_ptr.html#global) | **[zero_ptr](https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr)** | style 351 | [13](https://dtolnay.github.io/noisy-clippy/async_yields_async.html#local) | 0 | **[async_yields_async](https://rust-lang.github.io/rust-clippy/master/index.html#async_yields_async)** | correctness 352 | [9](https://dtolnay.github.io/noisy-clippy/box_default.html#local) | [4](https://dtolnay.github.io/noisy-clippy/box_default.html#global) | **[box_default](https://rust-lang.github.io/rust-clippy/master/index.html#box_default)** | perf 353 | [12](https://dtolnay.github.io/noisy-clippy/crate_in_macro_def.html#local) | [1](https://dtolnay.github.io/noisy-clippy/crate_in_macro_def.html#global) | **[crate_in_macro_def](https://rust-lang.github.io/rust-clippy/master/index.html#crate_in_macro_def)** | suspicious 354 | [7](https://dtolnay.github.io/noisy-clippy/drop_non_drop.html#local) | [6](https://dtolnay.github.io/noisy-clippy/drop_non_drop.html#global) | **[drop_non_drop](https://rust-lang.github.io/rust-clippy/master/index.html#drop_non_drop)** | suspicious 355 | ~*[2](https://dtolnay.github.io/noisy-clippy/explicit_iter_loop.html#local)*~ | ~*[11](https://dtolnay.github.io/noisy-clippy/explicit_iter_loop.html#global)*~ | ~*[explicit_iter_loop](https://rust-lang.github.io/rust-clippy/master/index.html#explicit_iter_loop)*~ | pedantic 356 | [6](https://dtolnay.github.io/noisy-clippy/get_first.html#local) | [7](https://dtolnay.github.io/noisy-clippy/get_first.html#global) | **[get_first](https://rust-lang.github.io/rust-clippy/master/index.html#get_first)** | style 357 | ~*[8](https://dtolnay.github.io/noisy-clippy/manual_clamp.html#local)*~ | ~*[5](https://dtolnay.github.io/noisy-clippy/manual_clamp.html#global)*~ | ~*[manual_clamp](https://rust-lang.github.io/rust-clippy/master/index.html#manual_clamp)*~ | ~*complexity*~ nursery 358 | [13](https://dtolnay.github.io/noisy-clippy/manual_split_once.html#local) | 0 | **[manual_split_once](https://rust-lang.github.io/rust-clippy/master/index.html#manual_split_once)** | complexity 359 | ~*0*~ | ~*[13](https://dtolnay.github.io/noisy-clippy/separated_literal_suffix.html#global)*~ | ~*[separated_literal_suffix](https://rust-lang.github.io/rust-clippy/master/index.html#separated_literal_suffix)*~ | restriction 360 | [11](https://dtolnay.github.io/noisy-clippy/single_element_loop.html#local) | [2](https://dtolnay.github.io/noisy-clippy/single_element_loop.html#global) | **[single_element_loop](https://rust-lang.github.io/rust-clippy/master/index.html#single_element_loop)** | complexity 361 | [7](https://dtolnay.github.io/noisy-clippy/iter_cloned_collect.html#local) | [5](https://dtolnay.github.io/noisy-clippy/iter_cloned_collect.html#global) | **[iter_cloned_collect](https://rust-lang.github.io/rust-clippy/master/index.html#iter_cloned_collect)** | style 362 | [8](https://dtolnay.github.io/noisy-clippy/manual_memcpy.html#local) | [4](https://dtolnay.github.io/noisy-clippy/manual_memcpy.html#global) | **[manual_memcpy](https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy)** | perf 363 | [12](https://dtolnay.github.io/noisy-clippy/modulo_one.html#local) | 0 | **[modulo_one](https://rust-lang.github.io/rust-clippy/master/index.html#modulo_one)** | correctness 364 | [11](https://dtolnay.github.io/noisy-clippy/arithmetic.html#local) | 0 | **[arithmetic](https://rust-lang.github.io/rust-clippy/master/index.html#arithmetic)** | unknown 365 | ~*[10](https://dtolnay.github.io/noisy-clippy/string_slice.html#local)*~ | ~*[1](https://dtolnay.github.io/noisy-clippy/string_slice.html#global)*~ | ~*[string_slice](https://rust-lang.github.io/rust-clippy/master/index.html#string_slice)*~ | restriction 366 | [5](https://dtolnay.github.io/noisy-clippy/cargo.html#local) | [5](https://dtolnay.github.io/noisy-clippy/cargo.html#global) | **[cargo](https://rust-lang.github.io/rust-clippy/master/index.html#cargo)** | unknown 367 | [10](https://dtolnay.github.io/noisy-clippy/filter_next.html#local) | 0 | **[filter_next](https://rust-lang.github.io/rust-clippy/master/index.html#filter_next)** | complexity 368 | [9](https://dtolnay.github.io/noisy-clippy/fn_address_comparisons.html#local) | [1](https://dtolnay.github.io/noisy-clippy/fn_address_comparisons.html#global) | **[fn_address_comparisons](https://rust-lang.github.io/rust-clippy/master/index.html#fn_address_comparisons)** | correctness 369 | [9](https://dtolnay.github.io/noisy-clippy/forget_ref.html#local) | [1](https://dtolnay.github.io/noisy-clippy/forget_ref.html#global) | **[forget_ref](https://rust-lang.github.io/rust-clippy/master/index.html#forget_ref)** | correctness 370 | [2](https://dtolnay.github.io/noisy-clippy/mem_replace_with_default.html#local) | [8](https://dtolnay.github.io/noisy-clippy/mem_replace_with_default.html#global) | **[mem_replace_with_default](https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_with_default)** | style 371 | [7](https://dtolnay.github.io/noisy-clippy/perf.html#local) | [3](https://dtolnay.github.io/noisy-clippy/perf.html#global) | **[perf](https://rust-lang.github.io/rust-clippy/master/index.html#perf)** | unknown 372 | [7](https://dtolnay.github.io/noisy-clippy/transmute_float_to_int.html#local) | [3](https://dtolnay.github.io/noisy-clippy/transmute_float_to_int.html#global) | **[transmute_float_to_int](https://rust-lang.github.io/rust-clippy/master/index.html#transmute_float_to_int)** | complexity 373 | [9](https://dtolnay.github.io/noisy-clippy/unnecessary_filter_map.html#local) | [1](https://dtolnay.github.io/noisy-clippy/unnecessary_filter_map.html#global) | **[unnecessary_filter_map](https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_filter_map)** | complexity 374 | [10](https://dtolnay.github.io/noisy-clippy/unnecessary_sort_by.html#local) | 0 | **[unnecessary_sort_by](https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by)** | complexity 375 | ~*0*~ | ~*[10](https://dtolnay.github.io/noisy-clippy/wildcard_dependencies.html#global)*~ | ~*[wildcard_dependencies](https://rust-lang.github.io/rust-clippy/master/index.html#wildcard_dependencies)*~ | cargo 376 | [8](https://dtolnay.github.io/noisy-clippy/bind_instead_of_map.html#local) | [1](https://dtolnay.github.io/noisy-clippy/bind_instead_of_map.html#global) | **[bind_instead_of_map](https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map)** | complexity 377 | [6](https://dtolnay.github.io/noisy-clippy/cmp_null.html#local) | [3](https://dtolnay.github.io/noisy-clippy/cmp_null.html#global) | **[cmp_null](https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null)** | style 378 | ~*[8](https://dtolnay.github.io/noisy-clippy/debug_assert_with_mut_call.html#local)*~ | ~*[1](https://dtolnay.github.io/noisy-clippy/debug_assert_with_mut_call.html#global)*~ | ~*[debug_assert_with_mut_call](https://rust-lang.github.io/rust-clippy/master/index.html#debug_assert_with_mut_call)*~ | nursery 379 | ~*[1](https://dtolnay.github.io/noisy-clippy/decimal_literal_representation.html#local)*~ | ~*[8](https://dtolnay.github.io/noisy-clippy/decimal_literal_representation.html#global)*~ | ~*[decimal_literal_representation](https://rust-lang.github.io/rust-clippy/master/index.html#decimal_literal_representation)*~ | restriction 380 | [4](https://dtolnay.github.io/noisy-clippy/enum_clike_unportable_variant.html#local) | [5](https://dtolnay.github.io/noisy-clippy/enum_clike_unportable_variant.html#global) | **[enum_clike_unportable_variant](https://rust-lang.github.io/rust-clippy/master/index.html#enum_clike_unportable_variant)** | correctness 381 | [8](https://dtolnay.github.io/noisy-clippy/explicit_write.html#local) | [1](https://dtolnay.github.io/noisy-clippy/explicit_write.html#global) | **[explicit_write](https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write)** | complexity 382 | ~*[5](https://dtolnay.github.io/noisy-clippy/fn_params_excessive_bools.html#local)*~ | ~*[4](https://dtolnay.github.io/noisy-clippy/fn_params_excessive_bools.html#global)*~ | ~*[fn_params_excessive_bools](https://rust-lang.github.io/rust-clippy/master/index.html#fn_params_excessive_bools)*~ | pedantic 383 | [7](https://dtolnay.github.io/noisy-clippy/for_loops_over_fallibles.html#local) | [2](https://dtolnay.github.io/noisy-clippy/for_loops_over_fallibles.html#global) | **[for_loops_over_fallibles](https://rust-lang.github.io/rust-clippy/master/index.html#for_loops_over_fallibles)** | unknown 384 | ~*[4](https://dtolnay.github.io/noisy-clippy/mismatching_type_param_order.html#local)*~ | ~*[5](https://dtolnay.github.io/noisy-clippy/mismatching_type_param_order.html#global)*~ | ~*[mismatching_type_param_order](https://rust-lang.github.io/rust-clippy/master/index.html#mismatching_type_param_order)*~ | pedantic 385 | [7](https://dtolnay.github.io/noisy-clippy/overly_complex_bool_expr.html#local) | [2](https://dtolnay.github.io/noisy-clippy/overly_complex_bool_expr.html#global) | **[overly_complex_bool_expr](https://rust-lang.github.io/rust-clippy/master/index.html#overly_complex_bool_expr)** | correctness 386 | ~*0*~ | ~*[9](https://dtolnay.github.io/noisy-clippy/self_named_module_files.html#global)*~ | ~*[self_named_module_files](https://rust-lang.github.io/rust-clippy/master/index.html#self_named_module_files)*~ | restriction 387 | [8](https://dtolnay.github.io/noisy-clippy/size_of_in_element_count.html#local) | [1](https://dtolnay.github.io/noisy-clippy/size_of_in_element_count.html#global) | **[size_of_in_element_count](https://rust-lang.github.io/rust-clippy/master/index.html#size_of_in_element_count)** | correctness 388 | ~*[8](https://dtolnay.github.io/noisy-clippy/transmute_undefined_repr.html#local)*~ | ~*[1](https://dtolnay.github.io/noisy-clippy/transmute_undefined_repr.html#global)*~ | ~*[transmute_undefined_repr](https://rust-lang.github.io/rust-clippy/master/index.html#transmute_undefined_repr)*~ | ~*correctness*~ nursery 389 | [7](https://dtolnay.github.io/noisy-clippy/while_immutable_condition.html#local) | [2](https://dtolnay.github.io/noisy-clippy/while_immutable_condition.html#global) | **[while_immutable_condition](https://rust-lang.github.io/rust-clippy/master/index.html#while_immutable_condition)** | correctness 390 | [8](https://dtolnay.github.io/noisy-clippy/disallowed_methods.html#local) | 0 | **[disallowed_methods](https://rust-lang.github.io/rust-clippy/master/index.html#disallowed_methods)** | style 391 | [4](https://dtolnay.github.io/noisy-clippy/disallowed_types.html#local) | [4](https://dtolnay.github.io/noisy-clippy/disallowed_types.html#global) | **[disallowed_types](https://rust-lang.github.io/rust-clippy/master/index.html#disallowed_types)** | style 392 | [8](https://dtolnay.github.io/noisy-clippy/fn_to_numeric_cast.html#local) | 0 | **[fn_to_numeric_cast](https://rust-lang.github.io/rust-clippy/master/index.html#fn_to_numeric_cast)** | style 393 | [4](https://dtolnay.github.io/noisy-clippy/manual_unwrap_or.html#local) | [4](https://dtolnay.github.io/noisy-clippy/manual_unwrap_or.html#global) | **[manual_unwrap_or](https://rust-lang.github.io/rust-clippy/master/index.html#manual_unwrap_or)** | complexity 394 | ~*[7](https://dtolnay.github.io/noisy-clippy/missing_trait_methods.html#local)*~ | ~*[1](https://dtolnay.github.io/noisy-clippy/missing_trait_methods.html#global)*~ | ~*[missing_trait_methods](https://rust-lang.github.io/rust-clippy/master/index.html#missing_trait_methods)*~ | restriction 395 | [8](https://dtolnay.github.io/noisy-clippy/needless_match.html#local) | 0 | **[needless_match](https://rust-lang.github.io/rust-clippy/master/index.html#needless_match)** | complexity 396 | [8](https://dtolnay.github.io/noisy-clippy/read_zero_byte_vec.html#local) | 0 | **[read_zero_byte_vec](https://rust-lang.github.io/rust-clippy/master/index.html#read_zero_byte_vec)** | correctness 397 | [8](https://dtolnay.github.io/noisy-clippy/unsound_collection_transmute.html#local) | 0 | **[unsound_collection_transmute](https://rust-lang.github.io/rust-clippy/master/index.html#unsound_collection_transmute)** | correctness 398 | [4](https://dtolnay.github.io/noisy-clippy/clippy.html#local) | [3](https://dtolnay.github.io/noisy-clippy/clippy.html#global) | **[clippy](https://rust-lang.github.io/rust-clippy/master/index.html#clippy)** | unknown 399 | ~*[5](https://dtolnay.github.io/noisy-clippy/copy_iterator.html#local)*~ | ~*[2](https://dtolnay.github.io/noisy-clippy/copy_iterator.html#global)*~ | ~*[copy_iterator](https://rust-lang.github.io/rust-clippy/master/index.html#copy_iterator)*~ | pedantic 400 | [4](https://dtolnay.github.io/noisy-clippy/double_neg.html#local) | [3](https://dtolnay.github.io/noisy-clippy/double_neg.html#global) | **[double_neg](https://rust-lang.github.io/rust-clippy/master/index.html#double_neg)** | style 401 | [2](https://dtolnay.github.io/noisy-clippy/if_then_panic.html#local) | [5](https://dtolnay.github.io/noisy-clippy/if_then_panic.html#global) | **[if_then_panic](https://rust-lang.github.io/rust-clippy/master/index.html#if_then_panic)** | unknown 402 | [7](https://dtolnay.github.io/noisy-clippy/infallible_destructuring_match.html#local) | 0 | **[infallible_destructuring_match](https://rust-lang.github.io/rust-clippy/master/index.html#infallible_destructuring_match)** | style 403 | ~*[3](https://dtolnay.github.io/noisy-clippy/let_underscore_must_use.html#local)*~ | ~*[4](https://dtolnay.github.io/noisy-clippy/let_underscore_must_use.html#global)*~ | ~*[let_underscore_must_use](https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_must_use)*~ | restriction 404 | [7](https://dtolnay.github.io/noisy-clippy/mut_range_bound.html#local) | 0 | **[mut_range_bound](https://rust-lang.github.io/rust-clippy/master/index.html#mut_range_bound)** | suspicious 405 | ~*0*~ | ~*[7](https://dtolnay.github.io/noisy-clippy/negative_feature_names.html#global)*~ | ~*[negative_feature_names](https://rust-lang.github.io/rust-clippy/master/index.html#negative_feature_names)*~ | cargo 406 | ~*0*~ | ~*[7](https://dtolnay.github.io/noisy-clippy/redundant_feature_names.html#global)*~ | ~*[redundant_feature_names](https://rust-lang.github.io/rust-clippy/master/index.html#redundant_feature_names)*~ | cargo 407 | ~*[1](https://dtolnay.github.io/noisy-clippy/unicode_not_nfc.html#local)*~ | ~*[6](https://dtolnay.github.io/noisy-clippy/unicode_not_nfc.html#global)*~ | ~*[unicode_not_nfc](https://rust-lang.github.io/rust-clippy/master/index.html#unicode_not_nfc)*~ | pedantic 408 | [5](https://dtolnay.github.io/noisy-clippy/bad_bit_mask.html#local) | [1](https://dtolnay.github.io/noisy-clippy/bad_bit_mask.html#global) | **[bad_bit_mask](https://rust-lang.github.io/rust-clippy/master/index.html#bad_bit_mask)** | correctness 409 | [6](https://dtolnay.github.io/noisy-clippy/fn_to_numeric_cast_with_truncation.html#local) | 0 | **[fn_to_numeric_cast_with_truncation](https://rust-lang.github.io/rust-clippy/master/index.html#fn_to_numeric_cast_with_truncation)** | style 410 | ~*[3](https://dtolnay.github.io/noisy-clippy/iter_with_drain.html#local)*~ | ~*[3](https://dtolnay.github.io/noisy-clippy/iter_with_drain.html#global)*~ | ~*[iter_with_drain](https://rust-lang.github.io/rust-clippy/master/index.html#iter_with_drain)*~ | ~*perf*~ nursery 411 | ~*[5](https://dtolnay.github.io/noisy-clippy/linkedlist.html#local)*~ | ~*[1](https://dtolnay.github.io/noisy-clippy/linkedlist.html#global)*~ | ~*[linkedlist](https://rust-lang.github.io/rust-clippy/master/index.html#linkedlist)*~ | pedantic 412 | [1](https://dtolnay.github.io/noisy-clippy/map_flatten.html#local) | [5](https://dtolnay.github.io/noisy-clippy/map_flatten.html#global) | **[map_flatten](https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten)** | complexity 413 | [5](https://dtolnay.github.io/noisy-clippy/map_identity.html#local) | [1](https://dtolnay.github.io/noisy-clippy/map_identity.html#global) | **[map_identity](https://rust-lang.github.io/rust-clippy/master/index.html#map_identity)** | complexity 414 | [6](https://dtolnay.github.io/noisy-clippy/mem_discriminant_non_enum.html#local) | 0 | **[mem_discriminant_non_enum](https://rust-lang.github.io/rust-clippy/master/index.html#mem_discriminant_non_enum)** | unknown 415 | [4](https://dtolnay.github.io/noisy-clippy/print_in_format_impl.html#local) | [2](https://dtolnay.github.io/noisy-clippy/print_in_format_impl.html#global) | **[print_in_format_impl](https://rust-lang.github.io/rust-clippy/master/index.html#print_in_format_impl)** | suspicious 416 | [5](https://dtolnay.github.io/noisy-clippy/result_map_unit_fn.html#local) | [1](https://dtolnay.github.io/noisy-clippy/result_map_unit_fn.html#global) | **[result_map_unit_fn](https://rust-lang.github.io/rust-clippy/master/index.html#result_map_unit_fn)** | complexity 417 | [2](https://dtolnay.github.io/noisy-clippy/to_string_in_format_args.html#local) | [4](https://dtolnay.github.io/noisy-clippy/to_string_in_format_args.html#global) | **[to_string_in_format_args](https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args)** | perf 418 | ~*[2](https://dtolnay.github.io/noisy-clippy/doc_link_with_quotes.html#local)*~ | ~*[3](https://dtolnay.github.io/noisy-clippy/doc_link_with_quotes.html#global)*~ | ~*[doc_link_with_quotes](https://rust-lang.github.io/rust-clippy/master/index.html#doc_link_with_quotes)*~ | pedantic 419 | [2](https://dtolnay.github.io/noisy-clippy/double_must_use.html#local) | [3](https://dtolnay.github.io/noisy-clippy/double_must_use.html#global) | **[double_must_use](https://rust-lang.github.io/rust-clippy/master/index.html#double_must_use)** | style 420 | ~*[2](https://dtolnay.github.io/noisy-clippy/empty_line_after_outer_attr.html#local)*~ | ~*[3](https://dtolnay.github.io/noisy-clippy/empty_line_after_outer_attr.html#global)*~ | ~*[empty_line_after_outer_attr](https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_outer_attr)*~ | nursery 421 | ~*[1](https://dtolnay.github.io/noisy-clippy/equatable_if_let.html#local)*~ | ~*[4](https://dtolnay.github.io/noisy-clippy/equatable_if_let.html#global)*~ | ~*[equatable_if_let](https://rust-lang.github.io/rust-clippy/master/index.html#equatable_if_let)*~ | nursery 422 | ~*[4](https://dtolnay.github.io/noisy-clippy/get_unwrap.html#local)*~ | ~*[1](https://dtolnay.github.io/noisy-clippy/get_unwrap.html#global)*~ | ~*[get_unwrap](https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap)*~ | restriction 423 | [4](https://dtolnay.github.io/noisy-clippy/ifs_same_cond.html#local) | [1](https://dtolnay.github.io/noisy-clippy/ifs_same_cond.html#global) | **[ifs_same_cond](https://rust-lang.github.io/rust-clippy/master/index.html#ifs_same_cond)** | correctness 424 | [4](https://dtolnay.github.io/noisy-clippy/into_iter_on_array.html#local) | [1](https://dtolnay.github.io/noisy-clippy/into_iter_on_array.html#global) | **[into_iter_on_array](https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_array)** | unknown 425 | [4](https://dtolnay.github.io/noisy-clippy/iter_overeager_cloned.html#local) | [1](https://dtolnay.github.io/noisy-clippy/iter_overeager_cloned.html#global) | **[iter_overeager_cloned](https://rust-lang.github.io/rust-clippy/master/index.html#iter_overeager_cloned)** | perf 426 | [2](https://dtolnay.github.io/noisy-clippy/manual_find.html#local) | [3](https://dtolnay.github.io/noisy-clippy/manual_find.html#global) | **[manual_find](https://rust-lang.github.io/rust-clippy/master/index.html#manual_find)** | complexity 427 | ~*0*~ | ~*[5](https://dtolnay.github.io/noisy-clippy/manual_let_else.html#global)*~ | ~*[manual_let_else](https://rust-lang.github.io/rust-clippy/master/index.html#manual_let_else)*~ | pedantic 428 | [5](https://dtolnay.github.io/noisy-clippy/match_result_ok.html#local) | 0 | **[match_result_ok](https://rust-lang.github.io/rust-clippy/master/index.html#match_result_ok)** | style 429 | [3](https://dtolnay.github.io/noisy-clippy/match_str_case_mismatch.html#local) | [2](https://dtolnay.github.io/noisy-clippy/match_str_case_mismatch.html#global) | **[match_str_case_mismatch](https://rust-lang.github.io/rust-clippy/master/index.html#match_str_case_mismatch)** | correctness 430 | ~*[5](https://dtolnay.github.io/noisy-clippy/maybe_infinite_iter.html#local)*~ | ~*0*~ | ~*[maybe_infinite_iter](https://rust-lang.github.io/rust-clippy/master/index.html#maybe_infinite_iter)*~ | pedantic 431 | ~*0*~ | ~*[5](https://dtolnay.github.io/noisy-clippy/modulo_arithmetic.html#global)*~ | ~*[modulo_arithmetic](https://rust-lang.github.io/rust-clippy/master/index.html#modulo_arithmetic)*~ | restriction 432 | [4](https://dtolnay.github.io/noisy-clippy/mut_mutex_lock.html#local) | [1](https://dtolnay.github.io/noisy-clippy/mut_mutex_lock.html#global) | **[mut_mutex_lock](https://rust-lang.github.io/rust-clippy/master/index.html#mut_mutex_lock)** | style 433 | ~*[5](https://dtolnay.github.io/noisy-clippy/naive_bytecount.html#local)*~ | ~*0*~ | ~*[naive_bytecount](https://rust-lang.github.io/rust-clippy/master/index.html#naive_bytecount)*~ | pedantic 434 | 0 | [5](https://dtolnay.github.io/noisy-clippy/needless_arbitrary_self_type.html#global) | **[needless_arbitrary_self_type](https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type)** | complexity 435 | [3](https://dtolnay.github.io/noisy-clippy/panicking_unwrap.html#local) | [2](https://dtolnay.github.io/noisy-clippy/panicking_unwrap.html#global) | **[panicking_unwrap](https://rust-lang.github.io/rust-clippy/master/index.html#panicking_unwrap)** | correctness 436 | [1](https://dtolnay.github.io/noisy-clippy/possible_missing_comma.html#local) | [4](https://dtolnay.github.io/noisy-clippy/possible_missing_comma.html#global) | **[possible_missing_comma](https://rust-lang.github.io/rust-clippy/master/index.html#possible_missing_comma)** | correctness 437 | ~*0*~ | ~*[5](https://dtolnay.github.io/noisy-clippy/std_instead_of_alloc.html#global)*~ | ~*[std_instead_of_alloc](https://rust-lang.github.io/rust-clippy/master/index.html#std_instead_of_alloc)*~ | restriction 438 | [5](https://dtolnay.github.io/noisy-clippy/zero_divided_by_zero.html#local) | 0 | **[zero_divided_by_zero](https://rust-lang.github.io/rust-clippy/master/index.html#zero_divided_by_zero)** | complexity 439 | [4](https://dtolnay.github.io/noisy-clippy/cmp_nan.html#local) | 0 | **[cmp_nan](https://rust-lang.github.io/rust-clippy/master/index.html#cmp_nan)** | correctness 440 | [2](https://dtolnay.github.io/noisy-clippy/duplicate_mod.html#local) | [2](https://dtolnay.github.io/noisy-clippy/duplicate_mod.html#global) | **[duplicate_mod](https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_mod)** | suspicious 441 | 0 | [4](https://dtolnay.github.io/noisy-clippy/find_map.html#global) | **[find_map](https://rust-lang.github.io/rust-clippy/master/index.html#find_map)** | deprecated 442 | [4](https://dtolnay.github.io/noisy-clippy/for_kv_map.html#local) | 0 | **[for_kv_map](https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map)** | style 443 | ~*[2](https://dtolnay.github.io/noisy-clippy/inefficient_to_string.html#local)*~ | ~*[2](https://dtolnay.github.io/noisy-clippy/inefficient_to_string.html#global)*~ | ~*[inefficient_to_string](https://rust-lang.github.io/rust-clippy/master/index.html#inefficient_to_string)*~ | ~*perf*~ pedantic 444 | [2](https://dtolnay.github.io/noisy-clippy/invalid_regex.html#local) | [2](https://dtolnay.github.io/noisy-clippy/invalid_regex.html#global) | **[invalid_regex](https://rust-lang.github.io/rust-clippy/master/index.html#invalid_regex)** | correctness 445 | [3](https://dtolnay.github.io/noisy-clippy/iter_count.html#local) | [1](https://dtolnay.github.io/noisy-clippy/iter_count.html#global) | **[iter_count](https://rust-lang.github.io/rust-clippy/master/index.html#iter_count)** | complexity 446 | [4](https://dtolnay.github.io/noisy-clippy/manual_filter.html#local) | 0 | **[manual_filter](https://rust-lang.github.io/rust-clippy/master/index.html#manual_filter)** | complexity 447 | 0 | [4](https://dtolnay.github.io/noisy-clippy/mismatched_target_os.html#global) | **[mismatched_target_os](https://rust-lang.github.io/rust-clippy/master/index.html#mismatched_target_os)** | correctness 448 | [4](https://dtolnay.github.io/noisy-clippy/misnamed_getters.html#local) | 0 | **[misnamed_getters](https://rust-lang.github.io/rust-clippy/master/index.html#misnamed_getters)** | suspicious 449 | ~*[2](https://dtolnay.github.io/noisy-clippy/needless_for_each.html#local)*~ | ~*[2](https://dtolnay.github.io/noisy-clippy/needless_for_each.html#global)*~ | ~*[needless_for_each](https://rust-lang.github.io/rust-clippy/master/index.html#needless_for_each)*~ | pedantic 450 | [3](https://dtolnay.github.io/noisy-clippy/octal_escapes.html#local) | [1](https://dtolnay.github.io/noisy-clippy/octal_escapes.html#global) | **[octal_escapes](https://rust-lang.github.io/rust-clippy/master/index.html#octal_escapes)** | suspicious 451 | ~*[2](https://dtolnay.github.io/noisy-clippy/range_minus_one.html#local)*~ | ~*[2](https://dtolnay.github.io/noisy-clippy/range_minus_one.html#global)*~ | ~*[range_minus_one](https://rust-lang.github.io/rust-clippy/master/index.html#range_minus_one)*~ | pedantic 452 | [3](https://dtolnay.github.io/noisy-clippy/recursive_format_impl.html#local) | [1](https://dtolnay.github.io/noisy-clippy/recursive_format_impl.html#global) | **[recursive_format_impl](https://rust-lang.github.io/rust-clippy/master/index.html#recursive_format_impl)** | correctness 453 | [2](https://dtolnay.github.io/noisy-clippy/search_is_some.html#local) | [2](https://dtolnay.github.io/noisy-clippy/search_is_some.html#global) | **[search_is_some](https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some)** | complexity 454 | [4](https://dtolnay.github.io/noisy-clippy/short_circuit_statement.html#local) | 0 | **[short_circuit_statement](https://rust-lang.github.io/rust-clippy/master/index.html#short_circuit_statement)** | complexity 455 | [3](https://dtolnay.github.io/noisy-clippy/single_char_add_str.html#local) | [1](https://dtolnay.github.io/noisy-clippy/single_char_add_str.html#global) | **[single_char_add_str](https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str)** | style 456 | ~*0*~ | ~*[4](https://dtolnay.github.io/noisy-clippy/string_to_string.html#global)*~ | ~*[string_to_string](https://rust-lang.github.io/rust-clippy/master/index.html#string_to_string)*~ | restriction 457 | [3](https://dtolnay.github.io/noisy-clippy/transmute_int_to_char.html#local) | [1](https://dtolnay.github.io/noisy-clippy/transmute_int_to_char.html#global) | **[transmute_int_to_char](https://rust-lang.github.io/rust-clippy/master/index.html#transmute_int_to_char)** | complexity 458 | [3](https://dtolnay.github.io/noisy-clippy/unnecessary_fold.html#local) | [1](https://dtolnay.github.io/noisy-clippy/unnecessary_fold.html#global) | **[unnecessary_fold](https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold)** | style 459 | ~*[3](https://dtolnay.github.io/noisy-clippy/unused_peekable.html#local)*~ | ~*[1](https://dtolnay.github.io/noisy-clippy/unused_peekable.html#global)*~ | ~*[unused_peekable](https://rust-lang.github.io/rust-clippy/master/index.html#unused_peekable)*~ | nursery 460 | [3](https://dtolnay.github.io/noisy-clippy/cast_slice_from_raw_parts.html#local) | 0 | **[cast_slice_from_raw_parts](https://rust-lang.github.io/rust-clippy/master/index.html#cast_slice_from_raw_parts)** | suspicious 461 | ~*[1](https://dtolnay.github.io/noisy-clippy/cloned_instead_of_copied.html#local)*~ | ~*[2](https://dtolnay.github.io/noisy-clippy/cloned_instead_of_copied.html#global)*~ | ~*[cloned_instead_of_copied](https://rust-lang.github.io/rust-clippy/master/index.html#cloned_instead_of_copied)*~ | pedantic 462 | [1](https://dtolnay.github.io/noisy-clippy/crosspointer_transmute.html#local) | [2](https://dtolnay.github.io/noisy-clippy/crosspointer_transmute.html#global) | **[crosspointer_transmute](https://rust-lang.github.io/rust-clippy/master/index.html#crosspointer_transmute)** | complexity 463 | [3](https://dtolnay.github.io/noisy-clippy/deprecated.html#local) | 0 | **[deprecated](https://rust-lang.github.io/rust-clippy/master/index.html#deprecated)** | unknown 464 | 0 | [3](https://dtolnay.github.io/noisy-clippy/deprecated_semver.html#global) | **[deprecated_semver](https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_semver)** | correctness 465 | ~*0*~ | ~*[3](https://dtolnay.github.io/noisy-clippy/float_cmp_const.html#global)*~ | ~*[float_cmp_const](https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp_const)*~ | restriction 466 | [3](https://dtolnay.github.io/noisy-clippy/implicit_saturating_sub.html#local) | 0 | **[implicit_saturating_sub](https://rust-lang.github.io/rust-clippy/master/index.html#implicit_saturating_sub)** | style 467 | 0 | [3](https://dtolnay.github.io/noisy-clippy/init_numbered_fields.html#global) | **[init_numbered_fields](https://rust-lang.github.io/rust-clippy/master/index.html#init_numbered_fields)** | style 468 | [2](https://dtolnay.github.io/noisy-clippy/invisible_characters.html#local) | [1](https://dtolnay.github.io/noisy-clippy/invisible_characters.html#global) | **[invisible_characters](https://rust-lang.github.io/rust-clippy/master/index.html#invisible_characters)** | correctness 469 | [3](https://dtolnay.github.io/noisy-clippy/iter_skip_next.html#local) | 0 | **[iter_skip_next](https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next)** | style 470 | [2](https://dtolnay.github.io/noisy-clippy/mistyped_literal_suffixes.html#local) | [1](https://dtolnay.github.io/noisy-clippy/mistyped_literal_suffixes.html#global) | **[mistyped_literal_suffixes](https://rust-lang.github.io/rust-clippy/master/index.html#mistyped_literal_suffixes)** | correctness 471 | [2](https://dtolnay.github.io/noisy-clippy/print_with_newline.html#local) | [1](https://dtolnay.github.io/noisy-clippy/print_with_newline.html#global) | **[print_with_newline](https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline)** | style 472 | ~*[2](https://dtolnay.github.io/noisy-clippy/same_functions_in_if_condition.html#local)*~ | ~*[1](https://dtolnay.github.io/noisy-clippy/same_functions_in_if_condition.html#global)*~ | ~*[same_functions_in_if_condition](https://rust-lang.github.io/rust-clippy/master/index.html#same_functions_in_if_condition)*~ | pedantic 473 | [2](https://dtolnay.github.io/noisy-clippy/skip_while_next.html#local) | [1](https://dtolnay.github.io/noisy-clippy/skip_while_next.html#global) | **[skip_while_next](https://rust-lang.github.io/rust-clippy/master/index.html#skip_while_next)** | complexity 474 | ~*0*~ | ~*[3](https://dtolnay.github.io/noisy-clippy/string_add.html#global)*~ | ~*[string_add](https://rust-lang.github.io/rust-clippy/master/index.html#string_add)*~ | restriction 475 | [3](https://dtolnay.github.io/noisy-clippy/transmute_bytes_to_str.html#local) | 0 | **[transmute_bytes_to_str](https://rust-lang.github.io/rust-clippy/master/index.html#transmute_bytes_to_str)** | complexity 476 | ~*[3](https://dtolnay.github.io/noisy-clippy/unnecessary_safety_doc.html#local)*~ | ~*0*~ | ~*[unnecessary_safety_doc](https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_safety_doc)*~ | ~*style*~ restriction 477 | 0 | [3](https://dtolnay.github.io/noisy-clippy/unsafe_removed_from_name.html#global) | **[unsafe_removed_from_name](https://rust-lang.github.io/rust-clippy/master/index.html#unsafe_removed_from_name)** | style 478 | [3](https://dtolnay.github.io/noisy-clippy/useless_asref.html#local) | 0 | **[useless_asref](https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref)** | complexity 479 | ~*0*~ | ~*[2](https://dtolnay.github.io/noisy-clippy/alloc_instead_of_core.html#global)*~ | ~*[alloc_instead_of_core](https://rust-lang.github.io/rust-clippy/master/index.html#alloc_instead_of_core)*~ | restriction 480 | [1](https://dtolnay.github.io/noisy-clippy/builtin_type_shadow.html#local) | [1](https://dtolnay.github.io/noisy-clippy/builtin_type_shadow.html#global) | **[builtin_type_shadow](https://rust-lang.github.io/rust-clippy/master/index.html#builtin_type_shadow)** | style 481 | [2](https://dtolnay.github.io/noisy-clippy/char_lit_as_u8.html#local) | 0 | **[char_lit_as_u8](https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8)** | complexity 482 | [1](https://dtolnay.github.io/noisy-clippy/collapsible_str_replace.html#local) | [1](https://dtolnay.github.io/noisy-clippy/collapsible_str_replace.html#global) | **[collapsible_str_replace](https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_str_replace)** | perf 483 | ~*[1](https://dtolnay.github.io/noisy-clippy/empty_structs_with_brackets.html#local)*~ | ~*[1](https://dtolnay.github.io/noisy-clippy/empty_structs_with_brackets.html#global)*~ | ~*[empty_structs_with_brackets](https://rust-lang.github.io/rust-clippy/master/index.html#empty_structs_with_brackets)*~ | restriction 484 | ~*0*~ | ~*[2](https://dtolnay.github.io/noisy-clippy/explicit_into_iter_loop.html#global)*~ | ~*[explicit_into_iter_loop](https://rust-lang.github.io/rust-clippy/master/index.html#explicit_into_iter_loop)*~ | pedantic 485 | [2](https://dtolnay.github.io/noisy-clippy/float_equality_without_abs.html#local) | 0 | **[float_equality_without_abs](https://rust-lang.github.io/rust-clippy/master/index.html#float_equality_without_abs)** | suspicious 486 | [2](https://dtolnay.github.io/noisy-clippy/if_let_redundant_pattern_matching.html#local) | 0 | **[if_let_redundant_pattern_matching](https://rust-lang.github.io/rust-clippy/master/index.html#if_let_redundant_pattern_matching)** | deprecated 487 | ~*[2](https://dtolnay.github.io/noisy-clippy/if_then_some_else_none.html#local)*~ | ~*0*~ | ~*[if_then_some_else_none](https://rust-lang.github.io/rust-clippy/master/index.html#if_then_some_else_none)*~ | restriction 488 | [2](https://dtolnay.github.io/noisy-clippy/invalid_null_ptr_usage.html#local) | 0 | **[invalid_null_ptr_usage](https://rust-lang.github.io/rust-clippy/master/index.html#invalid_null_ptr_usage)** | correctness 489 | [1](https://dtolnay.github.io/noisy-clippy/is_digit_ascii_radix.html#local) | [1](https://dtolnay.github.io/noisy-clippy/is_digit_ascii_radix.html#global) | **[is_digit_ascii_radix](https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix)** | style 490 | ~*[2](https://dtolnay.github.io/noisy-clippy/large_stack_arrays.html#local)*~ | ~*0*~ | ~*[large_stack_arrays](https://rust-lang.github.io/rust-clippy/master/index.html#large_stack_arrays)*~ | pedantic 491 | [2](https://dtolnay.github.io/noisy-clippy/let_underscore_lock.html#local) | 0 | **[let_underscore_lock](https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_lock)** | correctness 492 | [2](https://dtolnay.github.io/noisy-clippy/manual_bits.html#local) | 0 | **[manual_bits](https://rust-lang.github.io/rust-clippy/master/index.html#manual_bits)** | style 493 | [1](https://dtolnay.github.io/noisy-clippy/match_as_ref.html#local) | [1](https://dtolnay.github.io/noisy-clippy/match_as_ref.html#global) | **[match_as_ref](https://rust-lang.github.io/rust-clippy/master/index.html#match_as_ref)** | complexity 494 | 0 | [2](https://dtolnay.github.io/noisy-clippy/mixed_case_hex_literals.html#global) | **[mixed_case_hex_literals](https://rust-lang.github.io/rust-clippy/master/index.html#mixed_case_hex_literals)** | style 495 | [2](https://dtolnay.github.io/noisy-clippy/needless_splitn.html#local) | 0 | **[needless_splitn](https://rust-lang.github.io/rust-clippy/master/index.html#needless_splitn)** | complexity 496 | 0 | [2](https://dtolnay.github.io/noisy-clippy/non_upper_case_globals.html#global) | **[non_upper_case_globals](https://rust-lang.github.io/rust-clippy/master/index.html#non_upper_case_globals)** | unknown 497 | [2](https://dtolnay.github.io/noisy-clippy/ok_expect.html#local) | 0 | **[ok_expect](https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect)** | style 498 | [2](https://dtolnay.github.io/noisy-clippy/option_env_unwrap.html#local) | 0 | **[option_env_unwrap](https://rust-lang.github.io/rust-clippy/master/index.html#option_env_unwrap)** | correctness 499 | [2](https://dtolnay.github.io/noisy-clippy/out_of_bounds_indexing.html#local) | 0 | **[out_of_bounds_indexing](https://rust-lang.github.io/rust-clippy/master/index.html#out_of_bounds_indexing)** | correctness 500 | [1](https://dtolnay.github.io/noisy-clippy/redundant_pattern.html#local) | [1](https://dtolnay.github.io/noisy-clippy/redundant_pattern.html#global) | **[redundant_pattern](https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern)** | style 501 | 0 | [2](https://dtolnay.github.io/noisy-clippy/slow_vector_initialization.html#global) | **[slow_vector_initialization](https://rust-lang.github.io/rust-clippy/master/index.html#slow_vector_initialization)** | perf 502 | [2](https://dtolnay.github.io/noisy-clippy/string_extend_chars.html#local) | 0 | **[string_extend_chars](https://rust-lang.github.io/rust-clippy/master/index.html#string_extend_chars)** | style 503 | 0 | [2](https://dtolnay.github.io/noisy-clippy/transmute_int_to_bool.html#global) | **[transmute_int_to_bool](https://rust-lang.github.io/rust-clippy/master/index.html#transmute_int_to_bool)** | complexity 504 | [1](https://dtolnay.github.io/noisy-clippy/transmute_int_to_float.html#local) | [1](https://dtolnay.github.io/noisy-clippy/transmute_int_to_float.html#global) | **[transmute_int_to_float](https://rust-lang.github.io/rust-clippy/master/index.html#transmute_int_to_float)** | complexity 505 | [2](https://dtolnay.github.io/noisy-clippy/transmuting_null.html#local) | 0 | **[transmuting_null](https://rust-lang.github.io/rust-clippy/master/index.html#transmuting_null)** | correctness 506 | [2](https://dtolnay.github.io/noisy-clippy/unit_return_expecting_ord.html#local) | 0 | **[unit_return_expecting_ord](https://rust-lang.github.io/rust-clippy/master/index.html#unit_return_expecting_ord)** | correctness 507 | 0 | [2](https://dtolnay.github.io/noisy-clippy/unwrap_or_else_default.html#global) | **[unwrap_or_else_default](https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_else_default)** | style 508 | 0 | [1](https://dtolnay.github.io/noisy-clippy/almost_swapped.html#global) | **[almost_swapped](https://rust-lang.github.io/rust-clippy/master/index.html#almost_swapped)** | correctness 509 | [1](https://dtolnay.github.io/noisy-clippy/as_conversion.html#local) | 0 | **[as_conversion](https://rust-lang.github.io/rust-clippy/master/index.html#as_conversion)** | unknown 510 | ~*[1](https://dtolnay.github.io/noisy-clippy/as_ptr_cast_mut.html#local)*~ | ~*0*~ | ~*[as_ptr_cast_mut](https://rust-lang.github.io/rust-clippy/master/index.html#as_ptr_cast_mut)*~ | nursery 511 | [1](https://dtolnay.github.io/noisy-clippy/cast_abs_to_unsigned.html#local) | 0 | **[cast_abs_to_unsigned](https://rust-lang.github.io/rust-clippy/master/index.html#cast_abs_to_unsigned)** | suspicious 512 | [1](https://dtolnay.github.io/noisy-clippy/cast_slice_different_sizes.html#local) | 0 | **[cast_slice_different_sizes](https://rust-lang.github.io/rust-clippy/master/index.html#cast_slice_different_sizes)** | correctness 513 | 0 | [1](https://dtolnay.github.io/noisy-clippy/clippy_complexity.html#global) | **[clippy_complexity](https://rust-lang.github.io/rust-clippy/master/index.html#clippy_complexity)** | unknown 514 | [1](https://dtolnay.github.io/noisy-clippy/double_comparisons.html#local) | 0 | **[double_comparisons](https://rust-lang.github.io/rust-clippy/master/index.html#double_comparisons)** | complexity 515 | [1](https://dtolnay.github.io/noisy-clippy/extend_from_slice.html#local) | 0 | **[extend_from_slice](https://rust-lang.github.io/rust-clippy/master/index.html#extend_from_slice)** | deprecated 516 | [1](https://dtolnay.github.io/noisy-clippy/extend_with_drain.html#local) | 0 | **[extend_with_drain](https://rust-lang.github.io/rust-clippy/master/index.html#extend_with_drain)** | perf 517 | ~*[1](https://dtolnay.github.io/noisy-clippy/filetype_is_file.html#local)*~ | ~*0*~ | ~*[filetype_is_file](https://rust-lang.github.io/rust-clippy/master/index.html#filetype_is_file)*~ | restriction 518 | [1](https://dtolnay.github.io/noisy-clippy/filter_map_identity.html#local) | 0 | **[filter_map_identity](https://rust-lang.github.io/rust-clippy/master/index.html#filter_map_identity)** | complexity 519 | [1](https://dtolnay.github.io/noisy-clippy/fn_null_check.html#local) | 0 | **[fn_null_check](https://rust-lang.github.io/rust-clippy/master/index.html#fn_null_check)** | correctness 520 | ~*[1](https://dtolnay.github.io/noisy-clippy/implicit_clone.html#local)*~ | ~*0*~ | ~*[implicit_clone](https://rust-lang.github.io/rust-clippy/master/index.html#implicit_clone)*~ | pedantic 521 | [1](https://dtolnay.github.io/noisy-clippy/infinite_iter.html#local) | 0 | **[infinite_iter](https://rust-lang.github.io/rust-clippy/master/index.html#infinite_iter)** | correctness 522 | ~*0*~ | ~*[1](https://dtolnay.github.io/noisy-clippy/inline_asm_x86_intel_syntax.html#global)*~ | ~*[inline_asm_x86_intel_syntax](https://rust-lang.github.io/rust-clippy/master/index.html#inline_asm_x86_intel_syntax)*~ | restriction 523 | [1](https://dtolnay.github.io/noisy-clippy/inline_fn_without_body.html#local) | 0 | **[inline_fn_without_body](https://rust-lang.github.io/rust-clippy/master/index.html#inline_fn_without_body)** | correctness 524 | [1](https://dtolnay.github.io/noisy-clippy/inspect_for_each.html#local) | 0 | **[inspect_for_each](https://rust-lang.github.io/rust-clippy/master/index.html#inspect_for_each)** | complexity 525 | [1](https://dtolnay.github.io/noisy-clippy/invalid_ref.html#local) | 0 | **[invalid_ref](https://rust-lang.github.io/rust-clippy/master/index.html#invalid_ref)** | unknown 526 | [1](https://dtolnay.github.io/noisy-clippy/invalid_utf8_in_unchecked.html#local) | 0 | **[invalid_utf8_in_unchecked](https://rust-lang.github.io/rust-clippy/master/index.html#invalid_utf8_in_unchecked)** | correctness 527 | [1](https://dtolnay.github.io/noisy-clippy/iter_nth.html#local) | 0 | **[iter_nth](https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth)** | perf 528 | ~*0*~ | ~*[1](https://dtolnay.github.io/noisy-clippy/large_digit_groups.html#global)*~ | ~*[large_digit_groups](https://rust-lang.github.io/rust-clippy/master/index.html#large_digit_groups)*~ | ~*style*~ pedantic 529 | [1](https://dtolnay.github.io/noisy-clippy/main_recursion.html#local) | 0 | **[main_recursion](https://rust-lang.github.io/rust-clippy/master/index.html#main_recursion)** | style 530 | [1](https://dtolnay.github.io/noisy-clippy/manual_find_map.html#local) | 0 | **[manual_find_map](https://rust-lang.github.io/rust-clippy/master/index.html#manual_find_map)** | complexity 531 | 0 | [1](https://dtolnay.github.io/noisy-clippy/manual_saturating_arithmetic.html#global) | **[manual_saturating_arithmetic](https://rust-lang.github.io/rust-clippy/master/index.html#manual_saturating_arithmetic)** | style 532 | ~*[1](https://dtolnay.github.io/noisy-clippy/manual_string_new.html#local)*~ | ~*0*~ | ~*[manual_string_new](https://rust-lang.github.io/rust-clippy/master/index.html#manual_string_new)*~ | pedantic 533 | [1](https://dtolnay.github.io/noisy-clippy/mem_replace_option_with_none.html#local) | 0 | **[mem_replace_option_with_none](https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_none)** | style 534 | [1](https://dtolnay.github.io/noisy-clippy/min_max.html#local) | 0 | **[min_max](https://rust-lang.github.io/rust-clippy/master/index.html#min_max)** | correctness 535 | 0 | [1](https://dtolnay.github.io/noisy-clippy/misrefactored_assign_op.html#global) | **[misrefactored_assign_op](https://rust-lang.github.io/rust-clippy/master/index.html#misrefactored_assign_op)** | suspicious 536 | 0 | [1](https://dtolnay.github.io/noisy-clippy/missing_docs.html#global) | **[missing_docs](https://rust-lang.github.io/rust-clippy/master/index.html#missing_docs)** | unknown 537 | 0 | [1](https://dtolnay.github.io/noisy-clippy/must_use_unit.html#global) | **[must_use_unit](https://rust-lang.github.io/rust-clippy/master/index.html#must_use_unit)** | style 538 | 0 | [1](https://dtolnay.github.io/noisy-clippy/needless_borrowed_reference.html#global) | **[needless_borrowed_reference](https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference)** | complexity 539 | 0 | [1](https://dtolnay.github.io/noisy-clippy/non_octal_unix_permissions.html#global) | **[non_octal_unix_permissions](https://rust-lang.github.io/rust-clippy/master/index.html#non_octal_unix_permissions)** | correctness 540 | [1](https://dtolnay.github.io/noisy-clippy/obfuscated_if_else.html#local) | 0 | **[obfuscated_if_else](https://rust-lang.github.io/rust-clippy/master/index.html#obfuscated_if_else)** | style 541 | [1](https://dtolnay.github.io/noisy-clippy/option_map_or_none.html#local) | 0 | **[option_map_or_none](https://rust-lang.github.io/rust-clippy/master/index.html#option_map_or_none)** | style 542 | [1](https://dtolnay.github.io/noisy-clippy/panic_params.html#local) | 0 | **[panic_params](https://rust-lang.github.io/rust-clippy/master/index.html#panic_params)** | unknown 543 | 0 | [1](https://dtolnay.github.io/noisy-clippy/ptr_eq.html#global) | **[ptr_eq](https://rust-lang.github.io/rust-clippy/master/index.html#ptr_eq)** | style 544 | 0 | [1](https://dtolnay.github.io/noisy-clippy/regex_macro.html#global) | **[regex_macro](https://rust-lang.github.io/rust-clippy/master/index.html#regex_macro)** | deprecated 545 | 0 | [1](https://dtolnay.github.io/noisy-clippy/self_assignment.html#global) | **[self_assignment](https://rust-lang.github.io/rust-clippy/master/index.html#self_assignment)** | correctness 546 | [1](https://dtolnay.github.io/noisy-clippy/suspicious.html#local) | 0 | **[suspicious](https://rust-lang.github.io/rust-clippy/master/index.html#suspicious)** | unknown 547 | [1](https://dtolnay.github.io/noisy-clippy/swap_ptr_to_ref.html#local) | 0 | **[swap_ptr_to_ref](https://rust-lang.github.io/rust-clippy/master/index.html#swap_ptr_to_ref)** | suspicious 548 | 0 | [1](https://dtolnay.github.io/noisy-clippy/transmute_num_to_bytes.html#global) | **[transmute_num_to_bytes](https://rust-lang.github.io/rust-clippy/master/index.html#transmute_num_to_bytes)** | complexity 549 | [1](https://dtolnay.github.io/noisy-clippy/transmutes_expressible_as_ptr_casts.html#local) | 0 | **[transmutes_expressible_as_ptr_casts](https://rust-lang.github.io/rust-clippy/master/index.html#transmutes_expressible_as_ptr_casts)** | complexity 550 | [1](https://dtolnay.github.io/noisy-clippy/unit_hash.html#local) | 0 | **[unit_hash](https://rust-lang.github.io/rust-clippy/master/index.html#unit_hash)** | correctness 551 | 0 | [1](https://dtolnay.github.io/noisy-clippy/unused_doc_comment.html#global) | **[unused_doc_comment](https://rust-lang.github.io/rust-clippy/master/index.html#unused_doc_comment)** | unknown 552 | 0 | [1](https://dtolnay.github.io/noisy-clippy/unused_parens.html#global) | **[unused_parens](https://rust-lang.github.io/rust-clippy/master/index.html#unused_parens)** | unknown 553 | 0 | [1](https://dtolnay.github.io/noisy-clippy/unused_results.html#global) | **[unused_results](https://rust-lang.github.io/rust-clippy/master/index.html#unused_results)** | unknown 554 | ~*[1](https://dtolnay.github.io/noisy-clippy/verbose_file_reads.html#local)*~ | ~*0*~ | ~*[verbose_file_reads](https://rust-lang.github.io/rust-clippy/master/index.html#verbose_file_reads)*~ | restriction 555 | [1](https://dtolnay.github.io/noisy-clippy/warnings.html#local) | 0 | **[warnings](https://rust-lang.github.io/rust-clippy/master/index.html#warnings)** | unknown 556 | 0 | [1](https://dtolnay.github.io/noisy-clippy/writeln_empty_string.html#global) | **[writeln_empty_string](https://rust-lang.github.io/rust-clippy/master/index.html#writeln_empty_string)** | style 557 | 558 |
559 | 560 | #### License 561 | 562 | 563 | Licensed under either of Apache License, Version 564 | 2.0 or MIT license at your option. 565 | 566 | 567 |
568 | 569 | 570 | Unless you explicitly state otherwise, any contribution intentionally submitted 571 | for inclusion in this project by you, as defined in the Apache-2.0 license, 572 | shall be dual licensed as above, without any additional terms or conditions. 573 | 574 | -------------------------------------------------------------------------------- /src/lints.rs: -------------------------------------------------------------------------------- 1 | use anyhow::Result; 2 | use serde_derive::Deserialize; 3 | use std::collections::BTreeSet as Set; 4 | use std::fmt::{self, Display}; 5 | 6 | #[derive(Deserialize)] 7 | pub(crate) struct Lint { 8 | pub id: String, 9 | pub group: LintGroup, 10 | pub level: LintLevel, 11 | #[serde(default)] 12 | pub former_ids: Set, 13 | } 14 | 15 | #[derive(Deserialize, PartialEq, Copy, Clone, Debug)] 16 | #[serde(rename_all = "lowercase")] 17 | pub(crate) enum LintGroup { 18 | Cargo, 19 | Complexity, 20 | Correctness, 21 | Deprecated, 22 | Nursery, 23 | Pedantic, 24 | Perf, 25 | Restriction, 26 | Style, 27 | Suspicious, 28 | Unknown, 29 | } 30 | 31 | #[derive(Deserialize, PartialEq, Copy, Clone)] 32 | #[serde(rename_all = "lowercase")] 33 | pub(crate) enum LintLevel { 34 | Allow, 35 | Warn, 36 | Deny, 37 | None, 38 | } 39 | 40 | impl Display for LintGroup { 41 | fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result { 42 | formatter.write_str(&format!("{:?}", self).to_lowercase()) 43 | } 44 | } 45 | 46 | pub(crate) fn download_lint_list() -> Result> { 47 | let req = reqwest::blocking::get("https://rust-lang.github.io/rust-clippy/master/lints.json")?; 48 | let lints: Vec = req.json()?; 49 | Ok(lints) 50 | } 51 | 52 | pub(crate) fn former_lint_group(lint_id: &str) -> Option { 53 | match lint_id { 54 | // @dtolnay 55 | "cognitive_complexity" => Some(LintGroup::Complexity), // https://github.com/rust-lang/rust-clippy/pull/5428 56 | "implicit_hasher" => Some(LintGroup::Style), // https://github.com/rust-lang/rust-clippy/pull/5411 57 | "inefficient_to_string" => Some(LintGroup::Perf), // https://github.com/rust-lang/rust-clippy/pull/5412 58 | "integer_division" => Some(LintGroup::Pedantic), // https://github.com/rust-lang/rust-clippy/pull/4210 59 | "large_digit_groups" => Some(LintGroup::Style), // https://github.com/rust-lang/rust-clippy/pull/3479 60 | "let_underscore_untyped" => Some(LintGroup::Pedantic), // https://github.com/rust-lang/rust-clippy/pull/10442 61 | "let_unit_value" => Some(LintGroup::Style), // https://github.com/rust-lang/rust-clippy/pull/5409 62 | "manual_map" => Some(LintGroup::Style), // https://github.com/rust-lang/rust-clippy/pull/6796 63 | "many_single_char_names" => Some(LintGroup::Style), // https://github.com/rust-lang/rust-clippy/pull/7671 64 | "match_bool" => Some(LintGroup::Style), // https://github.com/rust-lang/rust-clippy/pull/5408 65 | "needless_pass_by_value" => Some(LintGroup::Style), // https://github.com/rust-lang/rust-clippy/pull/3439 66 | "new_ret_no_self" => Some(LintGroup::Style), // https://github.com/rust-lang/rust-clippy/pull/5420 67 | "nonstandard_macro_braces" => Some(LintGroup::Style), // https://github.com/rust-lang/rust-clippy/pull/7424 68 | "option_if_let_else" => Some(LintGroup::Pedantic), // https://github.com/rust-lang/rust-clippy/pull/7568 69 | "option_option" => Some(LintGroup::Complexity), // https://github.com/rust-lang/rust-clippy/pull/5401 70 | "rc_buffer" => Some(LintGroup::Perf), // https://github.com/rust-lang/rust-clippy/pull/6128 71 | "string_lit_as_bytes" => Some(LintGroup::Style), // https://github.com/rust-lang/rust-clippy/pull/6117 72 | "transmute_undefined_repr" => Some(LintGroup::Correctness), // https://github.com/rust-lang/rust-clippy/pull/8418 73 | "trivial_regex" => Some(LintGroup::Style), // https://github.com/rust-lang/rust-clippy/pull/6696 74 | "trivially_copy_pass_by_ref" => Some(LintGroup::Perf), // https://github.com/rust-lang/rust-clippy/pull/5410 75 | "unnested_or_patterns" => Some(LintGroup::Complexity), // https://github.com/rust-lang/rust-clippy/pull/5705 76 | "unreadable_literal" => Some(LintGroup::Style), // https://github.com/rust-lang/rust-clippy/pull/5419 77 | "unsafe_vector_initialization" => Some(LintGroup::Correctness), // https://github.com/rust-lang/rust-clippy/pull/3478 78 | "useless_let_if_seq" => Some(LintGroup::Style), // https://github.com/rust-lang/rust-clippy/pull/5599 79 | 80 | // others 81 | "assertions_on_result_states" => Some(LintGroup::Style), // https://github.com/rust-lang/rust-clippy/pull/9273 82 | "await_holding_lock" => Some(LintGroup::Correctness), // https://github.com/rust-lang/rust-clippy/pull/6354 83 | "await_holding_refcell_ref" => Some(LintGroup::Correctness), // https://github.com/rust-lang/rust-clippy/pull/6354 84 | "borrow_interior_mutable_const" => Some(LintGroup::Correctness), // https://github.com/rust-lang/rust-clippy/pull/6098 85 | "branches_sharing_code" => Some(LintGroup::Complexity), // https://github.com/rust-lang/rust-clippy/pull/7595 86 | "cast_ptr_alignment" => Some(LintGroup::Correctness), // https://github.com/rust-lang/rust-clippy/pull/5667 87 | "declare_interior_mutable_const" => Some(LintGroup::Correctness), // https://github.com/rust-lang/rust-clippy/pull/6098 88 | "derive_partial_eq_without_eq" => Some(LintGroup::Style), // https://github.com/rust-lang/rust-clippy/pull/9535 89 | "eval_order_dependence" => Some(LintGroup::Suspicious), // https://github.com/rust-lang/rust-clippy/pull/8621 90 | "float_cmp" => Some(LintGroup::Correctness), // https://github.com/rust-lang/rust-clippy/pull/7692 91 | "format_push_string" => Some(LintGroup::Perf), // https://github.com/rust-lang/rust-clippy/pull/9161 92 | "index_refutable_slice" => Some(LintGroup::Nursery), // https://github.com/rust-lang/rust-clippy/pull/9975 93 | "iter_with_drain" => Some(LintGroup::Perf), // https://github.com/rust-lang/rust-clippy/pull/8541 94 | "manual_clamp" => Some(LintGroup::Complexity), // https://github.com/rust-lang/rust-clippy/pull/10101 95 | "match_wild_err_arm" => Some(LintGroup::Style), // https://github.com/rust-lang/rust-clippy/pull/5622 96 | "mixed_read_write_in_expression" => Some(LintGroup::Suspicious), // https://github.com/rust-lang/rust-clippy/pull/8621 97 | "mutex_atomic" => Some(LintGroup::Perf), // https://github.com/rust-lang/rust-clippy/pull/8260 98 | "needless_collect" => Some(LintGroup::Perf), // https://github.com/rust-lang/rust-clippy/pull/9705 99 | "non_ascii_literal" => Some(LintGroup::Pedantic), // https://github.com/rust-lang/rust-clippy/pull/7907 100 | "range_plus_one" => Some(LintGroup::Complexity), // https://github.com/rust-lang/rust-clippy/pull/5057 101 | "significant_drop_in_scrutinee" => Some(LintGroup::Suspicious), // https://github.com/rust-lang/rust-clippy/pull/9302 102 | "suspicious_operation_groupings" => Some(LintGroup::Style), // https://github.com/rust-lang/rust-clippy/pull/7266 103 | "try_err" => Some(LintGroup::Style), // https://github.com/rust-lang/rust-clippy/pull/8544 104 | "unnecessary_safety_doc" => Some(LintGroup::Style), // https://github.com/rust-lang/rust-clippy/pull/9989 105 | "unnecessary_wraps" => Some(LintGroup::Complexity), // https://github.com/rust-lang/rust-clippy/pull/6765 106 | "verbose_bit_mask" => Some(LintGroup::Style), // https://github.com/rust-lang/rust-clippy/pull/6036 107 | 108 | _ => None, 109 | } 110 | } 111 | -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | #![allow( 2 | clippy::cast_possible_wrap, 3 | clippy::derive_partial_eq_without_eq, 4 | clippy::doc_markdown, 5 | clippy::elidable_lifetime_names, 6 | clippy::items_after_statements, 7 | clippy::let_underscore_untyped, 8 | clippy::match_same_arms, 9 | clippy::needless_lifetimes, 10 | clippy::similar_names, 11 | clippy::too_many_lines, 12 | clippy::uninlined_format_args, 13 | clippy::unwrap_or_default 14 | )] 15 | 16 | mod lints; 17 | mod name; 18 | mod parse; 19 | mod render; 20 | 21 | #[cfg(test)] 22 | mod tests; 23 | 24 | use crate::lints::{Lint, LintGroup, LintLevel}; 25 | use crate::name::Crate; 26 | use crate::render::render; 27 | use anyhow::Result; 28 | use clap::Parser; 29 | use flate2::read::GzDecoder; 30 | use git2::{BranchType, FileMode, Repository, Signature}; 31 | use parking_lot::Mutex; 32 | use proc_macro2::LineColumn; 33 | use rayon::iter::{IntoParallelIterator, ParallelIterator}; 34 | use rayon::ThreadPoolBuilder; 35 | use semver::Version; 36 | use std::cmp::Reverse; 37 | use std::collections::btree_map::{BTreeMap as Map, Entry}; 38 | use std::ffi::OsStr; 39 | use std::fs::File; 40 | use std::io::{self, BufReader, Read, Write}; 41 | use std::iter; 42 | use std::path::{Path, PathBuf}; 43 | use std::sync::Arc; 44 | use syn::visit::Visit; 45 | use syn::{AttrStyle, Attribute}; 46 | use tar::Archive; 47 | use walkdir::WalkDir; 48 | 49 | struct AttrVisitor<'a> { 50 | source_file: &'a SourceFile, 51 | contents: Arc, 52 | findings: &'a Mutex, 53 | lints: &'a Map<&'a str, &'a Lint>, 54 | } 55 | 56 | type Findings = Map>; 57 | 58 | #[derive(Clone, Ord, PartialOrd, Eq, PartialEq)] 59 | struct SourceFile { 60 | krate: Crate, 61 | version: Version, 62 | relative_path: PathBuf, 63 | } 64 | 65 | struct Locations { 66 | contents: Arc, 67 | global: Vec, 68 | local: Vec, 69 | } 70 | 71 | #[derive(Copy, Clone, Ord, PartialOrd, Eq, PartialEq)] 72 | struct Span { 73 | start: LineColumn, 74 | end: LineColumn, 75 | } 76 | 77 | // Find all lint level attributes and count how many times each Clippy lint is 78 | // allowed. 79 | impl<'ast, 'a> Visit<'ast> for AttrVisitor<'a> { 80 | fn visit_attribute(&mut self, attr: &'ast Attribute) { 81 | let attr_path = attr.path(); 82 | let parser = if attr_path.is_ident("allow") { 83 | parse::allow 84 | } else if attr_path.is_ident("cfg_attr") { 85 | parse::cfg_attr 86 | } else { 87 | return; 88 | }; 89 | let Ok(lints) = attr.parse_args_with(parser) else { 90 | return; 91 | }; 92 | if lints.is_empty() { 93 | return; 94 | } 95 | let mut findings = self.findings.lock(); 96 | for (mut lint_id, span) in lints { 97 | lint_id = match self.lints.get(lint_id.as_str()) { 98 | Some(renamed_lint) => renamed_lint.id.clone(), 99 | None => lint_id, 100 | }; 101 | let locations = findings 102 | .entry(lint_id) 103 | .or_insert_with(Map::new) 104 | .entry(self.source_file.clone()) 105 | .or_insert_with(|| Locations { 106 | contents: Arc::clone(&self.contents), 107 | global: Vec::new(), 108 | local: Vec::new(), 109 | }); 110 | match attr.style { 111 | AttrStyle::Outer => locations.local.push(span), 112 | AttrStyle::Inner(_) => locations.global.push(span), 113 | } 114 | } 115 | } 116 | } 117 | 118 | #[derive(Parser)] 119 | #[command(version, author)] 120 | struct Opt { 121 | /// Path to directory containing *.crate files. 122 | /// https://github.com/dtolnay/get-all-crates 123 | #[arg(value_name = "DIR")] 124 | crates_dir: PathBuf, 125 | } 126 | 127 | fn main() -> Result<()> { 128 | let opt = Opt::parse(); 129 | 130 | // Download clippy lints.json to get group and level for every lint. 131 | let lints_vec = lints::download_lint_list()?; 132 | let mut lints = Map::<&str, &Lint>::new(); 133 | for lint in &lints_vec { 134 | lints.insert(&lint.id, lint); 135 | for former_id in &lint.former_ids { 136 | lints.insert(former_id, lint); 137 | } 138 | } 139 | 140 | // Find the most recent version among .crate files with the same crate name. 141 | let mut crate_max_versions = Map::new(); 142 | for entry in WalkDir::new(&opt.crates_dir) { 143 | let entry = entry?; 144 | if let Some((krate, version)) = parse_crate_file_path(&opt.crates_dir, entry.path()) { 145 | match crate_max_versions.entry(krate) { 146 | Entry::Vacant(entry) => { 147 | entry.insert(version); 148 | } 149 | Entry::Occupied(mut entry) => { 150 | if version > *entry.get() { 151 | entry.insert(version); 152 | } 153 | } 154 | } 155 | } 156 | } 157 | 158 | ThreadPoolBuilder::new() 159 | .stack_size(20 * 1024 * 1024) 160 | .build_global() 161 | .unwrap(); 162 | 163 | // Parse .crate files in parallel on rayon thread pool. 164 | let findings = Mutex::new(Map::new()); 165 | crate_max_versions 166 | .into_par_iter() 167 | .for_each(|(krate, version)| { 168 | let path = reconstruct_crate_file_path(&opt.crates_dir, &krate, &version); 169 | if let Err(err) = parse_contents(krate, version, &path, &findings, &lints) { 170 | eprintln!("{}: {}", path.display(), err); 171 | } 172 | }); 173 | 174 | // Limit rendered occurrences per file and per crate. 175 | const MAX_PER_FILE: usize = 5; 176 | const MAX_PER_CRATE: usize = 10; 177 | let mut findings = findings.into_inner(); 178 | for findings in findings.values_mut() { 179 | let mut count_by_crate = Map::new(); 180 | for (source_file, locations) in findings { 181 | locations.global.truncate(MAX_PER_FILE); 182 | locations 183 | .local 184 | .truncate(MAX_PER_FILE - locations.global.len()); 185 | let n = count_by_crate.entry(&source_file.krate).or_insert(0); 186 | let remaining_for_crate = MAX_PER_CRATE - *n; 187 | locations.global.truncate(remaining_for_crate); 188 | locations 189 | .local 190 | .truncate(remaining_for_crate - locations.global.len()); 191 | *n += locations.global.len() + locations.local.len(); 192 | } 193 | } 194 | 195 | // Sort lints by how many times ignored. 196 | let mut findings = Vec::from_iter(&findings); 197 | findings.sort_by_cached_key(|(_lint_id, findings)| { 198 | let sum: usize = findings 199 | .values() 200 | .map(|loc| loc.global.len() + loc.local.len()) 201 | .sum(); 202 | Reverse(sum) 203 | }); 204 | 205 | // Print markdown table of results. 206 | let stdout = io::stdout(); 207 | let mut stdout = stdout.lock(); 208 | let _ = writeln!(stdout, "local | global | lint name | category"); 209 | let _ = writeln!(stdout, "--- | --- | --- | ---"); 210 | let site = "https://dtolnay.github.io/noisy-clippy"; 211 | for (lint_id, findings) in &findings { 212 | let (group, level) = match lints.get(lint_id.as_str()) { 213 | Some(lint) => (lint.group, lint.level), 214 | None => (LintGroup::Unknown, LintLevel::None), 215 | }; 216 | let allowed = level == LintLevel::Allow; 217 | let _ = write!(stdout, "{}", if allowed { "~*" } else { "" }); 218 | let local: usize = findings.values().map(|loc| loc.local.len()).sum(); 219 | let _ = if local == 0 { 220 | write!(stdout, "{}", local) 221 | } else { 222 | write!(stdout, "[{}]({}/{}.html#local)", local, site, lint_id) 223 | }; 224 | let _ = write!(stdout, "{}", if allowed { "*~" } else { "" }); 225 | let _ = write!(stdout, " | "); 226 | let _ = write!(stdout, "{}", if allowed { "~*" } else { "" }); 227 | let global: usize = findings.values().map(|loc| loc.global.len()).sum(); 228 | let _ = if global == 0 { 229 | write!(stdout, "{}", global) 230 | } else { 231 | write!(stdout, "[{}]({}/{}.html#global)", global, site, lint_id) 232 | }; 233 | let _ = write!(stdout, "{}", if allowed { "*~" } else { "" }); 234 | let _ = write!(stdout, " | "); 235 | let _ = write!(stdout, "{}", if allowed { "~*" } else { "**" }); 236 | let clippy_index_html = "https://rust-lang.github.io/rust-clippy/master/index.html"; 237 | let _ = write!(stdout, "[{1}]({0}#{1})", clippy_index_html, lint_id); 238 | let _ = write!(stdout, "{}", if allowed { "*~" } else { "**" }); 239 | let _ = write!(stdout, " | "); 240 | let mut former_group = lints::former_lint_group(lint_id); 241 | if former_group == Some(group) { 242 | former_group = None; 243 | } 244 | if let Some(former_group) = former_group { 245 | let _ = write!(stdout, "~*{}*~ ", former_group); 246 | } 247 | let _ = write!(stdout, "{}", group); 248 | let _ = writeln!(stdout); 249 | } 250 | 251 | for () in iter::once(()) { 252 | let Ok(repo) = Repository::discover(".") else { 253 | break; 254 | }; 255 | let Ok(origin) = repo.find_remote("origin") else { 256 | break; 257 | }; 258 | if origin.url_bytes() != b"gh:dtolnay/noisy-clippy" { 259 | break; 260 | } 261 | 262 | let tree_entries = None; 263 | let mut builder = repo.treebuilder(tree_entries)?; 264 | let filemode = u32::from(FileMode::Blob) as i32; 265 | for (lint_id, findings) in &findings { 266 | let html = render(lint_id, findings); 267 | let filename = format!("{}.html", lint_id); 268 | let oid = repo.blob(html.as_bytes())?; 269 | builder.insert(filename, oid, filemode)?; 270 | } 271 | 272 | let oid = repo.blob(include_bytes!("style.css"))?; 273 | builder.insert("style.css", oid, filemode)?; 274 | let oid = builder.write()?; 275 | 276 | let tree = repo.find_tree(oid)?; 277 | if let Ok(diff) = repo 278 | .find_branch("gh-pages", BranchType::Local) 279 | .and_then(|old_branch| old_branch.get().peel_to_tree()) 280 | .and_then(|old_tree| { 281 | let diff_options = None; 282 | repo.diff_tree_to_tree(Some(&old_tree), Some(&tree), diff_options) 283 | }) 284 | { 285 | if diff.deltas().len() == 0 { 286 | break; 287 | } 288 | } 289 | 290 | let update_ref = None; 291 | let signature = Signature::now("David Tolnay", "dtolnay@gmail.com")?; 292 | let msg = "Update gh-pages"; 293 | let parents = &[]; 294 | let oid = repo.commit(update_ref, &signature, &signature, msg, &tree, parents)?; 295 | 296 | let branch_name = "gh-pages"; 297 | let commit = repo.find_commit(oid)?; 298 | let force = true; 299 | repo.branch(branch_name, &commit, force)?; 300 | } 301 | 302 | Ok(()) 303 | } 304 | 305 | fn parse_crate_file_path(crates_dir: &Path, path: &Path) -> Option<(Crate, Version)> { 306 | let extension = path.extension()?; 307 | if extension != "crate" { 308 | return None; 309 | } 310 | 311 | let file = path.file_name()?.to_str()?; 312 | let first_dot = file.find('.')?; 313 | let separator = file[..first_dot].rfind('-')?; 314 | let crate_name = Crate::new(file[..separator].to_owned()); 315 | let version = Version::parse(&file[1 + separator..file.len() - ".crate".len()]).ok()?; 316 | 317 | if reconstruct_crate_file_path(crates_dir, &crate_name, &version) == path { 318 | Some((crate_name, version)) 319 | } else { 320 | None 321 | } 322 | } 323 | 324 | fn reconstruct_crate_file_path( 325 | crates_dir: &Path, 326 | crate_name: &Crate, 327 | version: &Version, 328 | ) -> PathBuf { 329 | let mut path = crates_dir.to_owned(); 330 | let name_lower = crate_name.to_ascii_lowercase(); 331 | match name_lower.len() { 332 | 1 => path.push("1"), 333 | 2 => path.push("2"), 334 | 3 => path.extend(["3", &name_lower[..1]]), 335 | _ => path.extend([&name_lower[0..2], &name_lower[2..4]]), 336 | } 337 | path.push(name_lower); 338 | path.push(format!("{}-{}.crate", crate_name, version)); 339 | path 340 | } 341 | 342 | fn parse_contents( 343 | krate: Crate, 344 | version: Version, 345 | path: &Path, 346 | findings: &Mutex, 347 | lints: &Map<&str, &Lint>, 348 | ) -> Result<()> { 349 | let file = File::open(path)?; 350 | let reader = BufReader::new(file); 351 | let tar = GzDecoder::new(reader); 352 | let mut archive = Archive::new(tar); 353 | let mut source_file = SourceFile { 354 | krate, 355 | version, 356 | relative_path: PathBuf::new(), 357 | }; 358 | for entry in archive.entries()? { 359 | let mut entry = entry?; 360 | if entry.size() > 10 * 1024 * 1024 { 361 | continue; 362 | } 363 | let path = entry.path()?; 364 | if path.extension() != Some(OsStr::new("rs")) { 365 | continue; 366 | } 367 | let path = path.into_owned(); 368 | let mut contents = String::new(); 369 | if entry.read_to_string(&mut contents).is_err() { 370 | break; 371 | } 372 | let Ok(syn) = syn::parse_file(&contents) else { 373 | continue; 374 | }; 375 | source_file.relative_path = path.iter().skip(1).collect(); 376 | let mut visitor = AttrVisitor { 377 | source_file: &source_file, 378 | contents: Arc::new(contents), 379 | findings, 380 | lints, 381 | }; 382 | visitor.visit_file(&syn); 383 | } 384 | Ok(()) 385 | } 386 | 387 | #[test] 388 | fn test_cli() { 389 | ::command().debug_assert(); 390 | } 391 | -------------------------------------------------------------------------------- /src/name.rs: -------------------------------------------------------------------------------- 1 | use std::cmp::Ordering; 2 | use std::fmt::{self, Display}; 3 | 4 | #[derive(Clone)] 5 | pub(crate) struct Crate(String); 6 | 7 | impl Crate { 8 | pub(crate) fn new(string: String) -> Self { 9 | Crate(string) 10 | } 11 | 12 | pub(crate) fn to_ascii_lowercase(&self) -> String { 13 | self.0.to_ascii_lowercase() 14 | } 15 | } 16 | 17 | impl Display for Crate { 18 | fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result { 19 | Display::fmt(&self.0, formatter) 20 | } 21 | } 22 | 23 | impl Ord for Crate { 24 | fn cmp(&self, rhs: &Self) -> Ordering { 25 | self.0 26 | .bytes() 27 | .map(CaseInsensitiveByte) 28 | .cmp(rhs.0.bytes().map(CaseInsensitiveByte)) 29 | } 30 | } 31 | 32 | impl PartialOrd for Crate { 33 | fn partial_cmp(&self, rhs: &Self) -> Option { 34 | Some(self.cmp(rhs)) 35 | } 36 | } 37 | 38 | impl Eq for Crate {} 39 | 40 | impl PartialEq for Crate { 41 | fn eq(&self, rhs: &Self) -> bool { 42 | self.0 43 | .bytes() 44 | .map(CaseInsensitiveByte) 45 | .eq(rhs.0.bytes().map(CaseInsensitiveByte)) 46 | } 47 | } 48 | 49 | struct CaseInsensitiveByte(u8); 50 | 51 | impl Ord for CaseInsensitiveByte { 52 | fn cmp(&self, rhs: &Self) -> Ordering { 53 | let lhs = if self.0 == b'_' { 54 | b'-' 55 | } else { 56 | self.0.to_ascii_lowercase() 57 | }; 58 | let rhs = if rhs.0 == b'_' { 59 | b'-' 60 | } else { 61 | rhs.0.to_ascii_lowercase() 62 | }; 63 | lhs.cmp(&rhs) 64 | } 65 | } 66 | 67 | impl PartialOrd for CaseInsensitiveByte { 68 | fn partial_cmp(&self, rhs: &Self) -> Option { 69 | Some(self.cmp(rhs)) 70 | } 71 | } 72 | 73 | impl Eq for CaseInsensitiveByte {} 74 | 75 | impl PartialEq for CaseInsensitiveByte { 76 | fn eq(&self, rhs: &Self) -> bool { 77 | self.cmp(rhs) == Ordering::Equal 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /src/parse.rs: -------------------------------------------------------------------------------- 1 | use crate::Span; 2 | use syn::parse::{Error, ParseStream, Result}; 3 | use syn::punctuated::Punctuated; 4 | use syn::{parenthesized, LitStr, Token}; 5 | 6 | mod kw { 7 | syn::custom_keyword!(allow); 8 | syn::custom_keyword!(feature); 9 | } 10 | 11 | // #[allow(clippy::lint_id...)] 12 | pub(crate) fn allow(input: ParseStream) -> Result> { 13 | let paths = Punctuated::::parse_terminated(input)?; 14 | 15 | let mut lints = Vec::new(); 16 | for path in paths { 17 | if path.segments.len() == 2 && path.segments[0].ident == "clippy" { 18 | let clippy_ident = &path.segments[0].ident; 19 | let lint_ident = &path.segments[1].ident; 20 | let span = Span { 21 | start: clippy_ident.span().start(), 22 | end: lint_ident.span().end(), 23 | }; 24 | lints.push((lint_ident.to_string(), span)); 25 | } 26 | } 27 | 28 | Ok(lints) 29 | } 30 | 31 | // #[cfg_attr(feature = "cargo-clippy", allow(lint_id...))] 32 | pub(crate) fn cfg_attr(input: ParseStream) -> Result> { 33 | input.parse::()?; 34 | input.parse::()?; 35 | let feature = input.parse::()?; 36 | if feature.value() != "cargo-clippy" { 37 | let msg = "expected feature = \"cargo-clippy\""; 38 | return Err(Error::new(feature.span(), msg)); 39 | } 40 | input.parse::()?; 41 | input.parse::()?; 42 | 43 | let list; 44 | parenthesized!(list in input); 45 | input.parse::>()?; 46 | 47 | let paths = Punctuated::::parse_terminated(&list)?; 48 | 49 | let mut lints = Vec::new(); 50 | for path in paths { 51 | if let Some(lint_ident) = path.get_ident() { 52 | let span = Span { 53 | start: lint_ident.span().start(), 54 | end: lint_ident.span().end(), 55 | }; 56 | lints.push((lint_ident.to_string(), span)); 57 | } 58 | } 59 | 60 | Ok(lints) 61 | } 62 | -------------------------------------------------------------------------------- /src/render.rs: -------------------------------------------------------------------------------- 1 | use crate::{Locations, SourceFile, Span}; 2 | use proc_macro2::LineColumn; 3 | use std::collections::{BTreeMap as Map, BTreeSet as Set}; 4 | use std::path::Component; 5 | use std::str; 6 | 7 | pub(crate) fn render(lint_id: &str, findings: &Map) -> String { 8 | let mut html = String::new(); 9 | html.push_str("\n"); 10 | html.push_str("\n"); 11 | html.push_str("\n"); 12 | html.push_str(" \n"); 13 | html.push_str(" \n"); 14 | html.push_str("\n"); 15 | html.push_str("\n"); 16 | html.push_str("
    \n"); 17 | 18 | // write files containing a local suppression first 19 | let mut local_anchor = Some("local"); 20 | for (source_file, locations) in findings { 21 | if !locations.local.is_empty() { 22 | let contents = &locations.contents; 23 | let spans = locations 24 | .global 25 | .iter() 26 | .chain(&locations.local) 27 | .copied() 28 | .collect(); 29 | let anchor = local_anchor.take(); 30 | render_file(&mut html, lint_id, source_file, contents, &spans, anchor); 31 | } 32 | } 33 | 34 | // files containing only global suppression 35 | let mut global_anchor = Some("global"); 36 | for (source_file, locations) in findings { 37 | if locations.local.is_empty() && !locations.global.is_empty() { 38 | let contents = &locations.contents; 39 | let spans = locations.global.iter().copied().collect(); 40 | let anchor = global_anchor.take(); 41 | render_file(&mut html, lint_id, source_file, contents, &spans, anchor); 42 | } 43 | } 44 | 45 | html.push_str("
\n"); 46 | html.push_str("\n"); 47 | html.push_str("\n"); 48 | html 49 | } 50 | 51 | fn render_file( 52 | html: &mut String, 53 | lint_id: &str, 54 | source_file: &SourceFile, 55 | contents: &str, 56 | spans: &Set, 57 | anchor: Option<&str>, 58 | ) { 59 | let url = format!( 60 | "https://docs.rs/crate/{}/{}/source/{}#:~:text=clippy%3a%3a{}", 61 | source_file.krate, 62 | source_file.version, 63 | source_file.relative_path.display(), 64 | lint_id, 65 | ); 66 | 67 | html.push_str("
  • \n"); 74 | html.push_str(" \n"); 101 | html.push_str("
    \n"); 104 | html.push_str("
    \n"); 105 | html.push_str("
    \n"); 106 | html.push_str(" \n"); 107 | 108 | let lines: Vec<_> = contents.lines().collect(); 109 | let mut show = vec![false; lines.len()]; 110 | for span in spans { 111 | let (start, end) = (span.start.line, span.end.line); 112 | if start > 1 && !lines[start - 2].trim().is_empty() { 113 | show[start - 2] = true; 114 | } 115 | for i in start..=end { 116 | show[i - 1] = true; 117 | } 118 | if end < lines.len() && !lines[end].trim().is_empty() { 119 | show[end] = true; 120 | } 121 | } 122 | 123 | let mut mark = false; 124 | let mut spans = spans.iter(); 125 | let mut next_span = spans.next(); 126 | let eof = LineColumn { 127 | line: lines.len() + 1, 128 | column: 0, 129 | }; 130 | for (i, line) in lines.iter().enumerate() { 131 | if !show[i] { 132 | continue; 133 | } 134 | 135 | let mut pos = LineColumn { 136 | line: i + 1, 137 | column: 0, 138 | }; 139 | 140 | html.push_str(" \n"); 141 | html.push_str(" \n"); 144 | html.push_str(" \n"); 192 | html.push_str(" \n"); 193 | } 194 | 195 | html.push_str("
    "); 142 | html.push_str(&pos.line.to_string()); 143 | html.push_str("
    \n"); 145 | html.push_str("
    \n"); 146 | html.push_str("
    ");
    147 |         if mark {
    148 |             html.push_str("");
    149 |         }
    150 | 
    151 |         let mut chars = line.chars();
    152 |         while !chars.as_str().is_empty() {
    153 |             let emit_to = match next_span {
    154 |                 Some(span) => {
    155 |                     if mark {
    156 |                         span.end
    157 |                     } else {
    158 |                         span.start
    159 |                     }
    160 |                 }
    161 |                 None => eof,
    162 |             };
    163 | 
    164 |             while pos < emit_to {
    165 |                 let Some(ch) = chars.next() else {
    166 |                     break;
    167 |                 };
    168 |                 html_escape(html, ch);
    169 |                 pos.column += 1;
    170 |             }
    171 | 
    172 |             if pos >= emit_to {
    173 |                 mark ^= true;
    174 |                 if mark {
    175 |                     html.push_str("");
    176 |                 } else {
    177 |                     html.push_str("");
    178 |                     next_span = spans.next();
    179 |                 }
    180 |             }
    181 |         }
    182 | 
    183 |         if mark {
    184 |             html.push_str("");
    185 |         }
    186 |         html.push_str("
    \n"); 187 | if next_span.is_some() && !show.get(i + 1).unwrap_or(&true) { 188 | html.push_str("
    \n"); 189 | } 190 | html.push_str("
    \n"); 191 | html.push_str("
    \n"); 196 | html.push_str("
    \n"); 197 | html.push_str("
    \n"); 198 | html.push_str("
  • \n"); 199 | } 200 | 201 | fn html_escape(html: &mut String, ch: char) { 202 | match ch { 203 | '&' => html.push_str("&"), 204 | '<' => html.push_str("<"), 205 | '>' => html.push_str(">"), 206 | _ => html.push(ch), 207 | } 208 | } 209 | -------------------------------------------------------------------------------- /src/style.css: -------------------------------------------------------------------------------- 1 | html { 2 | box-sizing: border-box; 3 | } 4 | *, 5 | :after, 6 | :before { 7 | box-sizing: inherit; 8 | } 9 | body { 10 | font-family: Roboto, Avenir, sans-serif; 11 | -webkit-font-smoothing: antialiased; 12 | -moz-osx-font-smoothing: grayscale; 13 | margin: 0; 14 | } 15 | table { 16 | border-collapse: collapse; 17 | } 18 | a { 19 | color: #1890ff; 20 | text-decoration: none; 21 | background-color: transparent; 22 | outline: none; 23 | cursor: pointer; 24 | -webkit-transition: color .3s; 25 | transition: color .3s; 26 | -webkit-text-decoration-skip: objects; 27 | } 28 | a:hover { 29 | color: #40a9ff; 30 | } 31 | a:active { 32 | color: #096dd9; 33 | } 34 | a:active, 35 | a:hover { 36 | text-decoration: none; 37 | outline: 0; 38 | } 39 | pre { 40 | font-family: SFMono-Regular, Consolas, Liberation Mono, Menlo, Courier, monospace; 41 | overflow: auto; 42 | } 43 | mark { 44 | background-color: #ffe58f; 45 | border-radius: 2px; 46 | padding: 0; 47 | } 48 | .results-container { 49 | padding: 0 14px 0 0; 50 | list-style: none; 51 | } 52 | .result { 53 | font-family: Roboto, Avenir, sans-serif; 54 | line-height: 1.5; 55 | font-weight: 400; 56 | list-style: none; 57 | text-decoration: none; 58 | display: block; 59 | overflow-wrap: break-word; 60 | overflow: hidden; 61 | } 62 | .result+.result { 63 | margin-top: 32px; 64 | } 65 | .result-title { 66 | font-size: 14px; 67 | padding: 0 2px 6px 22px; 68 | font-weight: 400; 69 | color: #333; 70 | text-decoration: none; 71 | } 72 | .result-body { 73 | line-height: 1.5; 74 | margin-top: 0; 75 | display: flex; 76 | position: relative; 77 | } 78 | .result-background { 79 | background: #fff; 80 | border: 1px solid #f0f0f0; 81 | border-radius: 4px; 82 | box-shadow: 0 0 1px 0 rgba(0, 0, 0, .1); 83 | position: absolute; 84 | top: 0; 85 | bottom: 0; 86 | left: 48px; 87 | right: 0; 88 | } 89 | .result-details { 90 | list-style: none; 91 | width: 100%; 92 | padding: 6px 6px 0; 93 | outline: 0; 94 | z-index: 1; 95 | } 96 | .result-file-info { 97 | display: flex; 98 | justify-content: space-between; 99 | align-items: flex-end; 100 | width: 100%; 101 | padding: 2px 0 0 27px; 102 | } 103 | .result-file { 104 | font-size: 16px; 105 | } 106 | .result-crate { 107 | font-weight: bold; 108 | margin-right: 2px; 109 | } 110 | .result-file-directory { 111 | color: rgba(0, 0, 0, .65); 112 | } 113 | .result-file-name { 114 | font-weight: 500; 115 | } 116 | .lineno { 117 | color: #888; 118 | width: 35px; 119 | font-size: 12px; 120 | line-height: 15px; 121 | padding: 2px 0 1px; 122 | text-align: right; 123 | -webkit-user-select: none; 124 | -moz-user-select: none; 125 | -ms-user-select: none; 126 | user-select: none; 127 | } 128 | .highlight-table { 129 | margin-bottom: 6px; 130 | } 131 | .highlight-table tr:hover { 132 | cursor: pointer; 133 | } 134 | .highlight-table td { 135 | padding: 0; 136 | vertical-align: top; 137 | } 138 | .highlight-table pre { 139 | color: #262626; 140 | margin: 0; 141 | font-size: 12px; 142 | } 143 | .highlight-table td:nth-child(2) { 144 | width: 100%; 145 | } 146 | .highlight { 147 | padding-left: 15px; 148 | } 149 | .jump { 150 | height: 14px; 151 | margin: 0 -5px 0 -7px; 152 | background-color: #f2f2f2; 153 | } 154 | -------------------------------------------------------------------------------- /src/tests.rs: -------------------------------------------------------------------------------- 1 | use crate::name::Crate; 2 | use crate::{AttrVisitor, SourceFile}; 3 | use parking_lot::Mutex; 4 | use quote::quote; 5 | use semver::Version; 6 | use std::collections::BTreeMap as Map; 7 | use std::path::PathBuf; 8 | use std::sync::Arc; 9 | use syn::visit::Visit; 10 | use syn::File; 11 | 12 | #[test] 13 | fn test_attr_visitor() { 14 | let input = quote! { 15 | #![allow(clippy::asdf)] 16 | 17 | fn main() { 18 | #[cfg_attr(feature = "cargo-clippy", allow(jkl))] 19 | let _; 20 | } 21 | }; 22 | 23 | let findings = Mutex::new(Map::new()); 24 | let mut visitor = AttrVisitor { 25 | source_file: &SourceFile { 26 | krate: Crate::new("test".to_owned()), 27 | version: Version::new(0, 0, 0), 28 | relative_path: PathBuf::from("src/lib.rs"), 29 | }, 30 | contents: Arc::new(input.to_string()), 31 | findings: &findings, 32 | lints: &Map::new(), 33 | }; 34 | 35 | let file: File = syn::parse_str(&visitor.contents).unwrap(); 36 | visitor.visit_file(&file); 37 | 38 | let findings = findings.into_inner(); 39 | assert_eq!(findings["asdf"].len(), 1); 40 | assert_eq!(findings["jkl"].len(), 1); 41 | } 42 | --------------------------------------------------------------------------------