# Irenic language comparisons: Ada and Rust, AoC overall

**URL:** <https://forum.ada-lang.io/t/irenic-language-comparisons-ada-and-rust-aoc-overall/1275>\
**Category:** General\
**Created:** [October 1, 2024, 11:49am UTC](https://forum.ada-lang.io/t/irenic-language-comparisons-ada-and-rust-aoc-overall/1275 "2024-10-01T11:49:27Z")\
**Posts on this page:** 1\
**Showing post:** 62

<div class="post-metadata">

**Author:** ![cantanima](https://forum.ada-lang.io/user_avatar/forum.ada-lang.io/cantanima/32/121_2.png) [@cantanima](https://forum.ada-lang.io/u/cantanima)\
**Post date:** [October 19, 2024, 2:51am UTC](https://forum.ada-lang.io/t/irenic-language-comparisons-ada-and-rust-aoc-overall/1275/62 "2024-10-19T02:51:35Z")

</div>

I understand this video a _little_ differently. It isn’t `async` and `await` that are ~~difficult~~ painful so much as trying to use them while also using non-`async` code.

I watched the video over 3 days, but a project I work on does something like this and it doesn’t seem quite as painful as they make it out to be. IIRC (I’m on another project at the moment) the synchronous api basically wrap calls to the asynchronous api by spawning a blocking tokio thread and using `async` in there. It’s relatively easy and there’s no code duplication.

Caveats:

- We do feature-flag it, so that cargo builds separate products for synchronous and asynchronous usage.
- I’ve implemented some of the API (on both the synchronous and asynchronous ends), but I didn’t design the feature flagging. What looks relatively easy to me may have been a bear to design.
- I also don’t like how `async` taints everything it touches. [That’s one reason I asked about this in Ada a while back](https://forum.ada-lang.io/t/do-colored-subprograms-exist-in-ada/343/6).
- I think there was another caveat, but I’ve forgotten it. 😵‍💫

---

_[View the full topic](https://forum.ada-lang.io/t/irenic-language-comparisons-ada-and-rust-aoc-overall/1275)._
