Time for a big ol' respond to all message here: Nim has [multiple dispatch](https://nim-lang.org/docs/manual.html#methods-multiminusmethods). It also is capable on embedded with the stdlib through the use of `--gc:arc`. There is a REPL named `inim` on nimble.
My view is mostly if you like embracing magic, and do not hate yourself, learn Nim. It allows you to get very performant code in a very readable syntax, you can easily interface with the backends which means you can use it anywhere, be it web, native, or embedded. It's a very flexible language which allows you to use it in the way you prefer, from case-insensitvity to the [Method Call Syntax](https://nim-lang.org/docs/manual.html#procedures-method-call-syntax). You get benefits the benefits of C/C++(portabillity, and the speed), without the crust of those languages (pointer usage, preprocessor macros, and the unreadable templates). Versus Rust, you get to dodge the borrow checking, which can be tedious as all hell, you also can go to any platform with a C compiler not being limited by llvm's platforms. Feel like I need to mention this possible here aswell: var indexedOne: array[1..300, bool] assert 0 notin indexedOne.low..indexedOne.high type YourEnum = enum red, green, blue var enumIndexed: array[YourEnum, bool] assert enumIndexed[red] == false Run