Retain mut in static mut #130
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/.
|