3 ms·
Hot take: It's nice that Box, Arc, etc. are all just types and nothing special to the user, but it's not as nice that modern async code in particular ends up wi
by fl0ki 3y ago
Hot take: It's nice that Box, Arc, etc. are all just types and nothing special to the user, but it's not as nice that modern async code in particular ends up with Arc<T>, :Send+Sync+'static, Future<Output=T>, copied absolutely everywhere and often taking up half of each function signature.
As a general rule, anything that can be orthogonal should be, but also as a general rule, more syntax should only be needed for non-default cases so the default is minimal. With modern async treating these things as effectively the default, these rules end up in constant tension. C++ has the same problem and it's getting worse and worse, and I hope Rust doesn't continue down that direction.