Consider making capacity async
The function capacity on the async ReadNotFlash trait is not async: https://github.com/rust-embedded-community/embedded-storage/blob/master/embedded-storage-async/src/nor_flash.rs#L18
I'm trying to make a shared flash based on these traits and to do that I have an async mutex that needs to be locked. But I can't do that in a sync function.
It would also be solved by having the capacity be a constant. But there may be a good reason why it's not a constant already
I'm implementing ReadNorFlash for an SD card driver (I know it's weird) and I'm running into the same issue. Getting the SD card size is an async operation but I cannot await the future because capacity is not async.
I would be fine with making capacity async for situations like this, and also JEDEC like NorFlash implementations.
I do however think that if we make it async, it should also be fallible, as that would usually incur some kind of IO operations?
Another way of solving this would be to probe for the capacity at initialization of the module (Flash or SD card), and store the size as part of the driver struct in a simple usize.