Tbh the borrow checker isn't a problem for 75% of cases. If you actually need the performance/memory optimization then yes you will have to deal with it... Otherwise just .clone()
And if you find the borrow checker annoying in async rust, that's mostly a tokio issue. Look into smol-rs as it offers alternatives
If you want real cons...
- Compile times
- easy build time arbitrary code execution
- trait bounds spaghetti