Skip to content

Retain mut in static mut #130

Retain mut in static mut

Retain mut in static mut #130

Triggered via pull request May 10, 2024 11:29
Status Success
Total duration 48s
Artifacts

rust.yml

on: pull_request
Fit to window
Zoom out
Zoom in

Annotations

44 warnings
Audit
Node.js 16 actions are deprecated. Please update the following actions to use Node.js 20: actions-rs/audit-check@v1. For more information see: https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/.
Audit
The following actions uses node12 which is deprecated and will be forced to run on node16: actions-rs/audit-check@v1. For more info: https://github.blog/changelog/2023-06-13-github-actions-all-actions-will-run-on-node16-instead-of-node12-by-default/
using `clone` on type `FormatConfig` which implements the `Copy` trait: src/bin/genemichaels.rs#L342
warning: using `clone` on type `FormatConfig` which implements the `Copy` trait --> src/bin/genemichaels.rs:342:22 | 342 | let config = self.config.clone(); | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.config` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy = note: `#[warn(clippy::clone_on_copy)]` on by default
unneeded `return` statement: src/bin/genemichaels.rs#L325
warning: unneeded `return` statement --> src/bin/genemichaels.rs:325:9 | 325 | / return FormatPool { 326 | | log: log.clone(), 327 | | config: config, 328 | | pool: { ... | 335 | | errors: Arc::new(Mutex::new(vec![])), 336 | | }; | |_________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return help: remove `return` | 325 ~ FormatPool { 326 + log: log.clone(), 327 + config: config, 328 + pool: { 329 + let mut p = threadpool::Builder::new(); 330 + if let Some(t) = thread_count { 331 + p = p.num_threads(t); 332 + } 333 + p.build() 334 + }, 335 + errors: Arc::new(Mutex::new(vec![])), 336 ~ } |
this expression creates a reference which is immediately dereferenced by the compiler: src/bin/genemichaels.rs#L181
warning: this expression creates a reference which is immediately dereferenced by the compiler --> src/bin/genemichaels.rs:181:38 | 181 | let config = load_config(&log, &[args.config, Some(PathBuf::from(CONFIG_JSON))])?; | ^^^^ help: change this to: `log` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
this expression creates a reference which is immediately dereferenced by the compiler: src/bin/genemichaels.rs#L166
warning: this expression creates a reference which is immediately dereferenced by the compiler --> src/bin/genemichaels.rs:166:38 | 166 | let config = load_config(&log, &[args.config, Some(PathBuf::from(CONFIG_JSON))])?; | ^^^^ help: change this to: `log` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow = note: `#[warn(clippy::needless_borrow)]` on by default
unneeded `return` statement: src/bin/genemichaels.rs#L102
warning: unneeded `return` statement --> src/bin/genemichaels.rs:102:21 | 102 | return true; | ^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return help: remove `return` | 102 - return true; 102 + true |
question mark operator is useless here: src/bin/genemichaels.rs#L93
warning: question mark operator is useless here --> src/bin/genemichaels.rs:93:12 | 93 | return Ok( | ____________^ 94 | | serde_json::from_str( 95 | | &String::from_utf8(read(path).log_context(log, "Failed to read config file")?) 96 | | .log_context(log, "Failed to decode file as utf8")? ... | 106 | | ).log_context(log, "Failed to parse file as json")?, 107 | | ); | |_____^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark = note: `#[warn(clippy::needless_question_mark)]` on by default help: try removing question mark and `Ok()` | 93 ~ return serde_json::from_str( 94 + &String::from_utf8(read(path).log_context(log, "Failed to read config file")?) 95 + .log_context(log, "Failed to decode file as utf8")? 96 + .lines() 97 + .filter(|l| { 98 + if l.trim_start().starts_with("//") { 99 + return false; 100 + } 101 + return true; 102 + }) 103 + .collect::<Vec<&str>>() 104 + .join("\n"), 105 ~ ).log_context(log, "Failed to parse file as json"); |
this `let...else` may be rewritten with the `?` operator: src/bin/genemichaels.rs#L80
warning: this `let...else` may be rewritten with the `?` operator --> src/bin/genemichaels.rs:80:9 | 80 | / let Some(p) = p else { 81 | | return None; 82 | | }; | |__________^ help: replace it with: `let p = p?;` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark = note: `#[warn(clippy::question_mark)]` on by default
unneeded `return` statement: src/bin/genemichaels.rs#L87
warning: unneeded `return` statement --> src/bin/genemichaels.rs:87:9 | 87 | return Some(p); | ^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return help: remove `return` | 87 - return Some(p); 87 + Some(p) |
unneeded `return` statement: src/bin/genemichaels.rs#L93
warning: unneeded `return` statement --> src/bin/genemichaels.rs:93:5 | 93 | / return Ok( 94 | | serde_json::from_str( 95 | | &String::from_utf8(read(path).log_context(log, "Failed to read config file")?) 96 | | .log_context(log, "Failed to decode file as utf8")? ... | 106 | | ).log_context(log, "Failed to parse file as json")?, 107 | | ); | |_____^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return = note: `#[warn(clippy::needless_return)]` on by default help: remove `return` | 93 ~ Ok( 94 + serde_json::from_str( 95 + &String::from_utf8(read(path).log_context(log, "Failed to read config file")?) 96 + .log_context(log, "Failed to decode file as utf8")? 97 + .lines() 98 + .filter(|l| { 99 + if l.trim_start().starts_with("//") { 100 + return false; 101 + } 102 + return true; 103 + }) 104 + .collect::<Vec<&str>>() 105 + .join("\n"), 106 + ).log_context(log, "Failed to parse file as json")?, 107 ~ ) |
redundant field names in struct initialization: src/bin/genemichaels.rs#L327
warning: redundant field names in struct initialization --> src/bin/genemichaels.rs:327:13 | 327 | config: config, | ^^^^^^^^^^^^^^ help: replace it with: `config` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names = note: `#[warn(clippy::redundant_field_names)]` on by default
using `clone` on type `FormatConfig` which implements the `Copy` trait: src/lib.rs#L544
warning: using `clone` on type `FormatConfig` which implements the `Copy` trait --> src/lib.rs:544:17 | 544 | config: config.clone(), | ^^^^^^^^^^^^^^ help: try dereferencing it: `*config` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy = note: `#[warn(clippy::clone_on_copy)]` on by default
accessing first element with `new_segs.get(0)`: src/lib.rs#L202
warning: accessing first element with `new_segs.get(0)` --> src/lib.rs:202:21 | 202 | let seg_i = new_segs.get(0).unwrap(); | ^^^^^^^^^^^^^^^ help: try: `new_segs.first()` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first
this loop could be written as a `while let` loop: src/sg_pat.rs#L78
warning: this loop could be written as a `while let` loop --> src/sg_pat.rs:78:29 | 78 | / ... loop { 79 | | ... let t = match at.1.as_ref() { 80 | | ... Pat::Tuple(t) => t, 81 | | ... _ => break, ... | 124 | | ... return sg0.build(out); 125 | | ... }; | |_______________________^ help: try: `while let Pat::Tuple(t) = at.1.as_ref() { .. }` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop = note: `#[warn(clippy::while_let_loop)]` on by default
unneeded `return` statement: src/sg_general.rs#L566
warning: unneeded `return` statement --> src/sg_general.rs:566:17 | 566 | / return Some(Whitespace { 567 | | loc: w.loc, 568 | | mode: WhitespaceMode::Comment(c), 569 | | }); | |__________________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return help: remove `return` | 566 ~ Some(Whitespace { 567 + loc: w.loc, 568 + mode: WhitespaceMode::Comment(c), 569 ~ }) |
unneeded `return` statement: src/sg_general.rs#L560
warning: unneeded `return` statement --> src/sg_general.rs:560:17 | 560 | / return Some(Whitespace { 561 | | loc: w.loc, 562 | | mode: WhitespaceMode::BlankLines(use_lines), 563 | | }); | |__________________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return help: remove `return` | 560 ~ Some(Whitespace { 561 + loc: w.loc, 562 + mode: WhitespaceMode::BlankLines(use_lines), 563 ~ }) |
accessing first element with `children.get(0)`: src/sg_expr.rs#L165
warning: accessing first element with `children.get(0)` --> src/sg_expr.rs:165:48 | 165 | sg.child(build_child(out, base_indent, children.get(0).unwrap())); | ^^^^^^^^^^^^^^^ help: try: `children.first()` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first
this expression creates a reference which is immediately dereferenced by the compiler: src/whitespace.rs#L981
warning: this expression creates a reference which is immediately dereferenced by the compiler --> src/whitespace.rs:981:29 | 981 | unicode_len(&prefix), | ^^^^^^^ help: change this to: `prefix` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
in a `match` scrutinee, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a `let`: src/whitespace.rs#L967
warning: in a `match` scrutinee, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a `let` --> src/whitespace.rs:967:15 | 967 | match es!({ | _______________^ 968 | | let mut out = String::new(); 969 | | let mut state = State { 970 | | line_buffer: String::new(), ... | 991 | | Ok(out) 992 | | }) { | |_____^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blocks_in_conditions = note: `#[warn(clippy::blocks_in_conditions)]` on by default
accessing first element with `x.children.get(0)`: src/whitespace.rs#L910
warning: accessing first element with `x.children.get(0)` --> src/whitespace.rs:910:17 | 910 | x.children.get(0) | ^^^^^^^^^^^^^^^^^ help: try: `x.children.first()` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first
accessing first element with `x.children.get(0)`: src/whitespace.rs#L853
warning: accessing first element with `x.children.get(0)` --> src/whitespace.rs:853:17 | 853 | x.children.get(0) | ^^^^^^^^^^^^^^^^^ help: try: `x.children.first()` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first = note: `#[warn(clippy::get_first)]` on by default
this expression borrows a value the compiler would automatically borrow: src/whitespace.rs#L627
warning: this expression borrows a value the compiler would automatically borrow --> src/whitespace.rs:627:70 | 627 | write_forward_breaks(state, &mut s, out, max_len, false, (&text[b..]).to_string(), b, breaks); | ^^^^^^^^^^^^ help: change this to: `text[b..]` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
this expression borrows a value the compiler would automatically borrow: src/whitespace.rs#L612
warning: this expression borrows a value the compiler would automatically borrow --> src/whitespace.rs:612:17 | 612 | (&text[found.writable..]).to_string(), | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `text[found.writable..]` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
this expression creates a reference which is immediately dereferenced by the compiler: src/whitespace.rs#L565
warning: this expression creates a reference which is immediately dereferenced by the compiler --> src/whitespace.rs:565:40 | 565 | state.line_buffer.push_str(&text); | ^^^^^ help: change this to: `text` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
this expression creates a reference which is immediately dereferenced by the compiler: src/whitespace.rs#L550
warning: this expression creates a reference which is immediately dereferenced by the compiler --> src/whitespace.rs:550:50 | 550 | writable: if width + unicode_len(&text) > max_len { | ^^^^^ help: change this to: `text` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow = note: `#[warn(clippy::needless_borrow)]` on by default
unneeded `return` statement: src/whitespace.rs#L549
warning: unneeded `return` statement --> src/whitespace.rs:549:13 | 549 | / return FoundWritableLen { 550 | | writable: if width + unicode_len(&text) > max_len { 551 | | writable 552 | | } else { ... | 556 | | next_break: None, 557 | | }; | |_____________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return = note: `#[warn(clippy::needless_return)]` on by default help: remove `return` | 549 ~ FoundWritableLen { 550 + writable: if width + unicode_len(&text) > max_len { 551 + writable 552 + } else { 553 + text.len() 554 + }, 555 + previous_break: previous_break, 556 + next_break: None, 557 ~ } |
calling `push_str()` using a single-character string literal: src/whitespace.rs#L259
warning: calling `push_str()` using a single-character string literal --> src/whitespace.rs:259:25 | 259 | previous_comment.lines.push_str("\n"); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `previous_comment.lines.push('\n')` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str = note: `#[warn(clippy::single_char_add_str)]` on by default
use of `or_insert` to construct default value: src/whitespace.rs#L240
warning: use of `or_insert` to construct default value --> src/whitespace.rs:240:79 | 240 | let whitespaces = self.whitespaces.entry(HashLineColumn(end)).or_insert(vec![]); | ^^^^^^^^^^^^^^^^^ help: try: `or_default()` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default = note: `#[warn(clippy::unwrap_or_default)]` on by default
useless conversion to the same type: `&str`: src/whitespace.rs#L183
warning: useless conversion to the same type: `&str` --> src/whitespace.rs:183:65 | 183 | ... buffer.add(CommentMode::Normal, "".into()); | ^^^^^^^^^ help: consider removing `.into()`: `""` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion = note: `#[warn(clippy::useless_conversion)]` on by default
redundant field names in struct initialization: src/lib.rs#L845
warning: redundant field names in struct initialization --> src/lib.rs:845:9 | 845 | warnings: warnings, | ^^^^^^^^^^^^^^^^^^ help: replace it with: `warnings` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names
redundant field names in struct initialization: src/lib.rs#L843
warning: redundant field names in struct initialization --> src/lib.rs:843:9 | 843 | rendered: rendered, | ^^^^^^^^^^^^^^^^^^ help: replace it with: `rendered` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names
redundant field names in struct initialization: src/whitespace.rs#L555
warning: redundant field names in struct initialization --> src/whitespace.rs:555:17 | 555 | previous_break: previous_break, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `previous_break` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names
redundant field names in struct initialization: src/whitespace.rs#L543
warning: redundant field names in struct initialization --> src/whitespace.rs:543:25 | 543 | next_break: next_break, | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `next_break` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names
redundant field names in struct initialization: src/whitespace.rs#L542
warning: redundant field names in struct initialization --> src/whitespace.rs:542:25 | 542 | previous_break: previous_break, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `previous_break` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names
redundant field names in struct initialization: src/whitespace.rs#L541
warning: redundant field names in struct initialization --> src/whitespace.rs:541:25 | 541 | writable: writable, | ^^^^^^^^^^^^^^^^^^ help: replace it with: `writable` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names
redundant field names in struct initialization: src/whitespace.rs#L465
warning: redundant field names in struct initialization --> src/whitespace.rs:465:13 | 465 | base_prefix_len: base_prefix_len, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `base_prefix_len` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names
redundant field names in struct initialization: src/whitespace.rs#L312
warning: redundant field names in struct initialization --> src/whitespace.rs:312:9 | 312 | line_lookup: line_lookup, | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `line_lookup` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names
redundant field names in struct initialization: src/whitespace.rs#L311
warning: redundant field names in struct initialization --> src/whitespace.rs:311:9 | 311 | keep_max_blank_lines: keep_max_blank_lines, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `keep_max_blank_lines` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names
redundant field names in struct initialization: src/whitespace.rs#L310
warning: redundant field names in struct initialization --> src/whitespace.rs:310:9 | 310 | source: source, | ^^^^^^^^^^^^^^ help: replace it with: `source` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names = note: `#[warn(clippy::redundant_field_names)]` on by default
lint `clippy::derive_hash_xor_eq` has been renamed to `clippy::derived_hash_with_manual_eq`: src/lib.rs#L5
warning: lint `clippy::derive_hash_xor_eq` has been renamed to `clippy::derived_hash_with_manual_eq` --> src/lib.rs:5:5 | 5 | clippy::derive_hash_xor_eq, | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `clippy::derived_hash_with_manual_eq` | = note: `#[warn(renamed_and_removed_lints)]` on by default
Clippy
Node.js 16 actions are deprecated. Please update the following actions to use Node.js 20: actions-rs/clippy-check@v1. For more information see: https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/.
Clippy
The following actions uses node12 which is deprecated and will be forced to run on node16: actions-rs/clippy-check@v1. For more info: https://github.blog/changelog/2023-06-13-github-actions-all-actions-will-run-on-node16-instead-of-node12-by-default/
Test
Node.js 16 actions are deprecated. Please update the following actions to use Node.js 20: actions/checkout@v3. For more information see: https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/.