2 ms·
All great points. Re async not being there from day one, this is indeed a big problem. it resulted in certain painful technical compromises (eg Pin) & probably
by withoutboats3 3y ago
All great points.
Re async not being there from day one, this is indeed a big problem. it resulted in certain painful technical compromises (eg Pin) & probably at least ans importantly resulted in cultural / educational issues. The narrative around concurrency in rust initially centered how ownership & borrowing solve data races and it’s hard to see how stackless coroutines fit into that. To many users it clearly feels like an alien invasion.
- zozbot234 3y agoPin is painful but we're still quite not sure how the alternative (probably involving some ?Move trait) would have worked (or, for that matter, how it could work in some future edition). How do you create a !Move object when we don't even have construct-in-place in current Rust?
- withoutboats3 3y agoThe definition of !Move was always the (rather baroque) "cannot be moved once its address has been taken;" this allowed you to construct them, allocate them, etc until you start manipulating them. Pin just took that contract and instead expressed it by having the value that is "the address of the !Move type" encode it. The questions with adding Move were strictly around backward compatibility & useability, not with determining the semantics.