3 ms·
The complexity of this code snippet almost seems satirical (though I do get the point you're making, and agree with you).
by wavemode 3y ago
The complexity of this code snippet almost seems satirical (though I do get the point you're making, and agree with you).
- dymk 3y agoOn one hand, I agree that on the surface, this looks complex, if you don't read it. But on the other hand, just read the code. It's not complex. You drill down into a tokio namespace. You make a builder object. You unwrap it. This is idiomatic Rust. It's verbose, but explicit is better than vague. There's no conditional logic. There's no weird type-fu. No macros. There's not even any parameters to supply, other than the Future to block on. It's trivial to write a wrapper to go from chained methods a helper call.
- lenkite 3y agoThe next time a Rust fan pokes fun about Java's verbosity, I am copy-pasting that.
- mplanchard 3y agoJust noting for other readers that, while killercup posted another option using `smol`, this seems to me to be in line with Rust's philosophy of explicitness, which is something I really appreciate about the language: - create a builder - run on the current thread only - enable all drivers - create the instance - ignore errors - then call some blocking async code Would look nicer if split out onto multiple lines I imagine: use tokio::runtime::Builder; let runtime = Builder::new_current_thread() .enable_all() .build()?; runtime.block_on(async { println!("I'm async!"); });