Oh, I decided to try some more things. The blocking version of read_all_registers is actually fine! It's the async one that's causing all the compile time. So it's not the fault of any of my designed generics (phew 😅). Probably Rust doesn't like it to have 1000 await points in one async function? That takes 59 secs to compile for me now. Adding one repeated register extra (so now 1100 await points or 10% more) takes ~75 seconds. So +27% in time