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?
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!
I've attached a more complete example below. Is there anything I'm missing on why this happens?https://gist.github.com/wenkokke/ad8a7299c305d212473b9b5a4ad804da
It seems that the only difference between Send and Recv is S versus S::Dual in the struct definition!
Computer Fairies is a Mastodon instance that aims to be as queer, friendly and furry as possible. We welcome all kinds of computer fairies!
It seems that the only difference between Send and Recv is S versus S::Dual in the struct definition!