[INFO] fetching crate spanner-rs 0.3.0...
[INFO] testing spanner-rs-0.3.0 against try#c2e32f1c9652b13ed99608599c1e855462f421f3 for pr-146098-8
[INFO] extracting crate spanner-rs 0.3.0 into /workspace/builds/worker-6-tc2/source
[INFO] started tweaking crates.io crate spanner-rs 0.3.0
[INFO] finished tweaking crates.io crate spanner-rs 0.3.0
[INFO] tweaked toml for crates.io crate spanner-rs 0.3.0 written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate spanner-rs 0.3.0 on toolchain c2e32f1c9652b13ed99608599c1e855462f421f3
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c2e32f1c9652b13ed99608599c1e855462f421f3" "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" "+c2e32f1c9652b13ed99608599c1e855462f421f3" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]      Locking 302 packages to latest compatible versions
[INFO] [stderr]       Adding base64 v0.13.1 (available: v0.22.1)
[INFO] [stderr]       Adding bb8 v0.8.6 (available: v0.9.0)
[INFO] [stderr]       Adding bigdecimal v0.3.1 (available: v0.4.9)
[INFO] [stderr]       Adding ctor v0.1.26 (available: v0.6.1)
[INFO] [stderr]       Adding derive_builder v0.11.2 (available: v0.20.2)
[INFO] [stderr]       Adding env_logger v0.9.3 (available: v0.11.8)
[INFO] [stderr]       Adding gcp_auth v0.7.6 (available: v0.12.4)
[INFO] [stderr]       Adding generic-array v0.14.7 (available: v0.14.9)
[INFO] [stderr]       Adding http v0.2.12 (available: v1.3.1)
[INFO] [stderr]       Adding prost v0.11.9 (available: v0.14.1)
[INFO] [stderr]       Adding prost-types v0.11.9 (available: v0.14.1)
[INFO] [stderr]       Adding reqwest v0.11.27 (available: v0.12.24)
[INFO] [stderr]       Adding testcontainers v0.14.0 (available: v0.25.2)
[INFO] [stderr]       Adding thiserror v1.0.69 (available: v2.0.17)
[INFO] [stderr]       Adding tonic v0.8.3 (available: v0.14.2)
[INFO] [stderr]       Adding tower v0.4.13 (available: v0.5.2)
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c2e32f1c9652b13ed99608599c1e855462f421f3" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c2e32f1c9652b13ed99608599c1e855462f421f3" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 91da8ec88b66604d7dbcdb6dbb93c4a2a7d9a5c2189e1bacb3f5097bec46a5d4
[INFO] running `Command { std: "docker" "start" "-a" "91da8ec88b66604d7dbcdb6dbb93c4a2a7d9a5c2189e1bacb3f5097bec46a5d4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "91da8ec88b66604d7dbcdb6dbb93c4a2a7d9a5c2189e1bacb3f5097bec46a5d4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "91da8ec88b66604d7dbcdb6dbb93c4a2a7d9a5c2189e1bacb3f5097bec46a5d4", kill_on_drop: false }`
[INFO] [stdout] 91da8ec88b66604d7dbcdb6dbb93c4a2a7d9a5c2189e1bacb3f5097bec46a5d4
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c2e32f1c9652b13ed99608599c1e855462f421f3" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 261002ff0efc2a29caad01dca9f8909a9f0f1712b177a73bded038e2801826df
[INFO] running `Command { std: "docker" "start" "-a" "261002ff0efc2a29caad01dca9f8909a9f0f1712b177a73bded038e2801826df", kill_on_drop: false }`
[INFO] [stderr]    Compiling futures-task v0.3.31
[INFO] [stderr]    Compiling indexmap v2.12.0
[INFO] [stderr]    Compiling rustversion v1.0.22
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling futures-channel v0.3.31
[INFO] [stderr]    Compiling anyhow v1.0.100
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling mio v1.1.0
[INFO] [stderr]    Compiling socket2 v0.6.1
[INFO] [stderr]    Compiling getrandom v0.2.16
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling tracing-attributes v0.1.30
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling ring v0.16.20
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling socket2 v0.5.10
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling http-body v0.4.6
[INFO] [stderr]    Compiling ident_case v1.0.1
[INFO] [stderr]    Compiling rustls v0.20.9
[INFO] [stderr]    Compiling untrusted v0.7.1
[INFO] [stderr]    Compiling spin v0.5.2
[INFO] [stderr]    Compiling strsim v0.10.0
[INFO] [stderr]    Compiling itertools v0.14.0
[INFO] [stderr]    Compiling sync_wrapper v1.0.2
[INFO] [stderr]    Compiling matchit v0.7.3
[INFO] [stderr]    Compiling tokio v1.48.0
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling base64 v0.21.7
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling axum-core v0.3.4
[INFO] [stderr]    Compiling rustls-pemfile v1.0.4
[INFO] [stderr]    Compiling itertools v0.10.5
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]    Compiling openssl-probe v0.1.6
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling tracing v0.1.41
[INFO] [stderr]    Compiling rustls-native-certs v0.6.3
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling axum v0.6.20
[INFO] [stderr]    Compiling bitflags v2.10.0
[INFO] [stderr]    Compiling linux-raw-sys v0.4.15
[INFO] [stderr]    Compiling tracing-futures v0.2.5
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling dirs-sys-next v0.1.2
[INFO] [stderr]    Compiling sync_wrapper v0.1.2
[INFO] [stderr]    Compiling async-stream v0.3.6
[INFO] [stderr]    Compiling time-core v0.1.6
[INFO] [stderr]    Compiling home v0.5.12
[INFO] [stderr]    Compiling dirs-next v2.0.0
[INFO] [stderr]    Compiling chrono v0.4.42
[INFO] [stderr]    Compiling dyn-clone v1.0.20
[INFO] [stderr]    Compiling num-bigint v0.4.6
[INFO] [stderr]    Compiling deranged v0.5.5
[INFO] [stderr]    Compiling serde_json v1.0.145
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling prost-derive v0.13.5
[INFO] [stderr]    Compiling axum-core v0.4.5
[INFO] [stderr]    Compiling tower v0.5.2
[INFO] [stderr]    Compiling which v4.4.2
[INFO] [stderr]    Compiling bigdecimal v0.3.1
[INFO] [stderr]    Compiling url v2.5.7
[INFO] [stderr]    Compiling prost v0.13.5
[INFO] [stderr]    Compiling prost-types v0.13.5
[INFO] [stderr]    Compiling time v0.3.44
[INFO] [stderr]    Compiling darling_core v0.14.4
[INFO] [stderr]    Compiling webpki v0.22.4
[INFO] [stderr]    Compiling sct v0.7.1
[INFO] [stderr]    Compiling prost-derive v0.11.9
[INFO] [stderr]    Compiling axum v0.7.9
[INFO] [stderr]    Compiling tokio-util v0.7.17
[INFO] [stderr]    Compiling tokio-stream v0.1.17
[INFO] [stderr]    Compiling tokio-io-timeout v1.2.1
[INFO] [stderr]    Compiling bb8 v0.8.6
[INFO] [stderr]    Compiling darling_macro v0.14.4
[INFO] [stderr]    Compiling darling v0.14.4
[INFO] [stderr]    Compiling derive_builder_core v0.11.2
[INFO] [stderr]    Compiling h2 v0.3.27
[INFO] [stderr]    Compiling h2 v0.4.12
[INFO] [stderr]    Compiling tower v0.4.13
[INFO] [stderr]    Compiling prost v0.11.9
[INFO] [stderr]    Compiling derive_builder_macro v0.11.2
[INFO] [stderr]    Compiling prost-types v0.11.9
[INFO] [stderr]    Compiling derive_builder v0.11.2
[INFO] [stderr]    Compiling tokio-rustls v0.23.4
[INFO] [stderr]    Compiling hyper v0.14.32
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling hyper-util v0.1.18
[INFO] [stderr]    Compiling hyper-timeout v0.5.2
[INFO] [stderr]    Compiling tonic v0.12.3
[INFO] [stderr]    Compiling hyper-rustls v0.23.2
[INFO] [stderr]    Compiling hyper-timeout v0.4.1
[INFO] [stderr]    Compiling gcp_auth v0.7.6
[INFO] [stderr]    Compiling google-api-proto v1.710.0
[INFO] [stderr]    Compiling tonic v0.8.3
[INFO] [stderr]    Compiling spanner-rs v0.3.0 (/opt/rustwide/workdir)
[INFO] [stdout] error[E0271]: type mismatch resolving `<Either<..., ...> as Service<...>>::Response == Response<_>`
[INFO] [stdout]    --> src/connection/grpc.rs:57:19
[INFO] [stdout]     |
[INFO] [stdout]  57 |     let spanner = SpannerClient::new(channel);
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Response<_>`, found `Response<Body>`
[INFO] [stdout]     |
[INFO] [stdout] note: two different versions of crate `http` are being used; two types coming from two different versions of the same crate are different types even if they look the same
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/http-0.2.12/src/response.rs:179:1
[INFO] [stdout]     |
[INFO] [stdout] 179 | pub struct Response<T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^ this is the found type `http::Response`
[INFO] [stdout]     |
[INFO] [stdout]    ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/response.rs:180:1
[INFO] [stdout]     |
[INFO] [stdout] 180 | pub struct Response<T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^ this is the expected type `http::response::Response`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/connection/grpc.rs:9:5
[INFO] [stdout]     |
[INFO] [stdout]   9 | use google_api_proto::google::spanner::v1::{self as proto, ExecuteBatchDmlRequest};
[INFO] [stdout]     |     ---------------- one version of crate `http` used here, as a dependency of crate `http_body_util`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/auth.rs:4:5
[INFO] [stdout]     |
[INFO] [stdout]   4 | use http::HeaderValue;
[INFO] [stdout]     |     ---- one version of crate `http` used here, as a direct dependency of the current crate
[INFO] [stdout]     = help: you can use `cargo tree` to explore your dependency tree
[INFO] [stdout]     = note: required for `Either<AsyncFilter<Channel, AuthFilter>, Channel>` to implement `GrpcService<UnsyncBoxBody<Bytes, Status>>`
[INFO] [stdout]     = note: the full name for the type has been written to '/opt/rustwide/target/debug/deps/spanner_rs-0d8bf3678aa0f4ab.long-type-14063544516375994676.txt'
[INFO] [stdout]     = note: consider using `--verbose` to print the full type name to the console
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: expected a `FnMut(http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>)` closure, found `AuthFilter`
[INFO] [stdout]   --> src/connection/grpc.rs:57:19
[INFO] [stdout]    |
[INFO] [stdout] 57 |     let spanner = SpannerClient::new(channel);
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected an `FnMut(http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>)` closure, found `AuthFilter`
[INFO] [stdout]    |
[INFO] [stdout] help: the trait `FnMut(http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>)` is not implemented for `AuthFilter`
[INFO] [stdout]   --> src/auth.rs:35:1
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub(crate) struct AuthFilter {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: there are multiple different versions of crate `tonic` in the dependency graph
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tonic-0.12.3/src/client/service.rs:13:1
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait GrpcService<ReqBody> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the required trait
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/connection/grpc.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | use google_api_proto::google::spanner::v1::{self as proto, ExecuteBatchDmlRequest};
[INFO] [stdout]    |     ---------------- one version of crate `tonic` used here, as a dependency of crate `google_api_proto`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/client.rs:5:5
[INFO] [stdout]    |
[INFO] [stdout]  5 | use tonic::Code;
[INFO] [stdout]    |     ----- one version of crate `tonic` used here, as a direct dependency of the current crate
[INFO] [stdout]    |
[INFO] [stdout]   ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tower-0.4.13/src/util/either.rs:22:1
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub enum Either<A, B> {
[INFO] [stdout]    | --------------------- this type doesn't implement the required trait
[INFO] [stdout]    |
[INFO] [stdout]   ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tonic-0.8.3/src/client/service.rs:13:1
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait GrpcService<ReqBody> {
[INFO] [stdout]    | ------------------------------ this is the found trait
[INFO] [stdout]    = help: you can use `cargo tree` to explore your dependency tree
[INFO] [stdout]    = note: required for `AuthFilter` to implement `AsyncPredicate<Request<UnsyncBoxBody<Bytes, Status>>>`
[INFO] [stdout]    = note: required for `AsyncFilter<Channel, AuthFilter>` to implement `Service<Request<UnsyncBoxBody<Bytes, Status>>>`
[INFO] [stdout]    = note: 1 redundant requirement hidden
[INFO] [stdout]    = note: required for `Either<AsyncFilter<Channel, AuthFilter>, Channel>` to implement `Service<Request<UnsyncBoxBody<Bytes, Status>>>`
[INFO] [stdout]    = note: required for `Either<AsyncFilter<Channel, AuthFilter>, Channel>` to implement `GrpcService<UnsyncBoxBody<Bytes, Status>>`
[INFO] [stdout]    = note: the full name for the type has been written to '/opt/rustwide/target/debug/deps/spanner_rs-0d8bf3678aa0f4ab.long-type-13440661145331013346.txt'
[INFO] [stdout]    = note: consider using `--verbose` to print the full type name to the console
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Channel: Service<Request<UnsyncBoxBody<Bytes, Status>>>` is not satisfied
[INFO] [stdout]    --> src/connection/grpc.rs:57:19
[INFO] [stdout]     |
[INFO] [stdout]  57 |     let spanner = SpannerClient::new(channel);
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `Service<http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>>` is not implemented for `Channel`
[INFO] [stdout]       but trait `Service<http::Request<http_body::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::Status>>>` is implemented for it
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tonic-0.8.3/src/transport/channel/mod.rs:203:1
[INFO] [stdout]     |
[INFO] [stdout] 203 | impl Service<http::Request<BoxBody>> for Channel {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = help: for that trait implementation, expected `Request<UnsyncBoxBody<Bytes, Status>>`, found `Request<UnsyncBoxBody<Bytes, Status>>`
[INFO] [stdout]     = note: required for `Either<AsyncFilter<Channel, AuthFilter>, Channel>` to implement `Service<Request<UnsyncBoxBody<Bytes, Status>>>`
[INFO] [stdout]     = note: required for `Either<AsyncFilter<Channel, AuthFilter>, Channel>` to implement `GrpcService<UnsyncBoxBody<Bytes, Status>>`
[INFO] [stdout]     = note: the full name for the type has been written to '/opt/rustwide/target/debug/deps/spanner_rs-0d8bf3678aa0f4ab.long-type-11621275377902888470.txt'
[INFO] [stdout]     = note: consider using `--verbose` to print the full type name to the console
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0271]: type mismatch resolving `<Either<..., ...> as Service<...>>::Response == Response<_>`
[INFO] [stdout]     --> src/connection/grpc.rs:57:38
[INFO] [stdout]      |
[INFO] [stdout]   57 |     let spanner = SpannerClient::new(channel);
[INFO] [stdout]      |                   ------------------ ^^^^^^^ expected `Response<_>`, found `Response<Body>`
[INFO] [stdout]      |                   |
[INFO] [stdout]      |                   required by a bound introduced by this call
[INFO] [stdout]      |
[INFO] [stdout] note: two different versions of crate `http` are being used; two types coming from two different versions of the same crate are different types even if they look the same
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/http-0.2.12/src/response.rs:179:1
[INFO] [stdout]      |
[INFO] [stdout]  179 | pub struct Response<T> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^ this is the found type `http::Response`
[INFO] [stdout]      |
[INFO] [stdout]     ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/response.rs:180:1
[INFO] [stdout]      |
[INFO] [stdout]  180 | pub struct Response<T> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^ this is the expected type `http::response::Response`
[INFO] [stdout]      |
[INFO] [stdout]     ::: src/connection/grpc.rs:9:5
[INFO] [stdout]      |
[INFO] [stdout]    9 | use google_api_proto::google::spanner::v1::{self as proto, ExecuteBatchDmlRequest};
[INFO] [stdout]      |     ---------------- one version of crate `http` used here, as a dependency of crate `http_body_util`
[INFO] [stdout]      |
[INFO] [stdout]     ::: src/auth.rs:4:5
[INFO] [stdout]      |
[INFO] [stdout]    4 | use http::HeaderValue;
[INFO] [stdout]      |     ---- one version of crate `http` used here, as a direct dependency of the current crate
[INFO] [stdout]      = help: you can use `cargo tree` to explore your dependency tree
[INFO] [stdout]      = note: required for `Either<AsyncFilter<Channel, AuthFilter>, Channel>` to implement `GrpcService<UnsyncBoxBody<Bytes, Status>>`
[INFO] [stdout] note: required by a bound in `SpannerClient::<T>::new`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/google-api-proto-1.710.0/src/google/spanner/v1/mod.rs:2601:12
[INFO] [stdout]      |
[INFO] [stdout] 2601 |         T: tonic::client::GrpcService<tonic::body::BoxBody>,
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `SpannerClient::<T>::new`
[INFO] [stdout] ...
[INFO] [stdout] 2606 |         pub fn new(inner: T) -> Self {
[INFO] [stdout]      |                --- required by a bound in this associated function
[INFO] [stdout]      = note: the full name for the type has been written to '/opt/rustwide/target/debug/deps/spanner_rs-0d8bf3678aa0f4ab.long-type-11813363971897647625.txt'
[INFO] [stdout]      = note: consider using `--verbose` to print the full type name to the console
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: the method `create_session` exists for struct `SpannerClient<Either<AsyncFilter<Channel, AuthFilter>, Channel>>`, but its trait bounds were not satisfied
[INFO] [stdout]   --> src/connection/grpc.rs:67:14
[INFO] [stdout]    |
[INFO] [stdout] 65 |           let response = self
[INFO] [stdout]    |  ________________________-
[INFO] [stdout] 66 | |             .spanner
[INFO] [stdout] 67 | |             .create_session(Request::new(CreateSessionRequest {
[INFO] [stdout]    | |             -^^^^^^^^^^^^^^ method cannot be called due to unsatisfied trait bounds
[INFO] [stdout]    | |_____________|
[INFO] [stdout]    |
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/auth.rs:35:1
[INFO] [stdout]    |
[INFO] [stdout] 35 |   pub(crate) struct AuthFilter {
[INFO] [stdout]    |   ---------------------------- doesn't satisfy `<_ as FnOnce<(Request<UnsyncBoxBody<Bytes, Status>>,)>>::Output = _`, `_: FnMut<(Request<UnsyncBoxBody<Bytes, Status>>,)>` or `_: FnOnce<(Request<UnsyncBoxBody<Bytes, Status>>,)>`
[INFO] [stdout]    |
[INFO] [stdout]   ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tower-0.4.13/src/util/either.rs:22:1
[INFO] [stdout]    |
[INFO] [stdout] 22 |   pub enum Either<A, B> {
[INFO] [stdout]    |   --------------------- doesn't satisfy `<_ as Service<Request<UnsyncBoxBody<Bytes, Status>>>>::Response = Response<_>` or `_: GrpcService<UnsyncBoxBody<Bytes, Status>>`
[INFO] [stdout]    |
[INFO] [stdout]   ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tonic-0.8.3/src/transport/channel/mod.rs:69:1
[INFO] [stdout]    |
[INFO] [stdout] 69 |   pub struct Channel {
[INFO] [stdout]    |   ------------------ doesn't satisfy `_: Service<Request<UnsyncBoxBody<Bytes, Status>>>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: the following trait bounds were not satisfied:
[INFO] [stdout]            `<Either<AsyncFilter<Channel, AuthFilter>, Channel> as tower::Service<http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>>>::Response = http::response::Response<_>`
[INFO] [stdout]            `AuthFilter: FnMut<(http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>,)>`
[INFO] [stdout]            `Channel: tower::Service<http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>>`
[INFO] [stdout]            `AuthFilter: FnOnce<(http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>,)>`
[INFO] [stdout]            which is required by `<AuthFilter as FnOnce<(http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>,)>>::Output = _`
[INFO] [stdout]            `<Either<AsyncFilter<Channel, AuthFilter>, Channel> as tower::Service<http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>>>::Response = http::response::Response<_>`
[INFO] [stdout]            which is required by `Either<AsyncFilter<Channel, AuthFilter>, Channel>: tonic::client::service::GrpcService<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>`
[INFO] [stdout] note: the traits `FnMut` and `FnOnce` must be implemented
[INFO] [stdout]   --> /rustc/c2e32f1c9652b13ed99608599c1e855462f421f3/library/core/src/ops/function.rs:163:0
[INFO] [stdout]    = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout] note: `Connection` defines an item `create_session`, perhaps you need to implement it
[INFO] [stdout]   --> src/connection.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub(crate) trait Connection
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/connection/grpc.rs:65:13
[INFO] [stdout]    |
[INFO] [stdout] 65 |         let response = self
[INFO] [stdout]    |             ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |         Ok(response.into_inner().into())
[INFO] [stdout]    |            -------- type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving `response` an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 65 |         let response: /* Type */ = self
[INFO] [stdout]    |                     ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: the method `delete_session` exists for struct `SpannerClient<Either<AsyncFilter<Channel, AuthFilter>, Channel>>`, but its trait bounds were not satisfied
[INFO] [stdout]   --> src/connection/grpc.rs:76:14
[INFO] [stdout]    |
[INFO] [stdout] 75 | /         self.spanner
[INFO] [stdout] 76 | |             .delete_session(Request::new(DeleteSessionRequest {
[INFO] [stdout]    | |             -^^^^^^^^^^^^^^ method cannot be called due to unsatisfied trait bounds
[INFO] [stdout]    | |_____________|
[INFO] [stdout]    |
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/auth.rs:35:1
[INFO] [stdout]    |
[INFO] [stdout] 35 |   pub(crate) struct AuthFilter {
[INFO] [stdout]    |   ---------------------------- doesn't satisfy `<_ as FnOnce<(Request<UnsyncBoxBody<Bytes, Status>>,)>>::Output = _`, `_: FnMut<(Request<UnsyncBoxBody<Bytes, Status>>,)>` or `_: FnOnce<(Request<UnsyncBoxBody<Bytes, Status>>,)>`
[INFO] [stdout]    |
[INFO] [stdout]   ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tower-0.4.13/src/util/either.rs:22:1
[INFO] [stdout]    |
[INFO] [stdout] 22 |   pub enum Either<A, B> {
[INFO] [stdout]    |   --------------------- doesn't satisfy `<_ as Service<Request<UnsyncBoxBody<Bytes, Status>>>>::Response = Response<_>` or `_: GrpcService<UnsyncBoxBody<Bytes, Status>>`
[INFO] [stdout]    |
[INFO] [stdout]   ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tonic-0.8.3/src/transport/channel/mod.rs:69:1
[INFO] [stdout]    |
[INFO] [stdout] 69 |   pub struct Channel {
[INFO] [stdout]    |   ------------------ doesn't satisfy `_: Service<Request<UnsyncBoxBody<Bytes, Status>>>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: the following trait bounds were not satisfied:
[INFO] [stdout]            `<Either<AsyncFilter<Channel, AuthFilter>, Channel> as tower::Service<http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>>>::Response = http::response::Response<_>`
[INFO] [stdout]            `AuthFilter: FnMut<(http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>,)>`
[INFO] [stdout]            `Channel: tower::Service<http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>>`
[INFO] [stdout]            `AuthFilter: FnOnce<(http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>,)>`
[INFO] [stdout]            which is required by `<AuthFilter as FnOnce<(http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>,)>>::Output = _`
[INFO] [stdout]            `<Either<AsyncFilter<Channel, AuthFilter>, Channel> as tower::Service<http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>>>::Response = http::response::Response<_>`
[INFO] [stdout]            which is required by `Either<AsyncFilter<Channel, AuthFilter>, Channel>: tonic::client::service::GrpcService<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>`
[INFO] [stdout] note: the traits `FnMut` and `FnOnce` must be implemented
[INFO] [stdout]   --> /rustc/c2e32f1c9652b13ed99608599c1e855462f421f3/library/core/src/ops/function.rs:163:0
[INFO] [stdout]    = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout] note: `Connection` defines an item `delete_session`, perhaps you need to implement it
[INFO] [stdout]   --> src/connection.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub(crate) trait Connection
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: the method `commit` exists for struct `SpannerClient<Either<AsyncFilter<Channel, AuthFilter>, Channel>>`, but its trait bounds were not satisfied
[INFO] [stdout]   --> src/connection/grpc.rs:85:14
[INFO] [stdout]    |
[INFO] [stdout] 84 | /         self.spanner
[INFO] [stdout] 85 | |             .commit(Request::new(CommitRequest {
[INFO] [stdout]    | |             -^^^^^^ method cannot be called due to unsatisfied trait bounds
[INFO] [stdout]    | |_____________|
[INFO] [stdout]    |
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/auth.rs:35:1
[INFO] [stdout]    |
[INFO] [stdout] 35 |   pub(crate) struct AuthFilter {
[INFO] [stdout]    |   ---------------------------- doesn't satisfy `<_ as FnOnce<(Request<UnsyncBoxBody<Bytes, Status>>,)>>::Output = _`, `_: FnMut<(Request<UnsyncBoxBody<Bytes, Status>>,)>` or `_: FnOnce<(Request<UnsyncBoxBody<Bytes, Status>>,)>`
[INFO] [stdout]    |
[INFO] [stdout]   ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tower-0.4.13/src/util/either.rs:22:1
[INFO] [stdout]    |
[INFO] [stdout] 22 |   pub enum Either<A, B> {
[INFO] [stdout]    |   --------------------- doesn't satisfy `<_ as Service<Request<UnsyncBoxBody<Bytes, Status>>>>::Response = Response<_>` or `_: GrpcService<UnsyncBoxBody<Bytes, Status>>`
[INFO] [stdout]    |
[INFO] [stdout]   ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tonic-0.8.3/src/transport/channel/mod.rs:69:1
[INFO] [stdout]    |
[INFO] [stdout] 69 |   pub struct Channel {
[INFO] [stdout]    |   ------------------ doesn't satisfy `_: Service<Request<UnsyncBoxBody<Bytes, Status>>>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: the following trait bounds were not satisfied:
[INFO] [stdout]            `<Either<AsyncFilter<Channel, AuthFilter>, Channel> as tower::Service<http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>>>::Response = http::response::Response<_>`
[INFO] [stdout]            `AuthFilter: FnMut<(http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>,)>`
[INFO] [stdout]            `Channel: tower::Service<http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>>`
[INFO] [stdout]            `AuthFilter: FnOnce<(http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>,)>`
[INFO] [stdout]            which is required by `<AuthFilter as FnOnce<(http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>,)>>::Output = _`
[INFO] [stdout]            `<Either<AsyncFilter<Channel, AuthFilter>, Channel> as tower::Service<http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>>>::Response = http::response::Response<_>`
[INFO] [stdout]            which is required by `Either<AsyncFilter<Channel, AuthFilter>, Channel>: tonic::client::service::GrpcService<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>`
[INFO] [stdout] note: the traits `FnMut` and `FnOnce` must be implemented
[INFO] [stdout]   --> /rustc/c2e32f1c9652b13ed99608599c1e855462f421f3/library/core/src/ops/function.rs:163:0
[INFO] [stdout]    = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout] note: `Connection` defines an item `commit`, perhaps you need to implement it
[INFO] [stdout]   --> src/connection.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub(crate) trait Connection
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing field `max_commit_delay` in initializer of `CommitRequest`
[INFO] [stdout]   --> src/connection/grpc.rs:85:34
[INFO] [stdout]    |
[INFO] [stdout] 85 |             .commit(Request::new(CommitRequest {
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^ missing `max_commit_delay`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: the method `rollback` exists for struct `SpannerClient<Either<AsyncFilter<Channel, AuthFilter>, Channel>>`, but its trait bounds were not satisfied
[INFO] [stdout]    --> src/connection/grpc.rs:100:14
[INFO] [stdout]     |
[INFO] [stdout]  99 | /         self.spanner
[INFO] [stdout] 100 | |             .rollback(Request::new(RollbackRequest {
[INFO] [stdout]     | |             -^^^^^^^^ method cannot be called due to unsatisfied trait bounds
[INFO] [stdout]     | |_____________|
[INFO] [stdout]     |
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/auth.rs:35:1
[INFO] [stdout]     |
[INFO] [stdout]  35 |   pub(crate) struct AuthFilter {
[INFO] [stdout]     |   ---------------------------- doesn't satisfy `<_ as FnOnce<(Request<UnsyncBoxBody<Bytes, Status>>,)>>::Output = _`, `_: FnMut<(Request<UnsyncBoxBody<Bytes, Status>>,)>` or `_: FnOnce<(Request<UnsyncBoxBody<Bytes, Status>>,)>`
[INFO] [stdout]     |
[INFO] [stdout]    ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tower-0.4.13/src/util/either.rs:22:1
[INFO] [stdout]     |
[INFO] [stdout]  22 |   pub enum Either<A, B> {
[INFO] [stdout]     |   --------------------- doesn't satisfy `<_ as Service<Request<UnsyncBoxBody<Bytes, Status>>>>::Response = Response<_>` or `_: GrpcService<UnsyncBoxBody<Bytes, Status>>`
[INFO] [stdout]     |
[INFO] [stdout]    ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tonic-0.8.3/src/transport/channel/mod.rs:69:1
[INFO] [stdout]     |
[INFO] [stdout]  69 |   pub struct Channel {
[INFO] [stdout]     |   ------------------ doesn't satisfy `_: Service<Request<UnsyncBoxBody<Bytes, Status>>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: the following trait bounds were not satisfied:
[INFO] [stdout]             `<Either<AsyncFilter<Channel, AuthFilter>, Channel> as tower::Service<http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>>>::Response = http::response::Response<_>`
[INFO] [stdout]             `AuthFilter: FnMut<(http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>,)>`
[INFO] [stdout]             `Channel: tower::Service<http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>>`
[INFO] [stdout]             `AuthFilter: FnOnce<(http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>,)>`
[INFO] [stdout]             which is required by `<AuthFilter as FnOnce<(http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>,)>>::Output = _`
[INFO] [stdout]             `<Either<AsyncFilter<Channel, AuthFilter>, Channel> as tower::Service<http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>>>::Response = http::response::Response<_>`
[INFO] [stdout]             which is required by `Either<AsyncFilter<Channel, AuthFilter>, Channel>: tonic::client::service::GrpcService<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>`
[INFO] [stdout] note: the traits `FnMut` and `FnOnce` must be implemented
[INFO] [stdout]    --> /rustc/c2e32f1c9652b13ed99608599c1e855462f421f3/library/core/src/ops/function.rs:163:0
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout] note: `Connection` defines an item `rollback`, perhaps you need to implement it
[INFO] [stdout]    --> src/connection.rs:6:1
[INFO] [stdout]     |
[INFO] [stdout]   6 | pub(crate) trait Connection
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: the method `execute_sql` exists for struct `SpannerClient<Either<AsyncFilter<Channel, AuthFilter>, Channel>>`, but its trait bounds were not satisfied
[INFO] [stdout]    --> src/connection/grpc.rs:127:14
[INFO] [stdout]     |
[INFO] [stdout] 126 | /         self.spanner
[INFO] [stdout] 127 | |             .execute_sql(Request::new(ExecuteSqlRequest {
[INFO] [stdout]     | |             -^^^^^^^^^^^ method cannot be called due to unsatisfied trait bounds
[INFO] [stdout]     | |_____________|
[INFO] [stdout]     |
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/auth.rs:35:1
[INFO] [stdout]     |
[INFO] [stdout]  35 |   pub(crate) struct AuthFilter {
[INFO] [stdout]     |   ---------------------------- doesn't satisfy `<_ as FnOnce<(Request<UnsyncBoxBody<Bytes, Status>>,)>>::Output = _`, `_: FnMut<(Request<UnsyncBoxBody<Bytes, Status>>,)>` or `_: FnOnce<(Request<UnsyncBoxBody<Bytes, Status>>,)>`
[INFO] [stdout]     |
[INFO] [stdout]    ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tower-0.4.13/src/util/either.rs:22:1
[INFO] [stdout]     |
[INFO] [stdout]  22 |   pub enum Either<A, B> {
[INFO] [stdout]     |   --------------------- doesn't satisfy `<_ as Service<Request<UnsyncBoxBody<Bytes, Status>>>>::Response = Response<_>` or `_: GrpcService<UnsyncBoxBody<Bytes, Status>>`
[INFO] [stdout]     |
[INFO] [stdout]    ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tonic-0.8.3/src/transport/channel/mod.rs:69:1
[INFO] [stdout]     |
[INFO] [stdout]  69 |   pub struct Channel {
[INFO] [stdout]     |   ------------------ doesn't satisfy `_: Service<Request<UnsyncBoxBody<Bytes, Status>>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: the following trait bounds were not satisfied:
[INFO] [stdout]             `<Either<AsyncFilter<Channel, AuthFilter>, Channel> as tower::Service<http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>>>::Response = http::response::Response<_>`
[INFO] [stdout]             `AuthFilter: FnMut<(http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>,)>`
[INFO] [stdout]             `Channel: tower::Service<http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>>`
[INFO] [stdout]             `AuthFilter: FnOnce<(http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>,)>`
[INFO] [stdout]             which is required by `<AuthFilter as FnOnce<(http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>,)>>::Output = _`
[INFO] [stdout]             `<Either<AsyncFilter<Channel, AuthFilter>, Channel> as tower::Service<http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>>>::Response = http::response::Response<_>`
[INFO] [stdout]             which is required by `Either<AsyncFilter<Channel, AuthFilter>, Channel>: tonic::client::service::GrpcService<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>`
[INFO] [stdout] note: the traits `FnMut` and `FnOnce` must be implemented
[INFO] [stdout]    --> /rustc/c2e32f1c9652b13ed99608599c1e855462f421f3/library/core/src/ops/function.rs:163:0
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout] note: `Connection` defines an item `execute_sql`, perhaps you need to implement it
[INFO] [stdout]    --> src/connection.rs:6:1
[INFO] [stdout]     |
[INFO] [stdout]   6 | pub(crate) trait Connection
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/connection/grpc.rs:131:30
[INFO] [stdout]      |
[INFO] [stdout]  131 |                 params: Some(prost_types::Struct { fields: params }),
[INFO] [stdout]      |                         ---- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `prost_types::protobuf::Struct`, found `prost_types::Struct`
[INFO] [stdout]      |                         |
[INFO] [stdout]      |                         arguments to this enum variant are incorrect
[INFO] [stdout]      |
[INFO] [stdout] note: two different versions of crate `prost_types` are being used; two types coming from two different versions of the same crate are different types even if they look the same
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/prost-types-0.11.9/src/protobuf.rs:2110:1
[INFO] [stdout]      |
[INFO] [stdout] 2110 | pub struct Struct {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^ this is the found type `prost_types::Struct`
[INFO] [stdout]      |
[INFO] [stdout]     ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/prost-types-0.13.5/src/protobuf.rs:2120:1
[INFO] [stdout]      |
[INFO] [stdout] 2120 | pub struct Struct {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^ this is the expected type `prost_types::protobuf::Struct`
[INFO] [stdout]      |
[INFO] [stdout]     ::: src/connection/grpc.rs:9:5
[INFO] [stdout]      |
[INFO] [stdout]    9 | use google_api_proto::google::spanner::v1::{self as proto, ExecuteBatchDmlRequest};
[INFO] [stdout]      |     ---------------- one version of crate `prost_types` used here, as a dependency of crate `google_api_proto`
[INFO] [stdout]      |
[INFO] [stdout]     ::: src/value.rs:9:5
[INFO] [stdout]      |
[INFO] [stdout]    9 | use prost_types::value::Kind;
[INFO] [stdout]      |     ----------- one version of crate `prost_types` used here, as a direct dependency of the current crate
[INFO] [stdout]      = help: you can use `cargo tree` to explore your dependency tree
[INFO] [stdout] help: the type constructed contains `prost_types::Struct` due to the type of the argument passed
[INFO] [stdout]     --> src/connection/grpc.rs:131:25
[INFO] [stdout]      |
[INFO] [stdout]  131 |                 params: Some(prost_types::Struct { fields: params }),
[INFO] [stdout]      |                         ^^^^^--------------------------------------^
[INFO] [stdout]      |                              |
[INFO] [stdout]      |                              this argument influences the type of `Some`
[INFO] [stdout] note: tuple variant defined here
[INFO] [stdout]     --> /rustc/c2e32f1c9652b13ed99608599c1e855462f421f3/library/core/src/option.rs:607:4
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing fields `data_boost_enabled` and `directed_read_options` in initializer of `ExecuteSqlRequest`
[INFO] [stdout]    --> src/connection/grpc.rs:127:39
[INFO] [stdout]     |
[INFO] [stdout] 127 |             .execute_sql(Request::new(ExecuteSqlRequest {
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^^^ missing `data_boost_enabled` and `directed_read_options`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/connection/grpc.rs:126:9
[INFO] [stdout]     |
[INFO] [stdout] 126 | /         self.spanner
[INFO] [stdout] 127 | |             .execute_sql(Request::new(ExecuteSqlRequest {
[INFO] [stdout] 128 | |                 session: session.name().to_string(),
[INFO] [stdout] 129 | |                 transaction: Some(selector.clone().try_into()?),
[INFO] [stdout] ...   |
[INFO] [stdout] 139 | |             }))
[INFO] [stdout] 140 | |             .await?
[INFO] [stdout]     | |___________________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: the method `execute_batch_dml` exists for struct `SpannerClient<Either<AsyncFilter<Channel, AuthFilter>, Channel>>`, but its trait bounds were not satisfied
[INFO] [stdout]    --> src/connection/grpc.rs:159:14
[INFO] [stdout]     |
[INFO] [stdout] 157 |           let response = self
[INFO] [stdout]     |  ________________________-
[INFO] [stdout] 158 | |             .spanner
[INFO] [stdout] 159 | |             .execute_batch_dml(Request::new(ExecuteBatchDmlRequest {
[INFO] [stdout]     | |             -^^^^^^^^^^^^^^^^^ method cannot be called due to unsatisfied trait bounds
[INFO] [stdout]     | |_____________|
[INFO] [stdout]     |
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/auth.rs:35:1
[INFO] [stdout]     |
[INFO] [stdout]  35 |   pub(crate) struct AuthFilter {
[INFO] [stdout]     |   ---------------------------- doesn't satisfy `<_ as FnOnce<(Request<UnsyncBoxBody<Bytes, Status>>,)>>::Output = _`, `_: FnMut<(Request<UnsyncBoxBody<Bytes, Status>>,)>` or `_: FnOnce<(Request<UnsyncBoxBody<Bytes, Status>>,)>`
[INFO] [stdout]     |
[INFO] [stdout]    ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tower-0.4.13/src/util/either.rs:22:1
[INFO] [stdout]     |
[INFO] [stdout]  22 |   pub enum Either<A, B> {
[INFO] [stdout]     |   --------------------- doesn't satisfy `<_ as Service<Request<UnsyncBoxBody<Bytes, Status>>>>::Response = Response<_>` or `_: GrpcService<UnsyncBoxBody<Bytes, Status>>`
[INFO] [stdout]     |
[INFO] [stdout]    ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tonic-0.8.3/src/transport/channel/mod.rs:69:1
[INFO] [stdout]     |
[INFO] [stdout]  69 |   pub struct Channel {
[INFO] [stdout]     |   ------------------ doesn't satisfy `_: Service<Request<UnsyncBoxBody<Bytes, Status>>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: the following trait bounds were not satisfied:
[INFO] [stdout]             `<Either<AsyncFilter<Channel, AuthFilter>, Channel> as tower::Service<http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>>>::Response = http::response::Response<_>`
[INFO] [stdout]             `AuthFilter: FnMut<(http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>,)>`
[INFO] [stdout]             `Channel: tower::Service<http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>>`
[INFO] [stdout]             `AuthFilter: FnOnce<(http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>,)>`
[INFO] [stdout]             which is required by `<AuthFilter as FnOnce<(http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>,)>>::Output = _`
[INFO] [stdout]             `<Either<AsyncFilter<Channel, AuthFilter>, Channel> as tower::Service<http::request::Request<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>>>::Response = http::response::Response<_>`
[INFO] [stdout]             which is required by `Either<AsyncFilter<Channel, AuthFilter>, Channel>: tonic::client::service::GrpcService<http_body_util::combinators::box_body::UnsyncBoxBody<prost::bytes::Bytes, tonic::status::Status>>`
[INFO] [stdout] note: the traits `FnMut` and `FnOnce` must be implemented
[INFO] [stdout]    --> /rustc/c2e32f1c9652b13ed99608599c1e855462f421f3/library/core/src/ops/function.rs:163:0
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout] note: `Connection` defines an item `execute_batch_dml`, perhaps you need to implement it
[INFO] [stdout]    --> src/connection.rs:6:1
[INFO] [stdout]     |
[INFO] [stdout]   6 | pub(crate) trait Connection
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/connection/grpc.rs:157:24
[INFO] [stdout]     |
[INFO] [stdout] 157 |           let response = self
[INFO] [stdout]     |  ________________________^
[INFO] [stdout] 158 | |             .spanner
[INFO] [stdout] 159 | |             .execute_batch_dml(Request::new(ExecuteBatchDmlRequest {
[INFO] [stdout] 160 | |                 session: session.name().to_string(),
[INFO] [stdout] ...   |
[INFO] [stdout] 165 | |             }))
[INFO] [stdout] 166 | |             .await?
[INFO] [stdout]     | |___________________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/connection/grpc.rs:183:19
[INFO] [stdout]     |
[INFO] [stdout] 183 |             .map(|rs| rs.try_into())
[INFO] [stdout]     |                   ^^  -- type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 183 |             .map(|rs: /* Type */| rs.try_into())
[INFO] [stdout]     |                     ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/result_set.rs:181:62
[INFO] [stdout]      |
[INFO] [stdout]  181 |                     .map(|(value, tpe)| Value::try_from(tpe, value.clone()))
[INFO] [stdout]      |                                         ---------------      ^^^^^^^^^^^^^ expected `prost_types::Value`, found `prost_types::protobuf::Value`
[INFO] [stdout]      |                                         |
[INFO] [stdout]      |                                         arguments to this function are incorrect
[INFO] [stdout]      |
[INFO] [stdout] note: two different versions of crate `prost_types` are being used; two types coming from two different versions of the same crate are different types even if they look the same
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/prost-types-0.11.9/src/protobuf.rs:2126:1
[INFO] [stdout]      |
[INFO] [stdout] 2126 | pub struct Value {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^ this is the expected type `prost_types::Value`
[INFO] [stdout]      |
[INFO] [stdout]     ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/prost-types-0.13.5/src/protobuf.rs:2136:1
[INFO] [stdout]      |
[INFO] [stdout] 2136 | pub struct Value {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^ this is the found type `prost_types::protobuf::Value`
[INFO] [stdout]      |
[INFO] [stdout]     ::: src/value.rs:9:5
[INFO] [stdout]      |
[INFO] [stdout]    9 | use prost_types::value::Kind;
[INFO] [stdout]      |     ----------- one version of crate `prost_types` used here, as a direct dependency of the current crate
[INFO] [stdout]      |
[INFO] [stdout]     ::: src/connection/grpc.rs:9:5
[INFO] [stdout]      |
[INFO] [stdout]    9 | use google_api_proto::google::spanner::v1::{self as proto, ExecuteBatchDmlRequest};
[INFO] [stdout]      |     ---------------- one version of crate `prost_types` used here, as a dependency of crate `google_api_proto`
[INFO] [stdout]      = help: you can use `cargo tree` to explore your dependency tree
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]     --> src/value.rs:121:19
[INFO] [stdout]      |
[INFO] [stdout]  121 |     pub(crate) fn try_from(tpe: &Type, value: SpannerValue) -> Result<Self, crate::Error> {
[INFO] [stdout]      |                   ^^^^^^^^             -------------------
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/statement.rs:28:26
[INFO] [stdout]      |
[INFO] [stdout]   28 |             params: Some(prost_types::Struct { fields: params }),
[INFO] [stdout]      |                     ---- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `prost_types::protobuf::Struct`, found `prost_types::Struct`
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     arguments to this enum variant are incorrect
[INFO] [stdout]      |
[INFO] [stdout] note: two different versions of crate `prost_types` are being used; two types coming from two different versions of the same crate are different types even if they look the same
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/prost-types-0.11.9/src/protobuf.rs:2110:1
[INFO] [stdout]      |
[INFO] [stdout] 2110 | pub struct Struct {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^ this is the found type `prost_types::Struct`
[INFO] [stdout]      |
[INFO] [stdout]     ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/prost-types-0.13.5/src/protobuf.rs:2120:1
[INFO] [stdout]      |
[INFO] [stdout] 2120 | pub struct Struct {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^ this is the expected type `prost_types::protobuf::Struct`
[INFO] [stdout]      |
[INFO] [stdout]     ::: src/connection/grpc.rs:9:5
[INFO] [stdout]      |
[INFO] [stdout]    9 | use google_api_proto::google::spanner::v1::{self as proto, ExecuteBatchDmlRequest};
[INFO] [stdout]      |     ---------------- one version of crate `prost_types` used here, as a dependency of crate `google_api_proto`
[INFO] [stdout]      |
[INFO] [stdout]     ::: src/value.rs:9:5
[INFO] [stdout]      |
[INFO] [stdout]    9 | use prost_types::value::Kind;
[INFO] [stdout]      |     ----------- one version of crate `prost_types` used here, as a direct dependency of the current crate
[INFO] [stdout]      = help: you can use `cargo tree` to explore your dependency tree
[INFO] [stdout] help: the type constructed contains `prost_types::Struct` due to the type of the argument passed
[INFO] [stdout]     --> src/statement.rs:28:21
[INFO] [stdout]      |
[INFO] [stdout]   28 |             params: Some(prost_types::Struct { fields: params }),
[INFO] [stdout]      |                     ^^^^^--------------------------------------^
[INFO] [stdout]      |                          |
[INFO] [stdout]      |                          this argument influences the type of `Some`
[INFO] [stdout] note: tuple variant defined here
[INFO] [stdout]     --> /rustc/c2e32f1c9652b13ed99608599c1e855462f421f3/library/core/src/option.rs:607:4
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing field `exclude_txn_from_change_streams` in initializer of `TransactionOptions`
[INFO] [stdout]   --> src/transaction.rs:91:21
[INFO] [stdout]    |
[INFO] [stdout] 91 |                     proto::TransactionOptions {
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^ missing `exclude_txn_from_change_streams`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing field `read_lock_mode` in initializer of `google_api_proto::google::spanner::v1::transaction_options::ReadWrite`
[INFO] [stdout]    --> src/transaction.rs:111:29
[INFO] [stdout]     |
[INFO] [stdout] 111 | ...                   proto::transaction_options::ReadWrite {},
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `read_lock_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing field `exclude_txn_from_change_streams` in initializer of `TransactionOptions`
[INFO] [stdout]    --> src/transaction.rs:109:21
[INFO] [stdout]     |
[INFO] [stdout] 109 |                     proto::TransactionOptions {
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^ missing `exclude_txn_from_change_streams`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `google_api_proto::google::spanner::v1::TypeCode::from_i32`: Use the TryFrom<i32> implementation instead
[INFO] [stdout]    --> src/types.rs:218:32
[INFO] [stdout]     |
[INFO] [stdout] 218 |         match proto::TypeCode::from_i32(value.code) {
[INFO] [stdout]     |                                ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing field `proto_type_fqn` in initializer of `google_api_proto::google::spanner::v1::Type`
[INFO] [stdout]    --> src/types.rs:277:35
[INFO] [stdout]     |
[INFO] [stdout] 277 |             Type::Array(inner) => proto::Type {
[INFO] [stdout]     |                                   ^^^^^^^^^^^ missing `proto_type_fqn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing field `proto_type_fqn` in initializer of `google_api_proto::google::spanner::v1::Type`
[INFO] [stdout]    --> src/types.rs:283:49
[INFO] [stdout]     |
[INFO] [stdout] 283 |             Type::Struct(StructType(fields)) => proto::Type {
[INFO] [stdout]     |                                                 ^^^^^^^^^^^ missing `proto_type_fqn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing field `proto_type_fqn` in initializer of `google_api_proto::google::spanner::v1::Type`
[INFO] [stdout]    --> src/types.rs:297:22
[INFO] [stdout]     |
[INFO] [stdout] 297 |             other => proto::Type {
[INFO] [stdout]     |                      ^^^^^^^^^^^ missing `proto_type_fqn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0004]: non-exhaustive patterns: `Some(TypeCode::Float32)`, `Some(TypeCode::Proto)` and `Some(TypeCode::Enum)` not covered
[INFO] [stdout]    --> src/types.rs:218:15
[INFO] [stdout]     |
[INFO] [stdout] 218 |         match proto::TypeCode::from_i32(value.code) {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ patterns `Some(TypeCode::Float32)`, `Some(TypeCode::Proto)` and `Some(TypeCode::Enum)` not covered
[INFO] [stdout]     |
[INFO] [stdout] note: `std::option::Option<TypeCode>` defined here
[INFO] [stdout]    --> /rustc/c2e32f1c9652b13ed99608599c1e855462f421f3/library/core/src/option.rs:599:0
[INFO] [stdout]    ::: /rustc/c2e32f1c9652b13ed99608599c1e855462f421f3/library/core/src/option.rs:607:4
[INFO] [stdout]     |
[INFO] [stdout]     = note: not covered
[INFO] [stdout]     = note: the matched value is of type `std::option::Option<TypeCode>`
[INFO] [stdout] help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern, a match arm with multiple or-patterns as shown, or multiple match arms
[INFO] [stdout]     |
[INFO] [stdout] 269 ~             ))),
[INFO] [stdout] 270 ~             Some(TypeCode::Float32) | Some(TypeCode::Proto) | Some(TypeCode::Enum) => todo!(),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0004, E0063, E0271, E0277, E0282, E0308, E0599.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0004`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `spanner-rs` (lib) due to 26 previous errors; 1 warning emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] running `Command { std: "docker" "inspect" "261002ff0efc2a29caad01dca9f8909a9f0f1712b177a73bded038e2801826df", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "261002ff0efc2a29caad01dca9f8909a9f0f1712b177a73bded038e2801826df", kill_on_drop: false }`
[INFO] [stdout] 261002ff0efc2a29caad01dca9f8909a9f0f1712b177a73bded038e2801826df
