Elide lifetimes in derived functions #226
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Closes #211.
The bug was caused by user structs and enums using the same lifetime (
'a
) that was used by some of the derived functions (help
,url
,code
) in their signatures. So for the following example:you would get derived code that looks like this:
Which is a compile error because 'a is defined twice. However, it seems like you can just elide the explicit lifetime in the generated functions, which gives you code that looks like:
So all appears to be well. I changed most of the derived tests to use a
'a
lifetime while trying to work out where it was breaking. It seems like this is a case that should be covered but maybe in its own specialised unit test rather than scattered through the others?