[INFO] cloning repository https://github.com/inkthorne/ink-rpc [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/inkthorne/ink-rpc" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Finkthorne%2Fink-rpc", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Finkthorne%2Fink-rpc'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 7e7551fbfd6dd6b28c3a6c4c4c86dfe3b9b7fdd8 [INFO] linting inkthorne/ink-rpc against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Finkthorne%2Fink-rpc" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/inkthorne/ink-rpc [INFO] finished tweaking git repo https://github.com/inkthorne/ink-rpc [INFO] tweaked toml for git repo https://github.com/inkthorne/ink-rpc written to /workspace/builds/worker-6-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/inkthorne/ink-rpc 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/inkthorne/ink-rpc 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] Blocking waiting for file lock on package cache [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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] 9c56c576b7bb33d62786a5691dfe35841a3c3f301ccf314312c109ecbabc8c96 [INFO] running `Command { std: "docker" "start" "-a" "9c56c576b7bb33d62786a5691dfe35841a3c3f301ccf314312c109ecbabc8c96", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "9c56c576b7bb33d62786a5691dfe35841a3c3f301ccf314312c109ecbabc8c96", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9c56c576b7bb33d62786a5691dfe35841a3c3f301ccf314312c109ecbabc8c96", kill_on_drop: false }` [INFO] [stdout] 9c56c576b7bb33d62786a5691dfe35841a3c3f301ccf314312c109ecbabc8c96 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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] 09df70330136576a4b09030d5377f457b1045d0b2813f3937f6b47afd97859d7 [INFO] running `Command { std: "docker" "start" "-a" "09df70330136576a4b09030d5377f457b1045d0b2813f3937f6b47afd97859d7", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.95 [INFO] [stderr] Compiling unicode-ident v1.0.18 [INFO] [stderr] Compiling serde v1.0.219 [INFO] [stderr] Compiling serde_json v1.0.140 [INFO] [stderr] Checking itoa v1.0.15 [INFO] [stderr] Checking ryu v1.0.20 [INFO] [stderr] Compiling quote v1.0.40 [INFO] [stderr] Compiling syn v2.0.101 [INFO] [stderr] Compiling serde_derive v1.0.219 [INFO] [stderr] Checking ink-rpc v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: you should consider adding a `Default` implementation for `RpcRequest` [INFO] [stdout] --> src/request.rs:56:5 [INFO] [stdout] | [INFO] [stdout] 56 | / pub fn new() -> Self { [INFO] [stdout] 57 | | Self { [INFO] [stdout] 58 | | jsonrpc: "2.0".to_string(), [INFO] [stdout] 59 | | method: String::new(), [INFO] [stdout] ... | [INFO] [stdout] 63 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 41 + impl Default for RpcRequest { [INFO] [stdout] 42 + fn default() -> Self { [INFO] [stdout] 43 + Self::new() [INFO] [stdout] 44 + } [INFO] [stdout] 45 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/request.rs:49:9 [INFO] [stdout] | [INFO] [stdout] 49 | /// /// # Examples [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: unnecessary closure used to substitute value for `Result::Err` [INFO] [stdout] --> src/request.rs:82:9 [INFO] [stdout] | [INFO] [stdout] 82 | serde_json::to_value(self).unwrap_or_else(|_| JsonValue::Null) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] = note: `#[warn(clippy::unnecessary_lazy_evaluations)]` on by default [INFO] [stdout] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 82 - serde_json::to_value(self).unwrap_or_else(|_| JsonValue::Null) [INFO] [stdout] 82 + serde_json::to_value(self).unwrap_or(JsonValue::Null) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/request.rs:98:9 [INFO] [stdout] | [INFO] [stdout] 98 | /// /// # Examples [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: useless use of `vec!` [INFO] [stdout] --> examples/basic_usage.rs:92:20 [INFO] [stdout] | [INFO] [stdout] 92 | let requests = vec![ [INFO] [stdout] | ____________________^ [INFO] [stdout] 93 | | { [INFO] [stdout] 94 | | let mut req = RpcRequest::new(); [INFO] [stdout] 95 | | req.set_method("get_balance".to_string()) [INFO] [stdout] ... | [INFO] [stdout] 114 | | ]; [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` on by default [INFO] [stdout] help: you can use an array directly [INFO] [stdout] | [INFO] [stdout] 92 ~ let requests = [{ [INFO] [stdout] 93 + let mut req = RpcRequest::new(); [INFO] [stdout] 94 + req.set_method("get_balance".to_string()) [INFO] [stdout] 95 + .set_params(json!({"account": "acc_123456"})); [INFO] [stdout] 96 + req [INFO] [stdout] 97 + }, [INFO] [stdout] 98 + { [INFO] [stdout] 99 + let mut req = RpcRequest::new(); [INFO] [stdout] 100 + req.set_method("get_transaction_history".to_string()) [INFO] [stdout] 101 + .set_params(json!({ [INFO] [stdout] 102 + "account": "acc_123456", [INFO] [stdout] 103 + "limit": 5 [INFO] [stdout] 104 + })); [INFO] [stdout] 105 + req [INFO] [stdout] 106 + }, [INFO] [stdout] 107 + { [INFO] [stdout] 108 + let mut req = RpcRequest::new(); [INFO] [stdout] 109 + req.set_method("get_account_info".to_string()) [INFO] [stdout] 110 + .set_params(json!({"account": "acc_123456"})); [INFO] [stdout] 111 + req [INFO] [stdout] 112 ~ }]; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> examples/basic_usage.rs:123:21 [INFO] [stdout] | [INFO] [stdout] 123 | let responses = vec![ [INFO] [stdout] | _____________________^ [INFO] [stdout] 124 | | { [INFO] [stdout] 125 | | let mut resp = RpcResponse::new(requests[0].id()); [INFO] [stdout] 126 | | resp.set_result(json!({"balance": 1749.25, "currency": "USD"})); [INFO] [stdout] ... | [INFO] [stdout] 159 | | ]; [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] help: you can use an array directly [INFO] [stdout] | [INFO] [stdout] 123 ~ let responses = [{ [INFO] [stdout] 124 + let mut resp = RpcResponse::new(requests[0].id()); [INFO] [stdout] 125 + resp.set_result(json!({"balance": 1749.25, "currency": "USD"})); [INFO] [stdout] 126 + resp [INFO] [stdout] 127 + }, [INFO] [stdout] 128 + { [INFO] [stdout] 129 + let mut resp = RpcResponse::new(requests[1].id()); [INFO] [stdout] 130 + resp.set_result(json!({ [INFO] [stdout] 131 + "transactions": [ [INFO] [stdout] 132 + { [INFO] [stdout] 133 + "id": "txn_abc123def456", [INFO] [stdout] 134 + "type": "credit", [INFO] [stdout] 135 + "amount": 250.75, [INFO] [stdout] 136 + "timestamp": "2025-06-22T10:30:00Z" [INFO] [stdout] 137 + }, [INFO] [stdout] 138 + { [INFO] [stdout] 139 + "id": "txn_def456ghi789", [INFO] [stdout] 140 + "type": "debit", [INFO] [stdout] 141 + "amount": 50.0, [INFO] [stdout] 142 + "timestamp": "2025-06-21T14:15:00Z" [INFO] [stdout] 143 + } [INFO] [stdout] 144 + ] [INFO] [stdout] 145 + })); [INFO] [stdout] 146 + resp [INFO] [stdout] 147 + }, [INFO] [stdout] 148 + { [INFO] [stdout] 149 + let mut resp = RpcResponse::new(requests[2].id()); [INFO] [stdout] 150 + resp.set_result(json!({ [INFO] [stdout] 151 + "account_id": "acc_123456", [INFO] [stdout] 152 + "account_type": "checking", [INFO] [stdout] 153 + "status": "active", [INFO] [stdout] 154 + "created_date": "2023-01-15T08:00:00Z" [INFO] [stdout] 155 + })); [INFO] [stdout] 156 + resp [INFO] [stdout] 157 ~ }]; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `RpcRequest` [INFO] [stdout] --> src/request.rs:56:5 [INFO] [stdout] | [INFO] [stdout] 56 | / pub fn new() -> Self { [INFO] [stdout] 57 | | Self { [INFO] [stdout] 58 | | jsonrpc: "2.0".to_string(), [INFO] [stdout] 59 | | method: String::new(), [INFO] [stdout] ... | [INFO] [stdout] 63 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 41 + impl Default for RpcRequest { [INFO] [stdout] 42 + fn default() -> Self { [INFO] [stdout] 43 + Self::new() [INFO] [stdout] 44 + } [INFO] [stdout] 45 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/request.rs:49:9 [INFO] [stdout] | [INFO] [stdout] 49 | /// /// # Examples [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: unnecessary closure used to substitute value for `Result::Err` [INFO] [stdout] --> src/request.rs:82:9 [INFO] [stdout] | [INFO] [stdout] 82 | serde_json::to_value(self).unwrap_or_else(|_| JsonValue::Null) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] = note: `#[warn(clippy::unnecessary_lazy_evaluations)]` on by default [INFO] [stdout] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 82 - serde_json::to_value(self).unwrap_or_else(|_| JsonValue::Null) [INFO] [stdout] 82 + serde_json::to_value(self).unwrap_or(JsonValue::Null) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/request.rs:98:9 [INFO] [stdout] | [INFO] [stdout] 98 | /// /// # Examples [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: this boolean expression can be simplified [INFO] [stdout] --> src/response.rs:278:17 [INFO] [stdout] | [INFO] [stdout] 278 | assert!(!response.as_json().get("result").is_some()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `response.as_json().get("result").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] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 11.98s [INFO] running `Command { std: "docker" "inspect" "09df70330136576a4b09030d5377f457b1045d0b2813f3937f6b47afd97859d7", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "09df70330136576a4b09030d5377f457b1045d0b2813f3937f6b47afd97859d7", kill_on_drop: false }` [INFO] [stdout] 09df70330136576a4b09030d5377f457b1045d0b2813f3937f6b47afd97859d7