[INFO] cloning repository https://github.com/hawkinsw/Item105 [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/hawkinsw/Item105" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhawkinsw%2FItem105", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhawkinsw%2FItem105'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 4de63c68dbb951127d6e36469f00b16feb4f7906 [INFO] linting hawkinsw/Item105 against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhawkinsw%2FItem105" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/hawkinsw/Item105 [INFO] finished tweaking git repo https://github.com/hawkinsw/Item105 [INFO] tweaked toml for git repo https://github.com/hawkinsw/Item105 written to /workspace/builds/worker-0-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/hawkinsw/Item105 on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/hawkinsw/Item105 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded serde_derive v1.0.200 [INFO] [stderr] Downloaded thiserror-impl v1.0.59 [INFO] [stderr] Downloaded twitter-v2 v0.1.8 [INFO] [stderr] Downloaded is-terminal v0.4.12 [INFO] [stderr] Downloaded oauth-credentials v0.3.0 [INFO] [stderr] Downloaded diligent-date-parser v0.1.4 [INFO] [stderr] Downloaded darling_macro v0.14.4 [INFO] [stderr] Downloaded derive_builder_macro v0.12.0 [INFO] [stderr] Downloaded clio v0.3.5 [INFO] [stderr] Downloaded oauth1-request v0.5.1 [INFO] [stderr] Downloaded derive_builder v0.12.0 [INFO] [stderr] Downloaded darling_core v0.14.4 [INFO] [stderr] Downloaded cc v1.0.96 [INFO] [stderr] Downloaded oauth2 v4.4.2 [INFO] [stderr] Downloaded http v1.1.0 [INFO] [stderr] Downloaded prometheus v0.13.3 [INFO] [stderr] Downloaded protobuf v2.28.0 [INFO] [stderr] Downloaded security-framework v2.10.0 [INFO] [stderr] Downloaded serde_json v1.0.116 [INFO] [stderr] Downloaded backtrace v0.3.71 [INFO] [stderr] Downloaded ryu v1.0.17 [INFO] [stderr] Downloaded parking_lot v0.12.2 [INFO] [stderr] Downloaded regex v1.10.4 [INFO] [stderr] Downloaded rss v2.0.7 [INFO] [stderr] Downloaded oauth1-request-derive v0.4.2 [INFO] [stderr] Downloaded rustversion v1.0.15 [INFO] [stderr] Downloaded regex-syntax v0.8.3 [INFO] [stderr] Downloaded serde_path_to_error v0.1.16 [INFO] [stderr] Downloaded strum_macros v0.24.3 [INFO] [stderr] Downloaded serde v1.0.200 [INFO] [stderr] Downloaded atom_syndication v0.12.2 [INFO] [stderr] Downloaded darling v0.14.4 [INFO] [stderr] Downloaded derive_builder_core v0.12.0 [INFO] [stderr] Downloaded security-framework-sys v2.10.0 [INFO] [stderr] Downloaded native-tls v0.2.11 [INFO] [stderr] Downloaded wasm-streams v0.4.0 [INFO] [stderr] Downloaded thiserror v1.0.59 [INFO] [stderr] Downloaded never v0.1.0 [INFO] [stderr] Downloaded sha-1 v0.9.8 [INFO] [stderr] Downloaded redox_syscall v0.5.1 [INFO] [stderr] Downloaded regex-automata v0.4.6 [INFO] [stderr] Downloaded libc v0.2.154 [INFO] [stderr] Downloaded tokio v1.37.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] a6fa9819e1c61fb141992aabe5ce63cff947c9d705b0483c06bafa45099dd452 [INFO] running `Command { std: "docker" "start" "-a" "a6fa9819e1c61fb141992aabe5ce63cff947c9d705b0483c06bafa45099dd452", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "a6fa9819e1c61fb141992aabe5ce63cff947c9d705b0483c06bafa45099dd452", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a6fa9819e1c61fb141992aabe5ce63cff947c9d705b0483c06bafa45099dd452", kill_on_drop: false }` [INFO] [stdout] a6fa9819e1c61fb141992aabe5ce63cff947c9d705b0483c06bafa45099dd452 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 06fdd619418b456b84d1673876b28b505317dc4291280a07086567275fd10348 [INFO] running `Command { std: "docker" "start" "-a" "06fdd619418b456b84d1673876b28b505317dc4291280a07086567275fd10348", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.81 [INFO] [stderr] Compiling libc v0.2.154 [INFO] [stderr] Compiling cc v1.0.96 [INFO] [stderr] Checking pin-project-lite v0.2.14 [INFO] [stderr] Checking memchr v2.7.2 [INFO] [stderr] Compiling serde v1.0.200 [INFO] [stderr] Checking bytes v1.6.0 [INFO] [stderr] Compiling parking_lot_core v0.9.10 [INFO] [stderr] Checking itoa v1.0.11 [INFO] [stderr] Compiling lock_api v0.4.12 [INFO] [stderr] Checking smallvec v1.13.2 [INFO] [stderr] Compiling slab v0.4.9 [INFO] [stderr] Compiling pkg-config v0.3.30 [INFO] [stderr] Checking bitflags v2.5.0 [INFO] [stderr] Checking log v0.4.21 [INFO] [stderr] Checking spin v0.9.8 [INFO] [stderr] Checking untrusted v0.9.0 [INFO] [stderr] Checking tracing v0.1.40 [INFO] [stderr] Checking hashbrown v0.14.5 [INFO] [stderr] Compiling openssl v0.10.64 [INFO] [stderr] Compiling num-traits v0.2.18 [INFO] [stderr] Compiling rustls v0.21.12 [INFO] [stderr] Compiling native-tls v0.2.11 [INFO] [stderr] Compiling ident_case v1.0.1 [INFO] [stderr] Compiling strsim v0.10.0 [INFO] [stderr] Checking encoding_rs v0.8.34 [INFO] [stderr] Checking openssl-probe v0.1.5 [INFO] [stderr] Checking http v0.2.12 [INFO] [stderr] Checking unicode-normalization v0.1.23 [INFO] [stderr] Compiling proc-macro-error-attr v1.0.4 [INFO] [stderr] Checking ryu v1.0.17 [INFO] [stderr] Checking unicode-bidi v0.3.15 [INFO] [stderr] Compiling serde_json v1.0.116 [INFO] [stderr] Checking iana-time-zone v0.1.60 [INFO] [stderr] Compiling proc-macro-error v1.0.4 [INFO] [stderr] Checking utf8parse v0.2.1 [INFO] [stderr] Compiling rustversion v1.0.15 [INFO] [stderr] Compiling winnow v0.5.40 [INFO] [stderr] Compiling thiserror v1.0.59 [INFO] [stderr] Compiling toml_datetime v0.6.5 [INFO] [stderr] Checking anstyle-parse v0.2.4 [INFO] [stderr] Checking crypto-common v0.1.6 [INFO] [stderr] Checking digest v0.9.0 [INFO] [stderr] Checking webpki-roots v0.25.4 [INFO] [stderr] Compiling quote v1.0.36 [INFO] [stderr] Checking idna v0.5.0 [INFO] [stderr] Checking indexmap v2.2.6 [INFO] [stderr] Checking anstyle-query v1.0.3 [INFO] [stderr] Checking anstyle v1.0.7 [INFO] [stderr] Compiling rustix v0.38.34 [INFO] [stderr] Checking getrandom v0.2.14 [INFO] [stderr] Checking socket2 v0.5.7 [INFO] [stderr] Compiling syn v2.0.60 [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Checking mio v0.8.11 [INFO] [stderr] Checking num_cpus v1.16.0 [INFO] [stderr] Checking parking_lot v0.12.2 [INFO] [stderr] Checking signal-hook-registry v1.4.2 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Compiling openssl-sys v0.9.102 [INFO] [stderr] Compiling ring v0.17.8 [INFO] [stderr] Checking ipnet v2.9.0 [INFO] [stderr] Checking is_terminal_polyfill v1.70.0 [INFO] [stderr] Checking subtle v2.4.1 [INFO] [stderr] Checking colorchoice v1.0.1 [INFO] [stderr] Checking http-body v0.4.6 [INFO] [stderr] Checking digest v0.10.7 [INFO] [stderr] Checking crypto-mac v0.11.1 [INFO] [stderr] Checking block-buffer v0.9.0 [INFO] [stderr] Checking opaque-debug v0.3.1 [INFO] [stderr] Compiling protobuf v2.28.0 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking anstream v0.6.14 [INFO] [stderr] Checking base64 v0.13.1 [INFO] [stderr] Checking clap_lex v0.7.0 [INFO] [stderr] Compiling heck v0.4.1 [INFO] [stderr] Checking linux-raw-sys v0.4.13 [INFO] [stderr] Checking sha-1 v0.9.8 [INFO] [stderr] Checking clap_builder v4.5.2 [INFO] [stderr] Checking hmac v0.11.0 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking sha2 v0.10.8 [INFO] [stderr] Checking quick-xml v0.30.0 [INFO] [stderr] Checking aho-corasick v1.1.3 [INFO] [stderr] Checking oauth-credentials v0.3.0 [INFO] [stderr] Compiling prometheus v0.13.3 [INFO] [stderr] Checking fastrand v2.1.0 [INFO] [stderr] Checking never v0.1.0 [INFO] [stderr] Checking regex-syntax v0.8.3 [INFO] [stderr] Checking num-conv v0.1.0 [INFO] [stderr] Checking is-terminal v0.4.12 [INFO] [stderr] Checking lazy_static v1.4.0 [INFO] [stderr] Checking http v1.1.0 [INFO] [stderr] Compiling toml_edit v0.19.15 [INFO] [stderr] Checking regex-automata v0.4.6 [INFO] [stderr] Checking tempfile v3.10.1 [INFO] [stderr] Compiling serde_derive v1.0.200 [INFO] [stderr] Compiling tokio-macros v2.2.0 [INFO] [stderr] Compiling futures-macro v0.3.30 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Compiling thiserror-impl v1.0.59 [INFO] [stderr] Compiling clap_derive v4.5.4 [INFO] [stderr] Compiling async-trait v0.1.80 [INFO] [stderr] Compiling proc-macro-crate v1.3.1 [INFO] [stderr] Checking tokio v1.37.0 [INFO] [stderr] Checking futures-util v0.3.30 [INFO] [stderr] Compiling darling_core v0.14.4 [INFO] [stderr] Compiling oauth1-request-derive v0.4.2 [INFO] [stderr] Compiling strum_macros v0.24.3 [INFO] [stderr] Checking sct v0.7.1 [INFO] [stderr] Checking rustls-webpki v0.101.7 [INFO] [stderr] Checking oauth1-request v0.5.1 [INFO] [stderr] Checking regex v1.10.4 [INFO] [stderr] Checking clap v4.5.4 [INFO] [stderr] Checking clio v0.3.5 [INFO] [stderr] Compiling darling_macro v0.14.4 [INFO] [stderr] Checking strum v0.24.1 [INFO] [stderr] Compiling darling v0.14.4 [INFO] [stderr] Compiling derive_builder_core v0.12.0 [INFO] [stderr] Compiling derive_builder_macro v0.12.0 [INFO] [stderr] Checking futures-executor v0.3.30 [INFO] [stderr] Checking futures v0.3.30 [INFO] [stderr] Checking derive_builder v0.12.0 [INFO] [stderr] Checking tokio-util v0.7.10 [INFO] [stderr] Checking tokio-rustls v0.24.1 [INFO] [stderr] Checking tokio-native-tls v0.3.1 [INFO] [stderr] Checking h2 v0.3.26 [INFO] [stderr] Checking chrono v0.4.38 [INFO] [stderr] Checking url v2.5.0 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking serde_path_to_error v0.1.16 [INFO] [stderr] Checking deranged v0.3.11 [INFO] [stderr] Checking time v0.3.36 [INFO] [stderr] Checking diligent-date-parser v0.1.4 [INFO] [stderr] Checking atom_syndication v0.12.2 [INFO] [stderr] Checking rss v2.0.7 [INFO] [stderr] Checking hyper v0.14.28 [INFO] [stderr] Checking hyper-tls v0.5.0 [INFO] [stderr] Checking hyper-rustls v0.24.2 [INFO] [stderr] Checking reqwest v0.11.27 [INFO] [stderr] Checking oauth2 v4.4.2 [INFO] [stderr] Checking twitter-v2 v0.1.8 [INFO] [stderr] Checking item105 v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `chrono::format::Fixed` [INFO] [stdout] --> src/main.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use chrono::format::Fixed; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `chrono::format::Fixed` [INFO] [stdout] --> src/main.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use chrono::format::Fixed; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `result` [INFO] [stdout] --> src/main.rs:244:19 [INFO] [stdout] | [INFO] [stdout] 244 | if let Ok(result) = result { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `ip` and `port` are never read [INFO] [stdout] --> src/main.rs:84:5 [INFO] [stdout] | [INFO] [stdout] 83 | pub struct PrometheusConfig { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] 84 | ip: IpAddr, [INFO] [stdout] | ^^ [INFO] [stdout] 85 | port: u16, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PrometheusConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `prometheus` is never read [INFO] [stdout] --> src/main.rs:93:9 [INFO] [stdout] | [INFO] [stdout] 89 | struct Item105Config { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 93 | pub prometheus: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Item105Config` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Result.or_else(|x| Err(y))`, which is more succinctly expressed as `map_err(|x| y)` [INFO] [stdout] --> src/main.rs:71:5 [INFO] [stdout] | [INFO] [stdout] 71 | client.execute(request).await.or_else(|e| Err(e.into())) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `client.execute(request).await.map_err(|e| e.into())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] = note: `#[warn(clippy::bind_instead_of_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `port` is never read [INFO] [stdout] --> src/main.rs:85:5 [INFO] [stdout] | [INFO] [stdout] 83 | pub struct PrometheusConfig { [INFO] [stdout] | ---------------- field in this struct [INFO] [stdout] 84 | ip: IpAddr, [INFO] [stdout] 85 | port: u16, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PrometheusConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Result.or_else(|x| Err(y))`, which is more succinctly expressed as `map_err(|x| y)` [INFO] [stdout] --> src/main.rs:71:5 [INFO] [stdout] | [INFO] [stdout] 71 | client.execute(request).await.or_else(|e| Err(e.into())) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `client.execute(request).await.map_err(|e| e.into())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] = note: `#[warn(clippy::bind_instead_of_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:261:5 [INFO] [stdout] | [INFO] [stdout] 261 | / return String::from_utf8( [INFO] [stdout] 262 | | client [INFO] [stdout] 263 | | .request(reqwest::Method::GET, url) [INFO] [stdout] 264 | | .header( [INFO] [stdout] ... | [INFO] [stdout] 274 | | .map_err(Into::into); [INFO] [stdout] | |________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 261 ~ String::from_utf8( [INFO] [stdout] 262 + client [INFO] [stdout] 263 + .request(reqwest::Method::GET, url) [INFO] [stdout] 264 + .header( [INFO] [stdout] 265 + reqwest::header::USER_AGENT, [INFO] [stdout] 266 + "SEC Insights - Item502 and Item105 Twitter Bots hawkinwh@ucmail.uc.edu", [INFO] [stdout] 267 + ) [INFO] [stdout] 268 + .send() [INFO] [stdout] 269 + .await? [INFO] [stdout] 270 + .bytes() [INFO] [stdout] 271 + .await? [INFO] [stdout] 272 + .to_vec(), [INFO] [stdout] 273 + ) [INFO] [stdout] 274 ~ .map_err(Into::into) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:278:5 [INFO] [stdout] | [INFO] [stdout] 278 | return Ok(serde_json::from_str::(value.as_str())?); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 278 - return Ok(serde_json::from_str::(value.as_str())?); [INFO] [stdout] 278 + Ok(serde_json::from_str::(value.as_str())?) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/main.rs:313:45 [INFO] [stdout] | [INFO] [stdout] 313 | let times: Vec> = recent [INFO] [stdout] | _____________________________________________^ [INFO] [stdout] 314 | | .as_object() [INFO] [stdout] 315 | | .and_then(|obj| obj.get("acceptanceDateTime")) [INFO] [stdout] 316 | | .and_then(|obj| obj.as_array()) [INFO] [stdout] ... | [INFO] [stdout] 326 | | }) [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 313 ~ let times: Vec> = recent [INFO] [stdout] 314 + .as_object() [INFO] [stdout] 315 + .and_then(|obj| obj.get("acceptanceDateTime")) [INFO] [stdout] 316 + .and_then(|obj| obj.as_array()).map(|obj| obj.iter() [INFO] [stdout] 317 + .map_while(|raw| { [INFO] [stdout] 318 + raw.as_str() [INFO] [stdout] 319 + .and_then(|raw_str| DateTime::parse_from_rfc3339(raw_str).ok()) [INFO] [stdout] 320 + }) [INFO] [stdout] 321 + .collect()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> src/main.rs:171:5 [INFO] [stdout] | [INFO] [stdout] 171 | assert!(false) [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] = note: `#[warn(clippy::assertions_on_constants)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/main.rs:448:35 [INFO] [stdout] | [INFO] [stdout] 448 | s.parse().or(Err(String::into(format!( [INFO] [stdout] | ___________________________________^ [INFO] [stdout] 449 | | "Could not parse alert to a valid regular expression." [INFO] [stdout] 450 | | )))) [INFO] [stdout] | |_____^ help: consider using `.to_string()`: `"Could not parse alert to a valid regular expression.".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/main.rs:456:35 [INFO] [stdout] | [INFO] [stdout] 456 | s.parse().or(Err(String::into(format!( [INFO] [stdout] | ___________________________________^ [INFO] [stdout] 457 | | "Could not parse your input to a valid date." [INFO] [stdout] 458 | | )))) [INFO] [stdout] | |_____^ help: consider using `.to_string()`: `"Could not parse your input to a valid date.".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:477:8 [INFO] [stdout] | [INFO] [stdout] 477 | if !twitter_config_file.is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `twitter_config_file.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:489:8 [INFO] [stdout] | [INFO] [stdout] 489 | if !config.is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `config.is_err()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:487:50 [INFO] [stdout] | [INFO] [stdout] 487 | let config = Item105Config::config_from_file(&mut twitter_config_file); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `twitter_config_file` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> src/main.rs:183:5 [INFO] [stdout] | [INFO] [stdout] 183 | assert!(false) [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `true` [INFO] [stdout] --> src/main.rs:245:13 [INFO] [stdout] | [INFO] [stdout] 245 | assert!(true) [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove the assertion [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/main.rs:548:23 [INFO] [stdout] | [INFO] [stdout] 548 | .and_then(|atom_string| parse_rss(atom_string)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `parse_rss` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> src/main.rs:249:13 [INFO] [stdout] | [INFO] [stdout] 249 | assert!(false); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/main.rs:559:76 [INFO] [stdout] | [INFO] [stdout] 559 | ... .map_or(Some(Local::now().fixed_offset()), |v| Some(v)) [INFO] [stdout] | ^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `Some` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:261:5 [INFO] [stdout] | [INFO] [stdout] 261 | / return String::from_utf8( [INFO] [stdout] 262 | | client [INFO] [stdout] 263 | | .request(reqwest::Method::GET, url) [INFO] [stdout] 264 | | .header( [INFO] [stdout] ... | [INFO] [stdout] 274 | | .map_err(Into::into); [INFO] [stdout] | |________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 261 ~ String::from_utf8( [INFO] [stdout] 262 + client [INFO] [stdout] 263 + .request(reqwest::Method::GET, url) [INFO] [stdout] 264 + .header( [INFO] [stdout] 265 + reqwest::header::USER_AGENT, [INFO] [stdout] 266 + "SEC Insights - Item502 and Item105 Twitter Bots hawkinwh@ucmail.uc.edu", [INFO] [stdout] 267 + ) [INFO] [stdout] 268 + .send() [INFO] [stdout] 269 + .await? [INFO] [stdout] 270 + .bytes() [INFO] [stdout] 271 + .await? [INFO] [stdout] 272 + .to_vec(), [INFO] [stdout] 273 + ) [INFO] [stdout] 274 ~ .map_err(Into::into) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:278:5 [INFO] [stdout] | [INFO] [stdout] 278 | return Ok(serde_json::from_str::(value.as_str())?); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 278 - return Ok(serde_json::from_str::(value.as_str())?); [INFO] [stdout] 278 + Ok(serde_json::from_str::(value.as_str())?) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Result.or_else(|x| Err(y))`, which is more succinctly expressed as `map_err(|x| y)` [INFO] [stdout] --> src/main.rs:618:78 [INFO] [stdout] | [INFO] [stdout] 618 | let r: Result, Box> = synchronous_download(&json_url) [INFO] [stdout] | ______________________________________________________________________________^ [INFO] [stdout] 619 | | .await.or_else(|err| { [INFO] [stdout] 620 | | Err(String::into(format!( [INFO] [stdout] 621 | | "There was an error downloading the JSON data for company with CIK of {}: {}", [INFO] [stdout] 622 | | cik, err [INFO] [stdout] 623 | | ))) [INFO] [stdout] 624 | | }) [INFO] [stdout] | |______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 618 ~ let r: Result, Box> = synchronous_download(&json_url) [INFO] [stdout] 619 + .await.map_err(|err| String::into(format!( [INFO] [stdout] 620 + "There was an error downloading the JSON data for company with CIK of {}: {}", [INFO] [stdout] 621 + cik, err [INFO] [stdout] 622 + ))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Option.and_then(|x| Some(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/main.rs:313:45 [INFO] [stdout] | [INFO] [stdout] 313 | let times: Vec> = recent [INFO] [stdout] | _____________________________________________^ [INFO] [stdout] 314 | | .as_object() [INFO] [stdout] 315 | | .and_then(|obj| obj.get("acceptanceDateTime")) [INFO] [stdout] 316 | | .and_then(|obj| obj.as_array()) [INFO] [stdout] ... | [INFO] [stdout] 326 | | }) [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 313 ~ let times: Vec> = recent [INFO] [stdout] 314 + .as_object() [INFO] [stdout] 315 + .and_then(|obj| obj.get("acceptanceDateTime")) [INFO] [stdout] 316 + .and_then(|obj| obj.as_array()).map(|obj| obj.iter() [INFO] [stdout] 317 + .map_while(|raw| { [INFO] [stdout] 318 + raw.as_str() [INFO] [stdout] 319 + .and_then(|raw_str| DateTime::parse_from_rfc3339(raw_str).ok()) [INFO] [stdout] 320 + }) [INFO] [stdout] 321 + .collect()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Result.or_else(|x| Err(y))`, which is more succinctly expressed as `map_err(|x| y)` [INFO] [stdout] --> src/main.rs:625:45 [INFO] [stdout] | [INFO] [stdout] 625 | .and_then(|json_string| json_parse(json_string) [INFO] [stdout] | _____________________________________________^ [INFO] [stdout] 626 | | .or_else(|err| { [INFO] [stdout] 627 | | Err(String::into(format!( [INFO] [stdout] 628 | | "There was an error parsing the JSON data for company with CIK of {}: {}", [INFO] [stdout] 629 | | cik, err [INFO] [stdout] 630 | | ))) [INFO] [stdout] 631 | | }) [INFO] [stdout] | |______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 625 ~ .and_then(|json_string| json_parse(json_string).map_err(|err| String::into(format!( [INFO] [stdout] 626 + "There was an error parsing the JSON data for company with CIK of {}: {}", [INFO] [stdout] 627 + cik, err [INFO] [stdout] 628 + ))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Result.or_else(|x| Err(y))`, which is more succinctly expressed as `map_err(|x| y)` [INFO] [stdout] --> src/main.rs:632:45 [INFO] [stdout] | [INFO] [stdout] 632 | .and_then(|recent_form| extract_filings_metadata(recent_form) [INFO] [stdout] | _____________________________________________^ [INFO] [stdout] 633 | | .or_else(|err| { [INFO] [stdout] 634 | | Err(String::into(format!( [INFO] [stdout] 635 | | "There was an error finding the specifics of the filing from company with CIK of {}: {}", [INFO] [stdout] 636 | | cik, err [INFO] [stdout] 637 | | ))) [INFO] [stdout] 638 | | }))); [INFO] [stdout] | |______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 632 ~ .and_then(|recent_form| extract_filings_metadata(recent_form).map_err(|err| String::into(format!( [INFO] [stdout] 633 + "There was an error finding the specifics of the filing from company with CIK of {}: {}", [INFO] [stdout] 634 + cik, err [INFO] [stdout] 635 ~ ))))); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/main.rs:664:51 [INFO] [stdout] | [INFO] [stdout] 664 | ... if filing.form == "\"8-K\"".to_string() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `"\"8-K\""` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] = note: `#[warn(clippy::cmp_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `true` [INFO] [stdout] --> src/main.rs:383:5 [INFO] [stdout] | [INFO] [stdout] 383 | assert!(true); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove the assertion [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/main.rs:665:55 [INFO] [stdout] | [INFO] [stdout] 665 | ... || filing.form == "\"8-K/A\"".to_string() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `"\"8-K/A\""` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `println!` args [INFO] [stdout] --> src/main.rs:678:58 [INFO] [stdout] | [INFO] [stdout] 678 | ... title, cik, alert.to_string()); [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] = note: `#[warn(clippy::to_string_in_format_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> src/main.rs:689:50 [INFO] [stdout] | [INFO] [stdout] 689 | ... alert.to_string() [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stdout] --> src/main.rs:703:60 [INFO] [stdout] | [INFO] [stdout] 703 | ... if let Ok(_) = tweet( [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this will change drop order of the result, as well as all temporaries [INFO] [stdout] = note: add `#[allow(clippy::redundant_pattern_matching)]` if this is important [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 703 ~ if tweet( [INFO] [stdout] 704 + &followup_message, [INFO] [stdout] 705 + &config.twitter, [INFO] [stdout] 706 + Some(result_id), [INFO] [stdout] 707 + ) [INFO] [stdout] 708 + .await.is_ok() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `acceptedDates` should have a snake case name [INFO] [stdout] --> src/main.rs:410:20 [INFO] [stdout] | [INFO] [stdout] 410 | .and_then(|acceptedDates| { [INFO] [stdout] | ^^^^^^^^^^^^^ help: convert the identifier to snake case: `accepted_dates` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `acceptedDate` should have a snake case name [INFO] [stdout] --> src/main.rs:413:20 [INFO] [stdout] | [INFO] [stdout] 413 | .and_then(|acceptedDate| { [INFO] [stdout] | ^^^^^^^^^^^^ help: convert the identifier to snake case: `accepted_date` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/main.rs:448:35 [INFO] [stdout] | [INFO] [stdout] 448 | s.parse().or(Err(String::into(format!( [INFO] [stdout] | ___________________________________^ [INFO] [stdout] 449 | | "Could not parse alert to a valid regular expression." [INFO] [stdout] 450 | | )))) [INFO] [stdout] | |_____^ help: consider using `.to_string()`: `"Could not parse alert to a valid regular expression.".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/main.rs:456:35 [INFO] [stdout] | [INFO] [stdout] 456 | s.parse().or(Err(String::into(format!( [INFO] [stdout] | ___________________________________^ [INFO] [stdout] 457 | | "Could not parse your input to a valid date." [INFO] [stdout] 458 | | )))) [INFO] [stdout] | |_____^ help: consider using `.to_string()`: `"Could not parse your input to a valid date.".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:477:8 [INFO] [stdout] | [INFO] [stdout] 477 | if !twitter_config_file.is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `twitter_config_file.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:489:8 [INFO] [stdout] | [INFO] [stdout] 489 | if !config.is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `config.is_err()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `acceptedDate` should have a snake case name [INFO] [stdout] --> src/main.rs:416:20 [INFO] [stdout] | [INFO] [stdout] 416 | .and_then(|acceptedDate| { [INFO] [stdout] | ^^^^^^^^^^^^ help: convert the identifier to snake case: `accepted_date` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `naiveAcceptedDatetime` should have a snake case name [INFO] [stdout] --> src/main.rs:419:15 [INFO] [stdout] | [INFO] [stdout] 419 | .map(|naiveAcceptedDatetime| naiveAcceptedDatetime.and_utc().fixed_offset()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `naive_accepted_datetime` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:487:50 [INFO] [stdout] | [INFO] [stdout] 487 | let config = Item105Config::config_from_file(&mut twitter_config_file); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `twitter_config_file` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/main.rs:548:23 [INFO] [stdout] | [INFO] [stdout] 548 | .and_then(|atom_string| parse_rss(atom_string)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `parse_rss` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/main.rs:559:76 [INFO] [stdout] | [INFO] [stdout] 559 | ... .map_or(Some(Local::now().fixed_offset()), |v| Some(v)) [INFO] [stdout] | ^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `Some` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Result.or_else(|x| Err(y))`, which is more succinctly expressed as `map_err(|x| y)` [INFO] [stdout] --> src/main.rs:618:78 [INFO] [stdout] | [INFO] [stdout] 618 | let r: Result, Box> = synchronous_download(&json_url) [INFO] [stdout] | ______________________________________________________________________________^ [INFO] [stdout] 619 | | .await.or_else(|err| { [INFO] [stdout] 620 | | Err(String::into(format!( [INFO] [stdout] 621 | | "There was an error downloading the JSON data for company with CIK of {}: {}", [INFO] [stdout] 622 | | cik, err [INFO] [stdout] 623 | | ))) [INFO] [stdout] 624 | | }) [INFO] [stdout] | |______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 618 ~ let r: Result, Box> = synchronous_download(&json_url) [INFO] [stdout] 619 + .await.map_err(|err| String::into(format!( [INFO] [stdout] 620 + "There was an error downloading the JSON data for company with CIK of {}: {}", [INFO] [stdout] 621 + cik, err [INFO] [stdout] 622 + ))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Result.or_else(|x| Err(y))`, which is more succinctly expressed as `map_err(|x| y)` [INFO] [stdout] --> src/main.rs:625:45 [INFO] [stdout] | [INFO] [stdout] 625 | .and_then(|json_string| json_parse(json_string) [INFO] [stdout] | _____________________________________________^ [INFO] [stdout] 626 | | .or_else(|err| { [INFO] [stdout] 627 | | Err(String::into(format!( [INFO] [stdout] 628 | | "There was an error parsing the JSON data for company with CIK of {}: {}", [INFO] [stdout] 629 | | cik, err [INFO] [stdout] 630 | | ))) [INFO] [stdout] 631 | | }) [INFO] [stdout] | |______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 625 ~ .and_then(|json_string| json_parse(json_string).map_err(|err| String::into(format!( [INFO] [stdout] 626 + "There was an error parsing the JSON data for company with CIK of {}: {}", [INFO] [stdout] 627 + cik, err [INFO] [stdout] 628 + ))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Result.or_else(|x| Err(y))`, which is more succinctly expressed as `map_err(|x| y)` [INFO] [stdout] --> src/main.rs:632:45 [INFO] [stdout] | [INFO] [stdout] 632 | .and_then(|recent_form| extract_filings_metadata(recent_form) [INFO] [stdout] | _____________________________________________^ [INFO] [stdout] 633 | | .or_else(|err| { [INFO] [stdout] 634 | | Err(String::into(format!( [INFO] [stdout] 635 | | "There was an error finding the specifics of the filing from company with CIK of {}: {}", [INFO] [stdout] 636 | | cik, err [INFO] [stdout] 637 | | ))) [INFO] [stdout] 638 | | }))); [INFO] [stdout] | |______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 632 ~ .and_then(|recent_form| extract_filings_metadata(recent_form).map_err(|err| String::into(format!( [INFO] [stdout] 633 + "There was an error finding the specifics of the filing from company with CIK of {}: {}", [INFO] [stdout] 634 + cik, err [INFO] [stdout] 635 ~ ))))); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/main.rs:664:51 [INFO] [stdout] | [INFO] [stdout] 664 | ... if filing.form == "\"8-K\"".to_string() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `"\"8-K\""` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] = note: `#[warn(clippy::cmp_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/main.rs:665:55 [INFO] [stdout] | [INFO] [stdout] 665 | ... || filing.form == "\"8-K/A\"".to_string() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `"\"8-K/A\""` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `println!` args [INFO] [stdout] --> src/main.rs:678:58 [INFO] [stdout] | [INFO] [stdout] 678 | ... title, cik, alert.to_string()); [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] = note: `#[warn(clippy::to_string_in_format_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> src/main.rs:689:50 [INFO] [stdout] | [INFO] [stdout] 689 | ... alert.to_string() [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stdout] --> src/main.rs:703:60 [INFO] [stdout] | [INFO] [stdout] 703 | ... if let Ok(_) = tweet( [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this will change drop order of the result, as well as all temporaries [INFO] [stdout] = note: add `#[allow(clippy::redundant_pattern_matching)]` if this is important [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 703 ~ if tweet( [INFO] [stdout] 704 + &followup_message, [INFO] [stdout] 705 + &config.twitter, [INFO] [stdout] 706 + Some(result_id), [INFO] [stdout] 707 + ) [INFO] [stdout] 708 + .await.is_ok() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `test_Item105Config_config_from_file` should have a snake case name [INFO] [stdout] --> src/main.rs:142:4 [INFO] [stdout] | [INFO] [stdout] 142 | fn test_Item105Config_config_from_file() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `test_item105_config_config_from_file` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `test_Item105Config_config_from_file_bad_alert` should have a snake case name [INFO] [stdout] --> src/main.rs:157:4 [INFO] [stdout] | [INFO] [stdout] 157 | fn test_Item105Config_config_from_file_bad_alert() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `test_item105_config_config_from_file_bad_alert` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `test_Item105Config_config_from_file_no_bio` should have a snake case name [INFO] [stdout] --> src/main.rs:165:4 [INFO] [stdout] | [INFO] [stdout] 165 | fn test_Item105Config_config_from_file_no_bio() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `test_item105_config_config_from_file_no_bio` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `test_Item105Config_config_good_prometheus` should have a snake case name [INFO] [stdout] --> src/main.rs:175:4 [INFO] [stdout] | [INFO] [stdout] 175 | fn test_Item105Config_config_good_prometheus() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `test_item105_config_config_good_prometheus` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `test_Item105Config_config_bad_prometheus_ip` should have a snake case name [INFO] [stdout] --> src/main.rs:187:4 [INFO] [stdout] | [INFO] [stdout] 187 | fn test_Item105Config_config_bad_prometheus_ip() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `test_item105_config_config_bad_prometheus_ip` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `acceptedDates` should have a snake case name [INFO] [stdout] --> src/main.rs:410:20 [INFO] [stdout] | [INFO] [stdout] 410 | .and_then(|acceptedDates| { [INFO] [stdout] | ^^^^^^^^^^^^^ help: convert the identifier to snake case: `accepted_dates` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `acceptedDate` should have a snake case name [INFO] [stdout] --> src/main.rs:413:20 [INFO] [stdout] | [INFO] [stdout] 413 | .and_then(|acceptedDate| { [INFO] [stdout] | ^^^^^^^^^^^^ help: convert the identifier to snake case: `accepted_date` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `acceptedDate` should have a snake case name [INFO] [stdout] --> src/main.rs:416:20 [INFO] [stdout] | [INFO] [stdout] 416 | .and_then(|acceptedDate| { [INFO] [stdout] | ^^^^^^^^^^^^ help: convert the identifier to snake case: `accepted_date` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `naiveAcceptedDatetime` should have a snake case name [INFO] [stdout] --> src/main.rs:419:15 [INFO] [stdout] | [INFO] [stdout] 419 | .map(|naiveAcceptedDatetime| naiveAcceptedDatetime.and_utc().fixed_offset()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `naive_accepted_datetime` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 50.33s [INFO] running `Command { std: "docker" "inspect" "06fdd619418b456b84d1673876b28b505317dc4291280a07086567275fd10348", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "06fdd619418b456b84d1673876b28b505317dc4291280a07086567275fd10348", kill_on_drop: false }` [INFO] [stdout] 06fdd619418b456b84d1673876b28b505317dc4291280a07086567275fd10348