Fix macros std pollution in feature resolution #164
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.
Suggestion cannot be applied right now. Please check back later.
What
Exclude the stellar-contract-macros crate from the virtual workspace.
Why
When building a lib crate that has a dependency on a proc_macro crate, and where both crates depend on a common dependency with different feature sets The features required by the lib and proc_macro crates get unified when the whole workspace is built together, even with resolver = 2 set.
When building the lib crate in isolation, or excluding the proc-macro crate from the virtual workspace, the features required by the lib and proc_macro creates are decoupled and do not impact each other.
See rust-lang/cargo#10827
Known limitations
If we ever add tests directly to the
stellar-contract-macros
crate they will not execute as part of running tests for the whole workspace. This is unlikely to be a real problem since to test the macro completely the tests need to be part of thestellar-contract-sdk
, so we're unlikely to write tests in the macros crate.