News for hackers. Stuff that matters.
Re:The Rust I wanted had no future by chrismorgan on Monday June 05, 2023 @08:37AM (#36195363)
Are you aware of generic associated types, which landed in 1.65 (late last year)? To a considerable extent, they’re Rust’s answer to higher-kinded types. Less expressive in some ways, but fitting Rust way better, as basically a relaxation of a former restriction, rather than a new feature. If I’m reading your snippet right, GATs let you express exactly that, though minus `template`’s duck-typiness so you’d have to spell out what contract the container must adhere to.
Re:The Rust I wanted had no future by logicchains on Monday June 05, 2023 @11:28AM (#36197657)
>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?

Re:The Rust I wanted had no future by estebank on Monday June 05, 2023 @11:36AM (#36197825)
In 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.
Re:The Rust I wanted had no future by zozbot234 on Monday June 05, 2023 @12:16PM (#36198516)
> 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.)