[INFO] fetching crate cwmanage 0.1.8... [INFO] linting cwmanage-0.1.8 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate cwmanage 0.1.8 into /workspace/builds/worker-4-tc1/source [INFO] started tweaking crates.io crate cwmanage 0.1.8 [INFO] finished tweaking crates.io crate cwmanage 0.1.8 [INFO] tweaked toml for crates.io crate cwmanage 0.1.8 written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate cwmanage 0.1.8 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] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Updating crates.io index [INFO] [stderr] Locking 179 packages to latest compatible versions [INFO] [stderr] Adding base64 v0.13.1 (available: v0.22.1) [INFO] [stderr] Adding pretty_assertions v0.7.2 (available: v1.4.1) [INFO] [stderr] Adding reqwest v0.11.27 (available: v0.13.2) [INFO] [stderr] Adding strum v0.20.0 (available: v0.28.0) [INFO] [stderr] Adding strum_macros v0.20.1 (available: v0.28.0) [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] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] 5c8272d0c71430ca488394a21efbae051a5a3019d580acdf7f2f95d5ff339626 [INFO] running `Command { std: "docker" "start" "-a" "5c8272d0c71430ca488394a21efbae051a5a3019d580acdf7f2f95d5ff339626", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "5c8272d0c71430ca488394a21efbae051a5a3019d580acdf7f2f95d5ff339626", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "5c8272d0c71430ca488394a21efbae051a5a3019d580acdf7f2f95d5ff339626", kill_on_drop: false }` [INFO] [stdout] 5c8272d0c71430ca488394a21efbae051a5a3019d580acdf7f2f95d5ff339626 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] 0daf204e4ca8aa5611beadf5d487d9febd9a49c29ba8ca48f72eb9e069889230 [INFO] running `Command { std: "docker" "start" "-a" "0daf204e4ca8aa5611beadf5d487d9febd9a49c29ba8ca48f72eb9e069889230", kill_on_drop: false }` [INFO] [stderr] Checking strum v0.20.0 [INFO] [stderr] Checking pretty_assertions v0.7.2 [INFO] [stderr] Compiling strum_macros v0.20.1 [INFO] [stderr] Checking reqwest v0.11.27 [INFO] [stderr] Checking cwmanage v0.1.8 (/opt/rustwide/workdir) [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/lib.rs:96:1 [INFO] [stdout] | [INFO] [stdout] 96 | use strum_macros; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] = note: `#[warn(clippy::single_component_path_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/lib.rs:474:5 [INFO] [stdout] | [INFO] [stdout] 474 | / /// ``` [INFO] [stdout] 475 | | [INFO] [stdout] | |_^ [INFO] [stdout] ... [INFO] [stdout] 478 | pub fn get(&self, path: &str, query: &[(&str, &str)]) -> Result> { [INFO] [stdout] | ---------- the comment documents this function [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the doc comment should not document function `get` then comment it out [INFO] [stdout] | [INFO] [stdout] 411 ~ // /// GETs a path from the connectwise api. `get` will return *all* results so make sure you [INFO] [stdout] 412 ~ // /// set your `query` with the appropriate conditions. This follows the api pagination so, again, [INFO] [stdout] 413 ~ // /// *all* results will be returned For example `/service/tickets` will [INFO] [stdout] 414 ~ // /// return **every** ticket in the system. The result is a vec of [INFO] [stdout] 415 ~ // /// [serde_json::value::Value](https://docs.serde.rs/serde_json/value/enum.Value.html) [INFO] [stdout] 416 ~ // /// [INFO] [stdout] 417 ~ // /// # Arguments [INFO] [stdout] 418 ~ // /// [INFO] [stdout] 419 ~ // /// - `path` - the api path you want to retrieve (example `/service/tickets`) [INFO] [stdout] 420 ~ // /// - `query` - additional query options *must be set*. If non, use [("", "")] [INFO] [stdout] 421 ~ // /// # Example [INFO] [stdout] 422 ~ // /// [INFO] [stdout] 423 ~ // /// ## Getting all results, returning parsed json [INFO] [stdout] 424 ~ // /// ``` [INFO] [stdout] 425 ~ // /// use cwmanage::Client; [INFO] [stdout] 426 ~ // /// [INFO] [stdout] 427 ~ // /// // this example is using dotenv to load our settings from [INFO] [stdout] 428 ~ // /// // the environment, you could also specify this manually [INFO] [stdout] 429 ~ // /// use dotenv::dotenv; [INFO] [stdout] 430 ~ // /// dotenv().ok(); [INFO] [stdout] 431 ~ // /// let company_id: String = dotenv::var("CWMANAGE_COMPANY_ID").unwrap(); [INFO] [stdout] 432 ~ // /// let public_key: String = dotenv::var("CWMANAGE_PUBLIC_KEY").unwrap(); [INFO] [stdout] 433 ~ // /// let private_key: String = dotenv::var("CWMANAGE_PRIVATE_KEY").unwrap(); [INFO] [stdout] 434 ~ // /// let client_id: String = dotenv::var("CWMANAGE_CLIENT_ID").unwrap(); [INFO] [stdout] 435 ~ // /// let client = Client::new(company_id, public_key, private_key, client_id).build(); [INFO] [stdout] 436 ~ // /// [INFO] [stdout] 437 ~ // /// let query = [("fields", "id")]; [INFO] [stdout] 438 ~ // /// let path = "/system/members"; [INFO] [stdout] 439 ~ // /// let result = client.get(&path, &query).unwrap(); [INFO] [stdout] 440 ~ // /// [INFO] [stdout] 441 ~ // /// assert!(result.len() > 30); [INFO] [stdout] 442 ~ // /// ``` [INFO] [stdout] 443 ~ // /// ## Getting all results, take parsed json and convert to a struct [INFO] [stdout] 444 ~ // /// ``` [INFO] [stdout] 445 ~ // /// use cwmanage::Client; [INFO] [stdout] 446 ~ // /// use serde::{Deserialize}; [INFO] [stdout] 447 ~ // /// use serde_json::Value::Array; [INFO] [stdout] 448 ~ // /// [INFO] [stdout] 449 ~ // /// #[derive(Debug, Deserialize)] [INFO] [stdout] 450 ~ // /// #[serde(rename_all = "camelCase")] [INFO] [stdout] 451 ~ // /// struct Member { [INFO] [stdout] 452 ~ // /// id: i32, [INFO] [stdout] 453 ~ // /// identifier: String, [INFO] [stdout] 454 ~ // /// } [INFO] [stdout] 455 ~ // /// [INFO] [stdout] 456 ~ // /// // this example is using dotenv to load our settings from [INFO] [stdout] 457 ~ // /// // the environment, you could also specify this manually [INFO] [stdout] 458 ~ // /// use dotenv::dotenv; [INFO] [stdout] 459 ~ // /// dotenv().ok(); [INFO] [stdout] 460 ~ // /// let company_id: String = dotenv::var("CWMANAGE_COMPANY_ID").unwrap(); [INFO] [stdout] 461 ~ // /// let public_key: String = dotenv::var("CWMANAGE_PUBLIC_KEY").unwrap(); [INFO] [stdout] 462 ~ // /// let private_key: String = dotenv::var("CWMANAGE_PRIVATE_KEY").unwrap(); [INFO] [stdout] 463 ~ // /// let client_id: String = dotenv::var("CWMANAGE_CLIENT_ID").unwrap(); [INFO] [stdout] 464 ~ // /// let client = Client::new(company_id, public_key, private_key, client_id).build(); [INFO] [stdout] 465 ~ // /// [INFO] [stdout] 466 ~ // /// let query = [("", "")]; [INFO] [stdout] 467 ~ // /// let path = "/system/members"; [INFO] [stdout] 468 ~ // /// let result = client.get(&path, &query).unwrap(); [INFO] [stdout] 469 ~ // /// [INFO] [stdout] 470 ~ // /// // got our result, just like before. [INFO] [stdout] 471 ~ // /// // now convert it into our struct [INFO] [stdout] 472 ~ // /// let members: Vec= serde_json::from_value(Array(result)).unwrap(); [INFO] [stdout] 473 ~ // /// assert_eq!(members.len(), 134); [INFO] [stdout] 474 ~ // /// ``` [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/lib.rs:96:1 [INFO] [stdout] | [INFO] [stdout] 96 | use strum_macros; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] = note: `#[warn(clippy::single_component_path_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/lib.rs:474:5 [INFO] [stdout] | [INFO] [stdout] 474 | / /// ``` [INFO] [stdout] 475 | | [INFO] [stdout] | |_^ [INFO] [stdout] ... [INFO] [stdout] 478 | pub fn get(&self, path: &str, query: &[(&str, &str)]) -> Result> { [INFO] [stdout] | ---------- the comment documents this function [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the doc comment should not document function `get` then comment it out [INFO] [stdout] | [INFO] [stdout] 411 ~ // /// GETs a path from the connectwise api. `get` will return *all* results so make sure you [INFO] [stdout] 412 ~ // /// set your `query` with the appropriate conditions. This follows the api pagination so, again, [INFO] [stdout] 413 ~ // /// *all* results will be returned For example `/service/tickets` will [INFO] [stdout] 414 ~ // /// return **every** ticket in the system. The result is a vec of [INFO] [stdout] 415 ~ // /// [serde_json::value::Value](https://docs.serde.rs/serde_json/value/enum.Value.html) [INFO] [stdout] 416 ~ // /// [INFO] [stdout] 417 ~ // /// # Arguments [INFO] [stdout] 418 ~ // /// [INFO] [stdout] 419 ~ // /// - `path` - the api path you want to retrieve (example `/service/tickets`) [INFO] [stdout] 420 ~ // /// - `query` - additional query options *must be set*. If non, use [("", "")] [INFO] [stdout] 421 ~ // /// # Example [INFO] [stdout] 422 ~ // /// [INFO] [stdout] 423 ~ // /// ## Getting all results, returning parsed json [INFO] [stdout] 424 ~ // /// ``` [INFO] [stdout] 425 ~ // /// use cwmanage::Client; [INFO] [stdout] 426 ~ // /// [INFO] [stdout] 427 ~ // /// // this example is using dotenv to load our settings from [INFO] [stdout] 428 ~ // /// // the environment, you could also specify this manually [INFO] [stdout] 429 ~ // /// use dotenv::dotenv; [INFO] [stdout] 430 ~ // /// dotenv().ok(); [INFO] [stdout] 431 ~ // /// let company_id: String = dotenv::var("CWMANAGE_COMPANY_ID").unwrap(); [INFO] [stdout] 432 ~ // /// let public_key: String = dotenv::var("CWMANAGE_PUBLIC_KEY").unwrap(); [INFO] [stdout] 433 ~ // /// let private_key: String = dotenv::var("CWMANAGE_PRIVATE_KEY").unwrap(); [INFO] [stdout] 434 ~ // /// let client_id: String = dotenv::var("CWMANAGE_CLIENT_ID").unwrap(); [INFO] [stdout] 435 ~ // /// let client = Client::new(company_id, public_key, private_key, client_id).build(); [INFO] [stdout] 436 ~ // /// [INFO] [stdout] 437 ~ // /// let query = [("fields", "id")]; [INFO] [stdout] 438 ~ // /// let path = "/system/members"; [INFO] [stdout] 439 ~ // /// let result = client.get(&path, &query).unwrap(); [INFO] [stdout] 440 ~ // /// [INFO] [stdout] 441 ~ // /// assert!(result.len() > 30); [INFO] [stdout] 442 ~ // /// ``` [INFO] [stdout] 443 ~ // /// ## Getting all results, take parsed json and convert to a struct [INFO] [stdout] 444 ~ // /// ``` [INFO] [stdout] 445 ~ // /// use cwmanage::Client; [INFO] [stdout] 446 ~ // /// use serde::{Deserialize}; [INFO] [stdout] 447 ~ // /// use serde_json::Value::Array; [INFO] [stdout] 448 ~ // /// [INFO] [stdout] 449 ~ // /// #[derive(Debug, Deserialize)] [INFO] [stdout] 450 ~ // /// #[serde(rename_all = "camelCase")] [INFO] [stdout] 451 ~ // /// struct Member { [INFO] [stdout] 452 ~ // /// id: i32, [INFO] [stdout] 453 ~ // /// identifier: String, [INFO] [stdout] 454 ~ // /// } [INFO] [stdout] 455 ~ // /// [INFO] [stdout] 456 ~ // /// // this example is using dotenv to load our settings from [INFO] [stdout] 457 ~ // /// // the environment, you could also specify this manually [INFO] [stdout] 458 ~ // /// use dotenv::dotenv; [INFO] [stdout] 459 ~ // /// dotenv().ok(); [INFO] [stdout] 460 ~ // /// let company_id: String = dotenv::var("CWMANAGE_COMPANY_ID").unwrap(); [INFO] [stdout] 461 ~ // /// let public_key: String = dotenv::var("CWMANAGE_PUBLIC_KEY").unwrap(); [INFO] [stdout] 462 ~ // /// let private_key: String = dotenv::var("CWMANAGE_PRIVATE_KEY").unwrap(); [INFO] [stdout] 463 ~ // /// let client_id: String = dotenv::var("CWMANAGE_CLIENT_ID").unwrap(); [INFO] [stdout] 464 ~ // /// let client = Client::new(company_id, public_key, private_key, client_id).build(); [INFO] [stdout] 465 ~ // /// [INFO] [stdout] 466 ~ // /// let query = [("", "")]; [INFO] [stdout] 467 ~ // /// let path = "/system/members"; [INFO] [stdout] 468 ~ // /// let result = client.get(&path, &query).unwrap(); [INFO] [stdout] 469 ~ // /// [INFO] [stdout] 470 ~ // /// // got our result, just like before. [INFO] [stdout] 471 ~ // /// // now convert it into our struct [INFO] [stdout] 472 ~ // /// let members: Vec= serde_json::from_value(Array(result)).unwrap(); [INFO] [stdout] 473 ~ // /// assert_eq!(members.len(), 134); [INFO] [stdout] 474 ~ // /// ``` [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: direct implementation of `ToString` [INFO] [stdout] --> src/lib.rs:112:17 [INFO] [stdout] | [INFO] [stdout] 112 | #[derive(Debug, strum_macros::ToString)] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: prefer implementing `Display` instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_trait_impl [INFO] [stdout] = note: `#[warn(clippy::to_string_trait_impl)]` on by default [INFO] [stdout] = note: this warning originates in the derive macro `strum_macros::ToString` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/lib.rs:274:18 [INFO] [stdout] | [INFO] [stdout] 274 | .get(&self.gen_api_url(path)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.gen_api_url(path)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of both operands [INFO] [stdout] --> src/lib.rs:331:16 [INFO] [stdout] | [INFO] [stdout] 331 | if &f["caption"].as_str().unwrap() == &field { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] = note: `#[warn(clippy::op_ref)]` on by default [INFO] [stdout] help: use the values directly [INFO] [stdout] | [INFO] [stdout] 331 - if &f["caption"].as_str().unwrap() == &field { [INFO] [stdout] 331 + if f["caption"].as_str().unwrap() == field { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of both operands [INFO] [stdout] --> src/lib.rs:351:16 [INFO] [stdout] | [INFO] [stdout] 351 | if &f["caption"] [INFO] [stdout] | ________________^ [INFO] [stdout] 352 | | .as_str() [INFO] [stdout] 353 | | .ok_or(anyhow!("cannot convert caption to string"))? [INFO] [stdout] 354 | | == &field [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] help: use the values directly [INFO] [stdout] | [INFO] [stdout] 351 ~ if f["caption"] [INFO] [stdout] 352 + .as_str() [INFO] [stdout] 353 + .ok_or(anyhow!("cannot convert caption to string"))? [INFO] [stdout] 354 ~ == field [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/lib.rs:375:9 [INFO] [stdout] | [INFO] [stdout] 375 | /// parsed to the appropriate datatype (ie it is sent as json). Example [INFO] [stdout] | ^^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] = note: `#[warn(clippy::doc_overindented_list_items)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/lib.rs:376:9 [INFO] [stdout] | [INFO] [stdout] 376 | /// "1234" for `1234`, "true" for `true`, etc [INFO] [stdout] | ^^^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/lib.rs:485:22 [INFO] [stdout] | [INFO] [stdout] 485 | .get(&self.gen_api_url(path)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.gen_api_url(path)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/lib.rs:535:19 [INFO] [stdout] | [INFO] [stdout] 535 | .post(&self.gen_api_url(path)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.gen_api_url(path)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: direct implementation of `ToString` [INFO] [stdout] --> src/lib.rs:112:17 [INFO] [stdout] | [INFO] [stdout] 112 | #[derive(Debug, strum_macros::ToString)] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: prefer implementing `Display` instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_trait_impl [INFO] [stdout] = note: `#[warn(clippy::to_string_trait_impl)]` on by default [INFO] [stdout] = note: this warning originates in the derive macro `strum_macros::ToString` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/lib.rs:587:20 [INFO] [stdout] | [INFO] [stdout] 587 | .patch(&self.gen_api_url(path)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.gen_api_url(path)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/lib.rs:274:18 [INFO] [stdout] | [INFO] [stdout] 274 | .get(&self.gen_api_url(path)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.gen_api_url(path)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of both operands [INFO] [stdout] --> src/lib.rs:331:16 [INFO] [stdout] | [INFO] [stdout] 331 | if &f["caption"].as_str().unwrap() == &field { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] = note: `#[warn(clippy::op_ref)]` on by default [INFO] [stdout] help: use the values directly [INFO] [stdout] | [INFO] [stdout] 331 - if &f["caption"].as_str().unwrap() == &field { [INFO] [stdout] 331 + if f["caption"].as_str().unwrap() == field { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of both operands [INFO] [stdout] --> src/lib.rs:351:16 [INFO] [stdout] | [INFO] [stdout] 351 | if &f["caption"] [INFO] [stdout] | ________________^ [INFO] [stdout] 352 | | .as_str() [INFO] [stdout] 353 | | .ok_or(anyhow!("cannot convert caption to string"))? [INFO] [stdout] 354 | | == &field [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] help: use the values directly [INFO] [stdout] | [INFO] [stdout] 351 ~ if f["caption"] [INFO] [stdout] 352 + .as_str() [INFO] [stdout] 353 + .ok_or(anyhow!("cannot convert caption to string"))? [INFO] [stdout] 354 ~ == field [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/lib.rs:375:9 [INFO] [stdout] | [INFO] [stdout] 375 | /// parsed to the appropriate datatype (ie it is sent as json). Example [INFO] [stdout] | ^^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] = note: `#[warn(clippy::doc_overindented_list_items)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/lib.rs:376:9 [INFO] [stdout] | [INFO] [stdout] 376 | /// "1234" for `1234`, "true" for `true`, etc [INFO] [stdout] | ^^^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/lib.rs:485:22 [INFO] [stdout] | [INFO] [stdout] 485 | .get(&self.gen_api_url(path)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.gen_api_url(path)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/lib.rs:535:19 [INFO] [stdout] | [INFO] [stdout] 535 | .post(&self.gen_api_url(path)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.gen_api_url(path)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/lib.rs:587:20 [INFO] [stdout] | [INFO] [stdout] 587 | .patch(&self.gen_api_url(path)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.gen_api_url(path)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/lib.rs:721:17 [INFO] [stdout] | [INFO] [stdout] 721 | assert!(!result.is_err()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `result.is_ok()` [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/lib.rs:846:17 [INFO] [stdout] | [INFO] [stdout] 846 | assert!(!result.is_err()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `result.is_ok()` [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] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 2.84s [INFO] running `Command { std: "docker" "inspect" "0daf204e4ca8aa5611beadf5d487d9febd9a49c29ba8ca48f72eb9e069889230", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "0daf204e4ca8aa5611beadf5d487d9febd9a49c29ba8ca48f72eb9e069889230", kill_on_drop: false }` [INFO] [stdout] 0daf204e4ca8aa5611beadf5d487d9febd9a49c29ba8ca48f72eb9e069889230