imp: use global paths in generated code by ibc-derive
#1017
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.
Suggestion cannot be applied right now. Please check back later.
Because the generated code uses paths which start with
ibc::
, theyare first resolved from the local module’s namespace. That is, if an
ibc
module is defined, the derives create code which does notcompile. This is demonstrated by the following fragment:
The compilation fails with ‘failed to resolve: could not find
core
in
ibc
’ errors.To solve this, use global paths (i.e. ones starting with
::ibc::
). Starting from 2018 Rust edition such paths resolve fromthe extern prelude and thus
::ibc
points at theibc
crate.Note however that in 2015 edition global paths are anchored at the
crate root so
::ibc
will attempt to look forcrate::ibc
module. This means that this change is breaking for code using ancient
Rust editions.
PR author checklist:
unclog
.docs/
).Reviewer checklist:
Files changed
in the GitHub PR explorer.