When I was exploring the codes generated by the ethers-rs and trying to interact with the contract. I found it extremely difficult to get the revert data by ethers-rs. This is because the middle ware design is so bad that every result instance must inherit(yes. It is more like oop solution) a lot of methods. So the response object is different if you use different middle ware. It is highly not programable.
I review the codes in ethers-rs and contact with the team but sadly they admited the incovinience and would fix it in verion 2. So I need to parse some non-standard string to error type and continue. I hope version could come soon.
Besides, the problem I met with ethers-rs. I spent most of my time creating integration test function. I successfully create function to compile the abstract account solidity codes and deploy the codes into a test node.