4 ms·
>less expressive in some ways, but fitting Rust way better, as basically a relaxation of a former restriction, rather than a new feature They're not expressive
by logicchains 3y ago
>less expressive in some ways, but fitting Rust way better, as basically a relaxation of a former restriction, rather than a new feature
They're not expressive enough to implement a monadic async library, as far as I'm aware, so they don't fulfill the role of proper HKTs in this context.
>minus `template`’s duck-typiness so you’d have to spell out what contract the container must adhere to.
Do you think it's consistent that the T in MyContainer<T> can be "duck typed" but not the MyContainer?
- estebank 3y agoIn Rust neither is duck typed. For T you must specify the traits it must have. This makes compilation fail at definition, not at the point of incorrect usage. For an example of GATs, you can see the following: https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=0691091fe290a60f9f13066f7299c000 https://play.rust-lang.org/?version=stable&mode=debug&editio...
- zozbot234 3y ago> They're not expressive enough to implement a monadic async library, as far as I'm aware AIUI you need GC in order to do that. There's a reason why Rust's async/await support needs compiler magic. (I'd like to see standard interfaces for "pluggable" garbage-collected arenas in Rust, but this will need to wait until after Allocators/Storages get fully stabilized.)