Comment by vlovich123
1 day ago
I'm not sure what you're trying to say, but the compile-time safety requirement isn't given up. It would look something like:
self.buffer = io_read(self.buffer)?
This isn't much different than
io_read(&mut self.buffer)?
since rust doesn't permit simultaneous access when a mutable reference is taken.
It means you can for example no longer do things like get multiple disjoint references into the same buffer for parallel reads/writes of independent chunks.
Or well you can, using unsafe, Arc and Mutex - but at that point the safety guarantees aren’t much better than what I get in well designed C++.
Don’t get me wrong, I still much prefer Rust, but I wish async and references worked together better.
Source: I recently wrote a high-throughput RPC library in Rust (saturating > 100 Gbit NICs)