I have a small Rust library for session-typed channels, called sesh, and while using it, I noticed something really weird. Maybe you can help me figure out what's going on?
I've attached a more complete example below. Is there anything I'm missing on why this happens?
https://gist.github.com/wenkokke/ad8a7299c305d212473b9b5a4ad804da
This works just fine...
type Foo = Recv<Bar, End>;
enum Bar {Baz(Recv<i64, Send<i64, Foo>>)}
This fails with "overflow evaluating the requirement"!
type Foo = Recv<Bar, End>;
enum Bar {Baz(Send<i64, Recv<i64, Foo>>)}
But the requirements on Send and Recv are identical!