[INFO] fetching crate tokio-jsonrpc 0.9.1...
[INFO] checking tokio-jsonrpc-0.9.1 against 52995a223f2919dd3e2e427231db90a257350ded for pr-129249-4
[INFO] extracting crate tokio-jsonrpc 0.9.1 into /workspace/builds/worker-2-tc2/source
[INFO] started tweaking crates.io crate tokio-jsonrpc 0.9.1
[INFO] finished tweaking crates.io crate tokio-jsonrpc 0.9.1
[INFO] tweaked toml for crates.io crate tokio-jsonrpc 0.9.1 written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate tokio-jsonrpc 0.9.1 on toolchain 52995a223f2919dd3e2e427231db90a257350ded
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+52995a223f2919dd3e2e427231db90a257350ded" "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" "+52995a223f2919dd3e2e427231db90a257350ded" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]      Locking 139 packages to highest compatible versions
[INFO] [stderr]       Adding bytes v0.4.12 (available: v1.12.1)
[INFO] [stderr]       Adding futures v0.1.31 (available: v0.3.34)
[INFO] [stderr]       Adding uuid v0.6.5 (available: v1.29.0)
[INFO] [stderr]       Adding version-sync v0.5.0 (available: v0.9.5)
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+52995a223f2919dd3e2e427231db90a257350ded" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: Cargo.toml: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024`
[INFO] [stderr] warning: `tokio-jsonrpc` (manifest) generated 1 warning
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] f7c28b8c9f03093e42150572e3e5bff46fb395a377745b2c9de2414b078e6918
[INFO] running `Command { std: "docker" "start" "f7c28b8c9f03093e42150572e3e5bff46fb395a377745b2c9de2414b078e6918", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "f7c28b8c9f03093e42150572e3e5bff46fb395a377745b2c9de2414b078e6918", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "f7c28b8c9f03093e42150572e3e5bff46fb395a377745b2c9de2414b078e6918" "/opt/rustwide/cargo-home/bin/cargo" "+52995a223f2919dd3e2e427231db90a257350ded" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "f7c28b8c9f03093e42150572e3e5bff46fb395a377745b2c9de2414b078e6918", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "f7c28b8c9f03093e42150572e3e5bff46fb395a377745b2c9de2414b078e6918" "/opt/rustwide/cargo-home/bin/cargo" "+52995a223f2919dd3e2e427231db90a257350ded" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: Cargo.toml: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024`
[INFO] [stderr] warning: `tokio-jsonrpc` (manifest) generated 1 warning
[INFO] [stderr]     Checking cfg-if v0.1.10
[INFO] [stderr]    Compiling crossbeam-utils v0.7.2
[INFO] [stderr]    Compiling maybe-uninit v2.0.0
[INFO] [stderr]     Checking futures v0.1.31
[INFO] [stderr]     Checking iovec v0.1.4
[INFO] [stderr]    Compiling parking_lot_core v0.6.3
[INFO] [stderr]    Compiling parking_lot v0.9.0
[INFO] [stderr]    Compiling memoffset v0.5.6
[INFO] [stderr]     Checking net2 v0.2.39
[INFO] [stderr]     Checking bytes v0.4.12
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]     Checking lock_api v0.3.4
[INFO] [stderr]     Checking smallvec v0.6.14
[INFO] [stderr]    Compiling crossbeam-epoch v0.8.2
[INFO] [stderr]     Checking mio v0.6.23
[INFO] [stderr]    Compiling slog v2.8.2
[INFO] [stderr]    Compiling pulldown-cmark v0.1.2
[INFO] [stderr]     Checking unicode-xid v0.0.4
[INFO] [stderr]    Compiling time-macros v0.2.32
[INFO] [stderr]     Checking crossbeam-queue v0.2.3
[INFO] [stderr]     Checking synom v0.11.3
[INFO] [stderr]     Checking quote v0.3.15
[INFO] [stderr]    Compiling slog-async v2.8.0
[INFO] [stderr]     Checking mio-uds v0.6.8
[INFO] [stderr]     Checking scoped-tls v0.1.2
[INFO] [stderr]     Checking either v1.19.0
[INFO] [stderr]     Checking crossbeam-deque v0.7.4
[INFO] [stderr]     Checking bitflags v0.9.1
[INFO] [stderr]     Checking syn v0.11.11
[INFO] [stderr]     Checking uuid v0.6.5
[INFO] [stderr]     Checking is-terminal v0.4.17
[INFO] [stderr]     Checking erased-serde v0.3.31
[INFO] [stderr]     Checking itertools v0.7.11
[INFO] [stderr]     Checking toml v0.4.10
[INFO] [stderr]     Checking take_mut v0.2.2
[INFO] [stderr]     Checking semver-parser v0.7.0
[INFO] [stderr]     Checking term v1.2.1
[INFO] [stderr]     Checking tokio-executor v0.1.10
[INFO] [stderr]     Checking tokio-io v0.1.13
[INFO] [stderr]     Checking tokio-sync v0.1.8
[INFO] [stderr]     Checking tokio-threadpool v0.1.18
[INFO] [stderr]     Checking tokio-current-thread v0.1.7
[INFO] [stderr]     Checking tokio-timer v0.2.13
[INFO] [stderr]     Checking time v0.3.55
[INFO] [stderr]     Checking tokio-codec v0.1.2
[INFO] [stderr]     Checking tokio-reactor v0.1.12
[INFO] [stderr]     Checking tokio-fs v0.1.7
[INFO] [stderr]     Checking tokio-tcp v0.1.4
[INFO] [stderr]     Checking tokio-udp v0.1.6
[INFO] [stderr]     Checking tokio-uds v0.2.7
[INFO] [stderr]     Checking version-sync v0.5.0
[INFO] [stderr]     Checking tokio v0.1.22
[INFO] [stderr]     Checking tokio-core v0.1.18
[INFO] [stderr]     Checking tokio-jsonrpc v0.9.1 (/opt/rustwide/workdir)
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/server.rs:157:5
[INFO] [stdout]     |
[INFO] [stdout] 157 | /     Server<
[INFO] [stdout] 158 | |         Success = Value,
[INFO] [stdout] 159 | |         RpcCallResult = Box<Future<Item = Value, Error = RpcError>>,
[INFO] [stdout] 160 | |         NotificationResult = Box<Future<Item = (), Error = ()>>,
[INFO] [stdout] 161 | |     >,
[INFO] [stdout]     | |_____^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]     = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 157 |     dyn Server<
[INFO] [stdout]     |     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/server.rs:159:29
[INFO] [stdout]     |
[INFO] [stdout] 159 |         RpcCallResult = Box<Future<Item = Value, Error = RpcError>>,
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 159 |         RpcCallResult = Box<dyn Future<Item = Value, Error = RpcError>>,
[INFO] [stdout]     |                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/server.rs:160:34
[INFO] [stdout]     |
[INFO] [stdout] 160 |         NotificationResult = Box<Future<Item = (), Error = ()>>,
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 160 |         NotificationResult = Box<dyn Future<Item = (), Error = ()>>,
[INFO] [stdout]     |                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/endpoint.rs:179:28
[INFO] [stdout]     |
[INFO] [stdout] 179 | type BoxFuture<T, E> = Box<Future<Item = T, Error = E>>;
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 179 | type BoxFuture<T, E> = Box<dyn Future<Item = T, Error = E>>;
[INFO] [stdout]     |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/endpoint.rs:181:28
[INFO] [stdout]     |
[INFO] [stdout] 181 | type BoxStream<T, E> = Box<Stream<Item = T, Error = E>>;
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 181 | type BoxStream<T, E> = Box<dyn Stream<Item = T, Error = E>>;
[INFO] [stdout]     |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/endpoint.rs:598:57
[INFO] [stdout]     |
[INFO] [stdout] 598 |     pub fn start(self, handle: &Handle) -> (Client, Box<Future<Item = (), Error = IoError>>) {
[INFO] [stdout]     |                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 598 |     pub fn start(self, handle: &Handle) -> (Client, Box<dyn Future<Item = (), Error = IoError>>) {
[INFO] [stdout]     |                                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/server.rs:117:33
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub type BoxRpcCallResult = Box<Future<Item = Value, Error = RpcError>>;
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub type BoxRpcCallResult = Box<dyn Future<Item = Value, Error = RpcError>>;
[INFO] [stdout]     |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/server.rs:119:38
[INFO] [stdout]     |
[INFO] [stdout] 119 | pub type BoxNotificationResult = Box<Future<Item = (), Error = ()>>;
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 119 | pub type BoxNotificationResult = Box<dyn Future<Item = (), Error = ()>>;
[INFO] [stdout]     |                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/server.rs:130:29
[INFO] [stdout]     |
[INFO] [stdout] 130 |             .map(|f| -> Box<Future<Item = Value, Error = RpcError>> {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 130 |             .map(|f| -> Box<dyn Future<Item = Value, Error = RpcError>> {
[INFO] [stdout]     |                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/server.rs:145:29
[INFO] [stdout]     |
[INFO] [stdout] 145 |             .map(|f| -> Box<Future<Item = (), Error = ()>> { Box::new(f.into_future()) })
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 145 |             .map(|f| -> Box<dyn Future<Item = (), Error = ()>> { Box::new(f.into_future()) })
[INFO] [stdout]     |                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking slog-term v2.9.2
[INFO] [stdout] warning: unused boxed `futures::Stream` trait object that must be used
[INFO] [stdout]    --> src/endpoint.rs:327:13
[INFO] [stdout]     |
[INFO] [stdout] 327 |             do_response(idmap, logger, response);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: streams do nothing unless polled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `tokio_io::AsyncRead::framed`: Use tokio_codec::Decoder::framed instead
[INFO] [stdout]   --> examples/echo_params.rs:32:31
[INFO] [stdout]    |
[INFO] [stdout] 32 |         let jsonized = stream.framed(LineCodec::new());
[INFO] [stdout]    |                               ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `tokio_io::codec::Framed`: Moved to tokio-codec
[INFO] [stdout]   --> tests/endpoint.rs:23:22
[INFO] [stdout]    |
[INFO] [stdout] 23 | use tokio_io::codec::Framed;
[INFO] [stdout]    |                      ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `tokio_io::codec::Framed`: Moved to tokio-codec
[INFO] [stdout]   --> tests/endpoint.rs:64:5
[INFO] [stdout]    |
[INFO] [stdout] 64 |     Framed<TcpStream, LineCodec>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `tokio_io::codec::Framed`: Moved to tokio-codec
[INFO] [stdout]   --> tests/endpoint.rs:65:5
[INFO] [stdout]    |
[INFO] [stdout] 65 |     Framed<TcpStream, LineCodec>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> tests/endpoint.rs:99:26
[INFO] [stdout]    |
[INFO] [stdout] 99 |     params: (Client, Box<Future<Item = (), Error = IoError>>)
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 99 |     params: (Client, Box<dyn Future<Item = (), Error = IoError>>)
[INFO] [stdout]    |                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> tests/endpoint.rs:100:19
[INFO] [stdout]     |
[INFO] [stdout] 100 | ) -> (Client, Box<Future<Item = (), Error = IoError>>) {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 100 | ) -> (Client, Box<dyn Future<Item = (), Error = IoError>>) {
[INFO] [stdout]     |                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> tests/endpoint.rs:159:30
[INFO] [stdout]     |
[INFO] [stdout] 159 |     type RpcCallResult = Box<Future<Item = bool, Error = RpcError>>;
[INFO] [stdout]     |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 159 |     type RpcCallResult = Box<dyn Future<Item = bool, Error = RpcError>>;
[INFO] [stdout]     |                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `tokio_io::AsyncRead::framed`: Use tokio_codec::Decoder::framed instead
[INFO] [stdout]   --> examples/time_client.rs:52:56
[INFO] [stdout]    |
[INFO] [stdout] 52 |         let (client, _) = Endpoint::client_only(socket.framed(LineCodec::new()))
[INFO] [stdout]    |                                                        ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> tests/endpoint.rs:464:30
[INFO] [stdout]     |
[INFO] [stdout] 464 |     type RpcCallResult = Box<Future<Item = Value, Error = RpcError>>;
[INFO] [stdout]     |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 464 |     type RpcCallResult = Box<dyn Future<Item = Value, Error = RpcError>>;
[INFO] [stdout]     |                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `tokio_io::AsyncRead::framed`: Use tokio_codec::Decoder::framed instead
[INFO] [stdout]   --> tests/endpoint.rs:90:12
[INFO] [stdout]    |
[INFO] [stdout] 90 |         s1.framed(LineCodec::new()),
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `tokio_io::AsyncRead::framed`: Use tokio_codec::Decoder::framed instead
[INFO] [stdout]   --> tests/endpoint.rs:91:12
[INFO] [stdout]    |
[INFO] [stdout] 91 |         s2.framed(LineCodec::new()),
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `tokio_io::AsyncRead::framed`: Use tokio_codec::Decoder::framed instead
[INFO] [stdout]    --> examples/time_server.rs:133:28
[INFO] [stdout]     |
[INFO] [stdout] 133 |                 connection.framed(LineCodec::new()),
[INFO] [stdout]     |                            ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/server.rs:157:5
[INFO] [stdout]     |
[INFO] [stdout] 157 | /     Server<
[INFO] [stdout] 158 | |         Success = Value,
[INFO] [stdout] 159 | |         RpcCallResult = Box<Future<Item = Value, Error = RpcError>>,
[INFO] [stdout] 160 | |         NotificationResult = Box<Future<Item = (), Error = ()>>,
[INFO] [stdout] 161 | |     >,
[INFO] [stdout]     | |_____^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]     = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 157 |     dyn Server<
[INFO] [stdout]     |     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/server.rs:159:29
[INFO] [stdout]     |
[INFO] [stdout] 159 |         RpcCallResult = Box<Future<Item = Value, Error = RpcError>>,
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 159 |         RpcCallResult = Box<dyn Future<Item = Value, Error = RpcError>>,
[INFO] [stdout]     |                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/server.rs:160:34
[INFO] [stdout]     |
[INFO] [stdout] 160 |         NotificationResult = Box<Future<Item = (), Error = ()>>,
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 160 |         NotificationResult = Box<dyn Future<Item = (), Error = ()>>,
[INFO] [stdout]     |                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/endpoint.rs:179:28
[INFO] [stdout]     |
[INFO] [stdout] 179 | type BoxFuture<T, E> = Box<Future<Item = T, Error = E>>;
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 179 | type BoxFuture<T, E> = Box<dyn Future<Item = T, Error = E>>;
[INFO] [stdout]     |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/endpoint.rs:181:28
[INFO] [stdout]     |
[INFO] [stdout] 181 | type BoxStream<T, E> = Box<Stream<Item = T, Error = E>>;
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 181 | type BoxStream<T, E> = Box<dyn Stream<Item = T, Error = E>>;
[INFO] [stdout]     |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/endpoint.rs:598:57
[INFO] [stdout]     |
[INFO] [stdout] 598 |     pub fn start(self, handle: &Handle) -> (Client, Box<Future<Item = (), Error = IoError>>) {
[INFO] [stdout]     |                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 598 |     pub fn start(self, handle: &Handle) -> (Client, Box<dyn Future<Item = (), Error = IoError>>) {
[INFO] [stdout]     |                                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/server.rs:117:33
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub type BoxRpcCallResult = Box<Future<Item = Value, Error = RpcError>>;
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub type BoxRpcCallResult = Box<dyn Future<Item = Value, Error = RpcError>>;
[INFO] [stdout]     |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/server.rs:119:38
[INFO] [stdout]     |
[INFO] [stdout] 119 | pub type BoxNotificationResult = Box<Future<Item = (), Error = ()>>;
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 119 | pub type BoxNotificationResult = Box<dyn Future<Item = (), Error = ()>>;
[INFO] [stdout]     |                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused boxed `futures::Future` trait object in tuple element 1 that must be used
[INFO] [stdout]    --> tests/endpoint.rs:276:9
[INFO] [stdout]     |
[INFO] [stdout] 276 |         Endpoint::new(s1, AnotherServer(handle.clone(), Cell::new(2))).start(&handle);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: futures do nothing unless polled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/server.rs:130:29
[INFO] [stdout]     |
[INFO] [stdout] 130 |             .map(|f| -> Box<Future<Item = Value, Error = RpcError>> {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 130 |             .map(|f| -> Box<dyn Future<Item = Value, Error = RpcError>> {
[INFO] [stdout]     |                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/server.rs:145:29
[INFO] [stdout]     |
[INFO] [stdout] 145 |             .map(|f| -> Box<Future<Item = (), Error = ()>> { Box::new(f.into_future()) })
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 145 |             .map(|f| -> Box<dyn Future<Item = (), Error = ()>> { Box::new(f.into_future()) })
[INFO] [stdout]     |                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(), message::RpcError>`
[INFO] [stdout]    --> src/server.rs:381:29
[INFO] [stdout]     |
[INFO] [stdout] 368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout] 381 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]     |  _____________________________^
[INFO] [stdout] 382 | |                                 invalid_params(Some("Expected no params".to_owned()))).into());
[INFO] [stdout]     | |_____________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 831 |           let () = jsonrpc_params!(params,);
[INFO] [stdout]     |                    ------------------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Result<(), message::RpcError> as Into<Result<(), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout]     = note: `#[deny(self_type_conversion)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]    --> src/server.rs:430:33
[INFO] [stdout]     |
[INFO] [stdout] 368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout] 430 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]     |  _________________________________^
[INFO] [stdout] 431 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]     | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 881 |           let (b, s) = jsonrpc_params!(value, positional bool, String);
[INFO] [stdout]     |                        ----------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]    --> src/server.rs:437:33
[INFO] [stdout]     |
[INFO] [stdout] 368 | macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout] 437 |                     return Some(Err($crate::message::RpcError::invalid_params(Some(err))).into());
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 881 |         let (b, s) = jsonrpc_params!(value, positional bool, String);
[INFO] [stdout]     |                      ----------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]    --> src/server.rs:443:29
[INFO] [stdout]     |
[INFO] [stdout] 368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout] 443 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]     |  _____________________________^
[INFO] [stdout] 444 | |                                 invalid_params(Some("Expected an array as parameters".to_owned())))
[INFO] [stdout] 445 | |                             .into());
[INFO] [stdout]     | |___________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 881 |           let (b, s) = jsonrpc_params!(value, positional bool, String);
[INFO] [stdout]     |                        ----------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<Vec<std::string::String>, message::RpcError>`
[INFO] [stdout]    --> src/server.rs:430:33
[INFO] [stdout]     |
[INFO] [stdout] 368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout] 430 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]     |  _________________________________^
[INFO] [stdout] 431 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]     | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 893 |           let (r,) = jsonrpc_params!(value, positional Vec<String>);
[INFO] [stdout]     |                      ---------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Result<Vec<std::string::String>, message::RpcError> as Into<Result<Vec<std::string::String>, message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<Vec<std::string::String>, message::RpcError>`
[INFO] [stdout]    --> src/server.rs:437:33
[INFO] [stdout]     |
[INFO] [stdout] 368 | macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout] 437 |                     return Some(Err($crate::message::RpcError::invalid_params(Some(err))).into());
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 893 |         let (r,) = jsonrpc_params!(value, positional Vec<String>);
[INFO] [stdout]     |                    ---------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Result<Vec<std::string::String>, message::RpcError> as Into<Result<Vec<std::string::String>, message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<Vec<std::string::String>, message::RpcError>`
[INFO] [stdout]    --> src/server.rs:443:29
[INFO] [stdout]     |
[INFO] [stdout] 368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout] 443 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]     |  _____________________________^
[INFO] [stdout] 444 | |                                 invalid_params(Some("Expected an array as parameters".to_owned())))
[INFO] [stdout] 445 | |                             .into());
[INFO] [stdout]     | |___________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 893 |           let (r,) = jsonrpc_params!(value, positional Vec<String>);
[INFO] [stdout]     |                      ---------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Result<Vec<std::string::String>, message::RpcError> as Into<Result<Vec<std::string::String>, message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]    --> src/server.rs:430:33
[INFO] [stdout]     |
[INFO] [stdout] 368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout] 430 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]     |  _________________________________^
[INFO] [stdout] 431 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]     | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 951 |           jsonrpc_params!(&None, wrap positional bool, String).unwrap_err();
[INFO] [stdout]     |           ---------------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]    --> src/server.rs:437:33
[INFO] [stdout]     |
[INFO] [stdout] 368 | macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout] 437 |                     return Some(Err($crate::message::RpcError::invalid_params(Some(err))).into());
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 951 |         jsonrpc_params!(&None, wrap positional bool, String).unwrap_err();
[INFO] [stdout]     |         ---------------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]    --> src/server.rs:443:29
[INFO] [stdout]     |
[INFO] [stdout] 368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout] 443 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]     |  _____________________________^
[INFO] [stdout] 444 | |                                 invalid_params(Some("Expected an array as parameters".to_owned())))
[INFO] [stdout] 445 | |                             .into());
[INFO] [stdout]     | |___________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 951 |           jsonrpc_params!(&None, wrap positional bool, String).unwrap_err();
[INFO] [stdout]     |           ---------------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]    --> src/server.rs:430:33
[INFO] [stdout]     |
[INFO] [stdout] 368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout] 430 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]     |  _________________________________^
[INFO] [stdout] 431 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]     | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 952 |           jsonrpc_params!(&Some(Value::Null), wrap positional bool, String).unwrap_err();
[INFO] [stdout]     |           ----------------------------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]    --> src/server.rs:437:33
[INFO] [stdout]     |
[INFO] [stdout] 368 | macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout] 437 |                     return Some(Err($crate::message::RpcError::invalid_params(Some(err))).into());
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 952 |         jsonrpc_params!(&Some(Value::Null), wrap positional bool, String).unwrap_err();
[INFO] [stdout]     |         ----------------------------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]    --> src/server.rs:443:29
[INFO] [stdout]     |
[INFO] [stdout] 368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout] 443 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]     |  _____________________________^
[INFO] [stdout] 444 | |                                 invalid_params(Some("Expected an array as parameters".to_owned())))
[INFO] [stdout] 445 | |                             .into());
[INFO] [stdout]     | |___________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 952 |           jsonrpc_params!(&Some(Value::Null), wrap positional bool, String).unwrap_err();
[INFO] [stdout]     |           ----------------------------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]    --> src/server.rs:430:33
[INFO] [stdout]     |
[INFO] [stdout] 368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout] 430 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]     |  _________________________________^
[INFO] [stdout] 431 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]     | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 953 |           jsonrpc_params!(&Some(Value::Bool(true)), wrap positional bool, String).unwrap_err();
[INFO] [stdout]     |           ----------------------------------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]    --> src/server.rs:437:33
[INFO] [stdout]     |
[INFO] [stdout] 368 | macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout] 437 |                     return Some(Err($crate::message::RpcError::invalid_params(Some(err))).into());
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 953 |         jsonrpc_params!(&Some(Value::Bool(true)), wrap positional bool, String).unwrap_err();
[INFO] [stdout]     |         ----------------------------------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]    --> src/server.rs:443:29
[INFO] [stdout]     |
[INFO] [stdout] 368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout] 443 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]     |  _____________________________^
[INFO] [stdout] 444 | |                                 invalid_params(Some("Expected an array as parameters".to_owned())))
[INFO] [stdout] 445 | |                             .into());
[INFO] [stdout]     | |___________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 953 |           jsonrpc_params!(&Some(Value::Bool(true)), wrap positional bool, String).unwrap_err();
[INFO] [stdout]     |           ----------------------------------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]    --> src/server.rs:430:33
[INFO] [stdout]     |
[INFO] [stdout] 368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout] 430 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]     |  _________________________________^
[INFO] [stdout] 431 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]     | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 954 |           jsonrpc_params!(&Some(json!({"b": true, "s": "hello"})), wrap positional bool, String)
[INFO] [stdout]     |           -------------------------------------------------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]    --> src/server.rs:437:33
[INFO] [stdout]     |
[INFO] [stdout] 368 | macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout] 437 |                     return Some(Err($crate::message::RpcError::invalid_params(Some(err))).into());
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 954 |         jsonrpc_params!(&Some(json!({"b": true, "s": "hello"})), wrap positional bool, String)
[INFO] [stdout]     |         -------------------------------------------------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]    --> src/server.rs:443:29
[INFO] [stdout]     |
[INFO] [stdout] 368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout] 443 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]     |  _____________________________^
[INFO] [stdout] 444 | |                                 invalid_params(Some("Expected an array as parameters".to_owned())))
[INFO] [stdout] 445 | |                             .into());
[INFO] [stdout]     | |___________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 954 |           jsonrpc_params!(&Some(json!({"b": true, "s": "hello"})), wrap positional bool, String)
[INFO] [stdout]     |           -------------------------------------------------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]    --> src/server.rs:430:33
[INFO] [stdout]     |
[INFO] [stdout] 368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout] 430 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]     |  _________________________________^
[INFO] [stdout] 431 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]     | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 958 | /             jsonrpc_params!(&Some(json!([true, "hello"])),
[INFO] [stdout] 959 | |                                    wrap positional bool, String)
[INFO] [stdout]     | |________________________________________________________________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]    --> src/server.rs:437:33
[INFO] [stdout]     |
[INFO] [stdout] 368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout] 437 |                       return Some(Err($crate::message::RpcError::invalid_params(Some(err))).into());
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 958 | /             jsonrpc_params!(&Some(json!([true, "hello"])),
[INFO] [stdout] 959 | |                                    wrap positional bool, String)
[INFO] [stdout]     | |________________________________________________________________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]    --> src/server.rs:443:29
[INFO] [stdout]     |
[INFO] [stdout] 368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout] 443 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]     |  _____________________________^
[INFO] [stdout] 444 | |                                 invalid_params(Some("Expected an array as parameters".to_owned())))
[INFO] [stdout] 445 | |                             .into());
[INFO] [stdout]     | |___________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 958 | /             jsonrpc_params!(&Some(json!([true, "hello"])),
[INFO] [stdout] 959 | |                                    wrap positional bool, String)
[INFO] [stdout]     | |________________________________________________________________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]    --> src/server.rs:455:33
[INFO] [stdout]     |
[INFO] [stdout] 368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout] 455 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]     |  _________________________________^
[INFO] [stdout] 456 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]     | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 967 |           let (b, s) = jsonrpc_params!(value, named "b" => bool, "s" => String);
[INFO] [stdout]     |                        -------------------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]    --> src/server.rs:474:29
[INFO] [stdout]     |
[INFO] [stdout] 368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout] 474 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]     |  _____________________________^
[INFO] [stdout] 475 | |                                 invalid_params(Some("Expected an object as parameters".to_owned())))
[INFO] [stdout] 476 | |                             .into());
[INFO] [stdout]     | |___________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 967 |           let (b, s) = jsonrpc_params!(value, named "b" => bool, "s" => String);
[INFO] [stdout]     |                        -------------------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<TestStruct, message::RpcError>`
[INFO] [stdout]    --> src/server.rs:455:33
[INFO] [stdout]     |
[INFO] [stdout] 368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout] 455 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]     |  _________________________________^
[INFO] [stdout] 456 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]     | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 978 |           let (ts,) = jsonrpc_params!(value, named "ts" => TestStruct);
[INFO] [stdout]     |                       ------------------------------------------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Result<TestStruct, message::RpcError> as Into<Result<TestStruct, message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<TestStruct, message::RpcError>`
[INFO] [stdout]    --> src/server.rs:474:29
[INFO] [stdout]     |
[INFO] [stdout] 368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout] 474 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]     |  _____________________________^
[INFO] [stdout] 475 | |                                 invalid_params(Some("Expected an object as parameters".to_owned())))
[INFO] [stdout] 476 | |                             .into());
[INFO] [stdout]     | |___________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 978 |           let (ts,) = jsonrpc_params!(value, named "ts" => TestStruct);
[INFO] [stdout]     |                       ------------------------------------------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Result<TestStruct, message::RpcError> as Into<Result<TestStruct, message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<std::option::Option<u32>, message::RpcError>`
[INFO] [stdout]    --> src/server.rs:455:33
[INFO] [stdout]     |
[INFO] [stdout] 368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout] 455 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]     |  _________________________________^
[INFO] [stdout] 456 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]     | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 984 |           let (ov,) = jsonrpc_params!(value, named "ov" => Option<u32>);
[INFO] [stdout]     |                       ------------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Result<std::option::Option<u32>, message::RpcError> as Into<Result<std::option::Option<u32>, message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<std::option::Option<u32>, message::RpcError>`
[INFO] [stdout]    --> src/server.rs:474:29
[INFO] [stdout]     |
[INFO] [stdout] 368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout] 474 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]     |  _____________________________^
[INFO] [stdout] 475 | |                                 invalid_params(Some("Expected an object as parameters".to_owned())))
[INFO] [stdout] 476 | |                             .into());
[INFO] [stdout]     | |___________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 984 |           let (ov,) = jsonrpc_params!(value, named "ov" => Option<u32>);
[INFO] [stdout]     |                       ------------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Result<std::option::Option<u32>, message::RpcError> as Into<Result<std::option::Option<u32>, message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:455:33
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  455 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _________________________________^
[INFO] [stdout]  456 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]      | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1040 |           jsonrpc_params!(&None, wrap named "b" => bool, "s" => String).unwrap_err();
[INFO] [stdout]      |           ------------------------------------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:474:29
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  474 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _____________________________^
[INFO] [stdout]  475 | |                                 invalid_params(Some("Expected an object as parameters".to_owned())))
[INFO] [stdout]  476 | |                             .into());
[INFO] [stdout]      | |___________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1040 |           jsonrpc_params!(&None, wrap named "b" => bool, "s" => String).unwrap_err();
[INFO] [stdout]      |           ------------------------------------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:455:33
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  455 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _________________________________^
[INFO] [stdout]  456 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]      | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1041 |           jsonrpc_params!(&Some(Value::Null), wrap named "b" => bool, "s" => String).unwrap_err();
[INFO] [stdout]      |           -------------------------------------------------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:474:29
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  474 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _____________________________^
[INFO] [stdout]  475 | |                                 invalid_params(Some("Expected an object as parameters".to_owned())))
[INFO] [stdout]  476 | |                             .into());
[INFO] [stdout]      | |___________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1041 |           jsonrpc_params!(&Some(Value::Null), wrap named "b" => bool, "s" => String).unwrap_err();
[INFO] [stdout]      |           -------------------------------------------------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:455:33
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  455 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _________________________________^
[INFO] [stdout]  456 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]      | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1042 | /         jsonrpc_params!(&Some(Value::Bool(true)),
[INFO] [stdout] 1043 | |                         wrap named "b" => bool, "s" => String)
[INFO] [stdout]      | |______________________________________________________________- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:474:29
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  474 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _____________________________^
[INFO] [stdout]  475 | |                                 invalid_params(Some("Expected an object as parameters".to_owned())))
[INFO] [stdout]  476 | |                             .into());
[INFO] [stdout]      | |___________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1042 | /         jsonrpc_params!(&Some(Value::Bool(true)),
[INFO] [stdout] 1043 | |                         wrap named "b" => bool, "s" => String)
[INFO] [stdout]      | |______________________________________________________________- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:484:33
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  484 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _________________________________^
[INFO] [stdout]  485 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]      | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1047 | /             jsonrpc_params!(&Some(json!({"b": true, "s": "hello"})),
[INFO] [stdout] 1048 | |                                    wrap "b" => bool, "s" => String)
[INFO] [stdout]      | |___________________________________________________________________- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:430:33
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  430 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _________________________________^
[INFO] [stdout]  431 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]      | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1047 | /             jsonrpc_params!(&Some(json!({"b": true, "s": "hello"})),
[INFO] [stdout] 1048 | |                                    wrap "b" => bool, "s" => String)
[INFO] [stdout]      | |___________________________________________________________________- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:437:33
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  437 |                       return Some(Err($crate::message::RpcError::invalid_params(Some(err))).into());
[INFO] [stdout]      |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1047 | /             jsonrpc_params!(&Some(json!({"b": true, "s": "hello"})),
[INFO] [stdout] 1048 | |                                    wrap "b" => bool, "s" => String)
[INFO] [stdout]      | |___________________________________________________________________- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:443:29
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  443 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _____________________________^
[INFO] [stdout]  444 | |                                 invalid_params(Some("Expected an array as parameters".to_owned())))
[INFO] [stdout]  445 | |                             .into());
[INFO] [stdout]      | |___________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1047 | /             jsonrpc_params!(&Some(json!({"b": true, "s": "hello"})),
[INFO] [stdout] 1048 | |                                    wrap "b" => bool, "s" => String)
[INFO] [stdout]      | |___________________________________________________________________- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:455:33
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  455 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _________________________________^
[INFO] [stdout]  456 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]      | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1047 | /             jsonrpc_params!(&Some(json!({"b": true, "s": "hello"})),
[INFO] [stdout] 1048 | |                                    wrap "b" => bool, "s" => String)
[INFO] [stdout]      | |___________________________________________________________________- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:474:29
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  474 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _____________________________^
[INFO] [stdout]  475 | |                                 invalid_params(Some("Expected an object as parameters".to_owned())))
[INFO] [stdout]  476 | |                             .into());
[INFO] [stdout]      | |___________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1047 | /             jsonrpc_params!(&Some(json!({"b": true, "s": "hello"})),
[INFO] [stdout] 1048 | |                                    wrap "b" => bool, "s" => String)
[INFO] [stdout]      | |___________________________________________________________________- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:493:29
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  493 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _____________________________^
[INFO] [stdout]  494 | |                                 invalid_params(Some("Expected an object or an array as parameters"
[INFO] [stdout]  495 | |                                                     .to_owned()))).into());
[INFO] [stdout]      | |_________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1047 | /             jsonrpc_params!(&Some(json!({"b": true, "s": "hello"})),
[INFO] [stdout] 1048 | |                                    wrap "b" => bool, "s" => String)
[INFO] [stdout]      | |___________________________________________________________________- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:455:33
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  455 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _________________________________^
[INFO] [stdout]  456 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]      | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1051 |           jsonrpc_params!(&Some(json!([true, "hello"])), wrap named "b" => bool, "s" => String)
[INFO] [stdout]      |           ------------------------------------------------------------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:474:29
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  474 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _____________________________^
[INFO] [stdout]  475 | |                                 invalid_params(Some("Expected an object as parameters".to_owned())))
[INFO] [stdout]  476 | |                             .into());
[INFO] [stdout]      | |___________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1051 |           jsonrpc_params!(&Some(json!([true, "hello"])), wrap named "b" => bool, "s" => String)
[INFO] [stdout]      |           ------------------------------------------------------------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:484:33
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  484 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _________________________________^
[INFO] [stdout]  485 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]      | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1060 |           let (b, s) = jsonrpc_params!(value, "b" => bool, "s" => String);
[INFO] [stdout]      |                        -------------------------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:430:33
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  430 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _________________________________^
[INFO] [stdout]  431 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]      | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1060 |           let (b, s) = jsonrpc_params!(value, "b" => bool, "s" => String);
[INFO] [stdout]      |                        -------------------------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:437:33
[INFO] [stdout]      |
[INFO] [stdout]  368 | macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  437 |                     return Some(Err($crate::message::RpcError::invalid_params(Some(err))).into());
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1060 |         let (b, s) = jsonrpc_params!(value, "b" => bool, "s" => String);
[INFO] [stdout]      |                      -------------------------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:443:29
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  443 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _____________________________^
[INFO] [stdout]  444 | |                                 invalid_params(Some("Expected an array as parameters".to_owned())))
[INFO] [stdout]  445 | |                             .into());
[INFO] [stdout]      | |___________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1060 |           let (b, s) = jsonrpc_params!(value, "b" => bool, "s" => String);
[INFO] [stdout]      |                        -------------------------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:455:33
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  455 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _________________________________^
[INFO] [stdout]  456 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]      | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1060 |           let (b, s) = jsonrpc_params!(value, "b" => bool, "s" => String);
[INFO] [stdout]      |                        -------------------------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:474:29
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  474 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _____________________________^
[INFO] [stdout]  475 | |                                 invalid_params(Some("Expected an object as parameters".to_owned())))
[INFO] [stdout]  476 | |                             .into());
[INFO] [stdout]      | |___________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1060 |           let (b, s) = jsonrpc_params!(value, "b" => bool, "s" => String);
[INFO] [stdout]      |                        -------------------------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:493:29
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  493 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _____________________________^
[INFO] [stdout]  494 | |                                 invalid_params(Some("Expected an object or an array as parameters"
[INFO] [stdout]  495 | |                                                     .to_owned()))).into());
[INFO] [stdout]      | |_________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1060 |           let (b, s) = jsonrpc_params!(value, "b" => bool, "s" => String);
[INFO] [stdout]      |                        -------------------------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:484:33
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  484 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _________________________________^
[INFO] [stdout]  485 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]      | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1088 |           jsonrpc_params!(&None, wrap "b" => bool, "s" => String).unwrap_err();
[INFO] [stdout]      |           ------------------------------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:430:33
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  430 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _________________________________^
[INFO] [stdout]  431 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]      | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1088 |           jsonrpc_params!(&None, wrap "b" => bool, "s" => String).unwrap_err();
[INFO] [stdout]      |           ------------------------------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:437:33
[INFO] [stdout]      |
[INFO] [stdout]  368 | macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  437 |                     return Some(Err($crate::message::RpcError::invalid_params(Some(err))).into());
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1088 |         jsonrpc_params!(&None, wrap "b" => bool, "s" => String).unwrap_err();
[INFO] [stdout]      |         ------------------------------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:443:29
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  443 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _____________________________^
[INFO] [stdout]  444 | |                                 invalid_params(Some("Expected an array as parameters".to_owned())))
[INFO] [stdout]  445 | |                             .into());
[INFO] [stdout]      | |___________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1088 |           jsonrpc_params!(&None, wrap "b" => bool, "s" => String).unwrap_err();
[INFO] [stdout]      |           ------------------------------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:455:33
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  455 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _________________________________^
[INFO] [stdout]  456 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]      | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1088 |           jsonrpc_params!(&None, wrap "b" => bool, "s" => String).unwrap_err();
[INFO] [stdout]      |           ------------------------------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:474:29
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  474 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _____________________________^
[INFO] [stdout]  475 | |                                 invalid_params(Some("Expected an object as parameters".to_owned())))
[INFO] [stdout]  476 | |                             .into());
[INFO] [stdout]      | |___________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1088 |           jsonrpc_params!(&None, wrap "b" => bool, "s" => String).unwrap_err();
[INFO] [stdout]      |           ------------------------------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:493:29
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  493 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _____________________________^
[INFO] [stdout]  494 | |                                 invalid_params(Some("Expected an object or an array as parameters"
[INFO] [stdout]  495 | |                                                     .to_owned()))).into());
[INFO] [stdout]      | |_________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1088 |           jsonrpc_params!(&None, wrap "b" => bool, "s" => String).unwrap_err();
[INFO] [stdout]      |           ------------------------------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:484:33
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  484 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _________________________________^
[INFO] [stdout]  485 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]      | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1089 |           jsonrpc_params!(&Some(Value::Null), wrap "b" => bool, "s" => String).unwrap_err();
[INFO] [stdout]      |           -------------------------------------------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:430:33
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  430 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _________________________________^
[INFO] [stdout]  431 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]      | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1089 |           jsonrpc_params!(&Some(Value::Null), wrap "b" => bool, "s" => String).unwrap_err();
[INFO] [stdout]      |           -------------------------------------------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:437:33
[INFO] [stdout]      |
[INFO] [stdout]  368 | macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  437 |                     return Some(Err($crate::message::RpcError::invalid_params(Some(err))).into());
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1089 |         jsonrpc_params!(&Some(Value::Null), wrap "b" => bool, "s" => String).unwrap_err();
[INFO] [stdout]      |         -------------------------------------------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:443:29
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  443 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _____________________________^
[INFO] [stdout]  444 | |                                 invalid_params(Some("Expected an array as parameters".to_owned())))
[INFO] [stdout]  445 | |                             .into());
[INFO] [stdout]      | |___________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1089 |           jsonrpc_params!(&Some(Value::Null), wrap "b" => bool, "s" => String).unwrap_err();
[INFO] [stdout]      |           -------------------------------------------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:455:33
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  455 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _________________________________^
[INFO] [stdout]  456 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]      | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1089 |           jsonrpc_params!(&Some(Value::Null), wrap "b" => bool, "s" => String).unwrap_err();
[INFO] [stdout]      |           -------------------------------------------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:474:29
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  474 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _____________________________^
[INFO] [stdout]  475 | |                                 invalid_params(Some("Expected an object as parameters".to_owned())))
[INFO] [stdout]  476 | |                             .into());
[INFO] [stdout]      | |___________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1089 |           jsonrpc_params!(&Some(Value::Null), wrap "b" => bool, "s" => String).unwrap_err();
[INFO] [stdout]      |           -------------------------------------------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:493:29
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  493 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _____________________________^
[INFO] [stdout]  494 | |                                 invalid_params(Some("Expected an object or an array as parameters"
[INFO] [stdout]  495 | |                                                     .to_owned()))).into());
[INFO] [stdout]      | |_________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1089 |           jsonrpc_params!(&Some(Value::Null), wrap "b" => bool, "s" => String).unwrap_err();
[INFO] [stdout]      |           -------------------------------------------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:484:33
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  484 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _________________________________^
[INFO] [stdout]  485 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]      | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1090 |           jsonrpc_params!(&Some(Value::Bool(true)), wrap "b" => bool, "s" => String).unwrap_err();
[INFO] [stdout]      |           -------------------------------------------------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:430:33
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  430 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _________________________________^
[INFO] [stdout]  431 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]      | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1090 |           jsonrpc_params!(&Some(Value::Bool(true)), wrap "b" => bool, "s" => String).unwrap_err();
[INFO] [stdout]      |           -------------------------------------------------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:437:33
[INFO] [stdout]      |
[INFO] [stdout]  368 | macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  437 |                     return Some(Err($crate::message::RpcError::invalid_params(Some(err))).into());
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1090 |         jsonrpc_params!(&Some(Value::Bool(true)), wrap "b" => bool, "s" => String).unwrap_err();
[INFO] [stdout]      |         -------------------------------------------------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:443:29
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  443 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _____________________________^
[INFO] [stdout]  444 | |                                 invalid_params(Some("Expected an array as parameters".to_owned())))
[INFO] [stdout]  445 | |                             .into());
[INFO] [stdout]      | |___________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1090 |           jsonrpc_params!(&Some(Value::Bool(true)), wrap "b" => bool, "s" => String).unwrap_err();
[INFO] [stdout]      |           -------------------------------------------------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:455:33
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  455 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _________________________________^
[INFO] [stdout]  456 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]      | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1090 |           jsonrpc_params!(&Some(Value::Bool(true)), wrap "b" => bool, "s" => String).unwrap_err();
[INFO] [stdout]      |           -------------------------------------------------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:474:29
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  474 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _____________________________^
[INFO] [stdout]  475 | |                                 invalid_params(Some("Expected an object as parameters".to_owned())))
[INFO] [stdout]  476 | |                             .into());
[INFO] [stdout]      | |___________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1090 |           jsonrpc_params!(&Some(Value::Bool(true)), wrap "b" => bool, "s" => String).unwrap_err();
[INFO] [stdout]      |           -------------------------------------------------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:493:29
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  493 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _____________________________^
[INFO] [stdout]  494 | |                                 invalid_params(Some("Expected an object or an array as parameters"
[INFO] [stdout]  495 | |                                                     .to_owned()))).into());
[INFO] [stdout]      | |_________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1090 |           jsonrpc_params!(&Some(Value::Bool(true)), wrap "b" => bool, "s" => String).unwrap_err();
[INFO] [stdout]      |           -------------------------------------------------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:484:33
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  484 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _________________________________^
[INFO] [stdout]  485 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]      | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1093 | /             jsonrpc_params!(&Some(json!({"b": true, "s": "hello"})),
[INFO] [stdout] 1094 | |                                    wrap "b" => bool, "s" => String)
[INFO] [stdout]      | |___________________________________________________________________- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:430:33
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  430 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _________________________________^
[INFO] [stdout]  431 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]      | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1093 | /             jsonrpc_params!(&Some(json!({"b": true, "s": "hello"})),
[INFO] [stdout] 1094 | |                                    wrap "b" => bool, "s" => String)
[INFO] [stdout]      | |___________________________________________________________________- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:437:33
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  437 |                       return Some(Err($crate::message::RpcError::invalid_params(Some(err))).into());
[INFO] [stdout]      |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1093 | /             jsonrpc_params!(&Some(json!({"b": true, "s": "hello"})),
[INFO] [stdout] 1094 | |                                    wrap "b" => bool, "s" => String)
[INFO] [stdout]      | |___________________________________________________________________- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:443:29
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  443 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _____________________________^
[INFO] [stdout]  444 | |                                 invalid_params(Some("Expected an array as parameters".to_owned())))
[INFO] [stdout]  445 | |                             .into());
[INFO] [stdout]      | |___________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1093 | /             jsonrpc_params!(&Some(json!({"b": true, "s": "hello"})),
[INFO] [stdout] 1094 | |                                    wrap "b" => bool, "s" => String)
[INFO] [stdout]      | |___________________________________________________________________- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:455:33
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  455 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _________________________________^
[INFO] [stdout]  456 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]      | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1093 | /             jsonrpc_params!(&Some(json!({"b": true, "s": "hello"})),
[INFO] [stdout] 1094 | |                                    wrap "b" => bool, "s" => String)
[INFO] [stdout]      | |___________________________________________________________________- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:474:29
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  474 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _____________________________^
[INFO] [stdout]  475 | |                                 invalid_params(Some("Expected an object as parameters".to_owned())))
[INFO] [stdout]  476 | |                             .into());
[INFO] [stdout]      | |___________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1093 | /             jsonrpc_params!(&Some(json!({"b": true, "s": "hello"})),
[INFO] [stdout] 1094 | |                                    wrap "b" => bool, "s" => String)
[INFO] [stdout]      | |___________________________________________________________________- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:493:29
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  493 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _____________________________^
[INFO] [stdout]  494 | |                                 invalid_params(Some("Expected an object or an array as parameters"
[INFO] [stdout]  495 | |                                                     .to_owned()))).into());
[INFO] [stdout]      | |_________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1093 | /             jsonrpc_params!(&Some(json!({"b": true, "s": "hello"})),
[INFO] [stdout] 1094 | |                                    wrap "b" => bool, "s" => String)
[INFO] [stdout]      | |___________________________________________________________________- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:484:33
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  484 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _________________________________^
[INFO] [stdout]  485 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]      | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1099 | /             jsonrpc_params!(&Some(json!([true, "hello"])),
[INFO] [stdout] 1100 | |                                    wrap "b" => bool, "s" => String)
[INFO] [stdout]      | |___________________________________________________________________- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:430:33
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  430 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _________________________________^
[INFO] [stdout]  431 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]      | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1099 | /             jsonrpc_params!(&Some(json!([true, "hello"])),
[INFO] [stdout] 1100 | |                                    wrap "b" => bool, "s" => String)
[INFO] [stdout]      | |___________________________________________________________________- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:437:33
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  437 |                       return Some(Err($crate::message::RpcError::invalid_params(Some(err))).into());
[INFO] [stdout]      |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1099 | /             jsonrpc_params!(&Some(json!([true, "hello"])),
[INFO] [stdout] 1100 | |                                    wrap "b" => bool, "s" => String)
[INFO] [stdout]      | |___________________________________________________________________- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:443:29
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  443 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _____________________________^
[INFO] [stdout]  444 | |                                 invalid_params(Some("Expected an array as parameters".to_owned())))
[INFO] [stdout]  445 | |                             .into());
[INFO] [stdout]      | |___________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1099 | /             jsonrpc_params!(&Some(json!([true, "hello"])),
[INFO] [stdout] 1100 | |                                    wrap "b" => bool, "s" => String)
[INFO] [stdout]      | |___________________________________________________________________- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:455:33
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  455 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _________________________________^
[INFO] [stdout]  456 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]      | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1099 | /             jsonrpc_params!(&Some(json!([true, "hello"])),
[INFO] [stdout] 1100 | |                                    wrap "b" => bool, "s" => String)
[INFO] [stdout]      | |___________________________________________________________________- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:474:29
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  474 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _____________________________^
[INFO] [stdout]  475 | |                                 invalid_params(Some("Expected an object as parameters".to_owned())))
[INFO] [stdout]  476 | |                             .into());
[INFO] [stdout]      | |___________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1099 | /             jsonrpc_params!(&Some(json!([true, "hello"])),
[INFO] [stdout] 1100 | |                                    wrap "b" => bool, "s" => String)
[INFO] [stdout]      | |___________________________________________________________________- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<(bool, std::string::String), message::RpcError>`
[INFO] [stdout]     --> src/server.rs:493:29
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  493 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _____________________________^
[INFO] [stdout]  494 | |                                 invalid_params(Some("Expected an object or an array as parameters"
[INFO] [stdout]  495 | |                                                     .to_owned()))).into());
[INFO] [stdout]      | |_________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1099 | /             jsonrpc_params!(&Some(json!([true, "hello"])),
[INFO] [stdout] 1100 | |                                    wrap "b" => bool, "s" => String)
[INFO] [stdout]      | |___________________________________________________________________- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<(bool, std::string::String), message::RpcError> as Into<Result<(bool, std::string::String), message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<TestStruct, message::RpcError>`
[INFO] [stdout]     --> src/server.rs:484:33
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  484 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _________________________________^
[INFO] [stdout]  485 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]      | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1108 |           let (ts,) = jsonrpc_params!(value, "ts" => TestStruct);
[INFO] [stdout]      |                       ------------------------------------------ in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<TestStruct, message::RpcError> as Into<Result<TestStruct, message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<TestStruct, message::RpcError>`
[INFO] [stdout]     --> src/server.rs:430:33
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  430 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _________________________________^
[INFO] [stdout]  431 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]      | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1108 |           let (ts,) = jsonrpc_params!(value, "ts" => TestStruct);
[INFO] [stdout]      |                       ------------------------------------------ in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<TestStruct, message::RpcError> as Into<Result<TestStruct, message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<TestStruct, message::RpcError>`
[INFO] [stdout]     --> src/server.rs:437:33
[INFO] [stdout]      |
[INFO] [stdout]  368 | macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  437 |                     return Some(Err($crate::message::RpcError::invalid_params(Some(err))).into());
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1108 |         let (ts,) = jsonrpc_params!(value, "ts" => TestStruct);
[INFO] [stdout]      |                     ------------------------------------------ in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<TestStruct, message::RpcError> as Into<Result<TestStruct, message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<TestStruct, message::RpcError>`
[INFO] [stdout]     --> src/server.rs:443:29
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  443 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _____________________________^
[INFO] [stdout]  444 | |                                 invalid_params(Some("Expected an array as parameters".to_owned())))
[INFO] [stdout]  445 | |                             .into());
[INFO] [stdout]      | |___________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1108 |           let (ts,) = jsonrpc_params!(value, "ts" => TestStruct);
[INFO] [stdout]      |                       ------------------------------------------ in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<TestStruct, message::RpcError> as Into<Result<TestStruct, message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<TestStruct, message::RpcError>`
[INFO] [stdout]     --> src/server.rs:455:33
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  455 |               None => return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _________________________________^
[INFO] [stdout]  456 | |                                     invalid_params(Some("Expected parameters".to_owned()))).into()),
[INFO] [stdout]      | |__________________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1108 |           let (ts,) = jsonrpc_params!(value, "ts" => TestStruct);
[INFO] [stdout]      |                       ------------------------------------------ in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<TestStruct, message::RpcError> as Into<Result<TestStruct, message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<TestStruct, message::RpcError>`
[INFO] [stdout]     --> src/server.rs:474:29
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  474 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _____________________________^
[INFO] [stdout]  475 | |                                 invalid_params(Some("Expected an object as parameters".to_owned())))
[INFO] [stdout]  476 | |                             .into());
[INFO] [stdout]      | |___________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1108 |           let (ts,) = jsonrpc_params!(value, "ts" => TestStruct);
[INFO] [stdout]      |                       ------------------------------------------ in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<TestStruct, message::RpcError> as Into<Result<TestStruct, message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Result<TestStruct, message::RpcError>`
[INFO] [stdout]     --> src/server.rs:493:29
[INFO] [stdout]      |
[INFO] [stdout]  368 |   macro_rules! jsonrpc_params {
[INFO] [stdout] ...
[INFO] [stdout]  493 |                   return Some(Err($crate::message::RpcError::
[INFO] [stdout]      |  _____________________________^
[INFO] [stdout]  494 | |                                 invalid_params(Some("Expected an object or an array as parameters"
[INFO] [stdout]  495 | |                                                     .to_owned()))).into());
[INFO] [stdout]      | |_________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 1108 |           let (ts,) = jsonrpc_params!(value, "ts" => TestStruct);
[INFO] [stdout]      |                       ------------------------------------------ in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]      = note: you can instead use the fully-qualified path `<Result<TestStruct, message::RpcError> as Into<Result<TestStruct, message::RpcError>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused boxed `futures::Stream` trait object that must be used
[INFO] [stdout]    --> src/endpoint.rs:327:13
[INFO] [stdout]     |
[INFO] [stdout] 327 |             do_response(idmap, logger, response);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: streams do nothing unless polled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `tokio-jsonrpc` (lib test) due to 92 previous errors; 11 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "f7c28b8c9f03093e42150572e3e5bff46fb395a377745b2c9de2414b078e6918", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f7c28b8c9f03093e42150572e3e5bff46fb395a377745b2c9de2414b078e6918", kill_on_drop: false }`
[INFO] [stdout] f7c28b8c9f03093e42150572e3e5bff46fb395a377745b2c9de2414b078e6918
