I spent the evening making progress with writing rust for an ESP32-C3 microcontroller.

✅ I can connect to wifi, awyiss
🚫 I am still figuring out how to get a working SPI config with esp_idf_hal so that I might draw to little SPI-driven display. I am still so very lost at this part. Different hals use different naming conventions, I'm poring through the docs to figure out how to create the thing that the embedded_graphics driver expects as an SPI interface. Ow.

I wish the various embedded rust hals used the same nomenclature for things? Like, the RPi ones are different from the Nordic ones are different from Espressif. I now understand why none of the sample code I look at appears to do this the same way; it depends on your underlying hardware vendor.

Feels like there ought to be some common API or at minimum naming conventions. And then a platform-specific namespace for each platform.

I fucking got it working
Wifi and a lil display working, now to make it refresh more efficiently

OK, my project log continues.

These sharp memory displays update on a line-by-line basis. It's not fast to update all the lines. So I want to be able to efficiently track dirty lines so I can reset them properly.

Now: figure out how to get that information and hope that it's not on me to calculate which lines got touched in a drawop.

Well display.clear() is… not behaving how I would expect. That would have been a nice shortcut if I could just ask the API to reset all pixels to black but without them turning white first, and ideally not writing to all lines either. Ok, time to figure out how writes to the buffer are stored so I can have my own clearing logic that is faster than this.
Eyyy this is better. But the internal implementation sucks; possible to make this way faster by dint of only blanking touched rows, versus updating the entire buffer to black. Fewer bytes to write!