In Rust, if we autogenerate our candid bindings using the officially provided macros, in cases where there’s a new API added that returns a Result type, all the previous result types are regenerated with new names that breaks compatibility with existing deployed clients.
Here’s an example from our current application:
The above is generated for return types of Result when a new API is added to the services list for our app as shown below:
Ideally, the generator should not be generating the candid bindings from scratch but checking the earlier
*.old.did that is already available and comparing to not change existing types, but add to the existing list.