Closed
Description
I recently worked on some changes to tonic. The changes work fine on Rust 1.52 (the version I was on when I wrote the changes) but I've since discovered that things don't compile on Rust 1.51. I see an error like this:
error[E0391]: cycle detected when computing the bounds for type parameter `T`
--> /Users/david.pedersen/dev/major/tonic/target/debug/build/tonic-reflection-8e8e4b3f5942cb14/out/grpc.reflection.v1alpha.rs:185:43
|
185 | Response = http::Response<T::ResponseBody>,
| ^^^^^^^^^^^^^^^
|
= note: ...which again requires computing the bounds for type parameter `T`, completing the cycle
note: cycle used when computing explicit predicates of `proto::server_reflection_client::<impl at /Users/david.pedersen/dev/major/tonic/target/debug/build/tonic-reflection-8e8e4b3f5942cb14/out/grpc.reflection.v1alpha.rs:166:5: 215:6>::with_interceptor`
--> /Users/david.pedersen/dev/major/tonic/target/debug/build/tonic-reflection-8e8e4b3f5942cb14/out/grpc.reflection.v1alpha.rs:185:43
|
185 | Response = http::Response<T::ResponseBody>,
I'm not knowingly doing anything that requires Rust 1.52 so find this error a bit surprising. Could it be a bug in rustc?
Reproduction:
$ git clone https://github.com/hyperium/tonic.git
$ cd tonic
$ cargo +1.51 check -p examples
I expected to see this happen: Things should build on 1.51 as well as 1.52.
Instead, this happened: Doesn't build on 1.51, does build on 1.52.