Skip to content

Add a mean to mutably access the members of a workspace #9547

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Merged
merged 2 commits into from
Jun 9, 2021

Conversation

lu-zero
Copy link
Contributor

@lu-zero lu-zero commented Jun 6, 2021

It is used by cargo-c to patch all the lib crates in a workspace.

@rust-highfive
Copy link

r? @alexcrichton

(rust-highfive has picked a reviewer for you, use r? to override)

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Jun 6, 2021
@lu-zero lu-zero mentioned this pull request Jun 7, 2021
2 tasks
@alexcrichton
Copy link
Member

Thanks! I would naively expect the non-mut versions to look basically the same, and I think that they're morally the same, right? It looks like they may predate impl Trait return values, so could this update the non-mut versions to look the same? (make it easier to maintain if they look the same because otherwise it may appears like they're different for a reason).

@lu-zero
Copy link
Contributor Author

lu-zero commented Jun 7, 2021

They are morally the same, but I cannot implement the mutable version using the same approach since get_mut() has different constraints compared to get().

The non-mutable version iterates over a Vec and do the hashmap lookup, the mutable iterates over the HashMap and does a linear search over the Vec since it does not have other way to ensure that the mutable references do not overlap.

I can remove the custom struct and return the impl Iterator to make the code a bit more compact thought. Patch coming in few hours :)

@lu-zero
Copy link
Contributor Author

lu-zero commented Jun 7, 2021

Now the code is similar enough, hopefully.

.collect();

packages.iter_mut().filter_map(move |(path, package)| {
if members.contains(path) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could this use package.get_mut like above uses packages.get?

(same for default_members_mut below)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no, the get_mut lifetime gets (rightfully) in the way.

@alexcrichton
Copy link
Member

@bors: r+

Ah yes, indeed!

@bors
Copy link
Contributor

bors commented Jun 9, 2021

📌 Commit b26ceda has been approved by alexcrichton

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jun 9, 2021
@bors
Copy link
Contributor

bors commented Jun 9, 2021

⌛ Testing commit b26ceda with merge 2b3af39...

@bors
Copy link
Contributor

bors commented Jun 9, 2021

☀️ Test successful - checks-actions
Approved by: alexcrichton
Pushing 2b3af39 to master...

@bors bors merged commit 2b3af39 into rust-lang:master Jun 9, 2021
Dylan-DPC-zz pushed a commit to Dylan-DPC-zz/rust that referenced this pull request Jun 11, 2021
Update cargo

10 commits in aa8b09297bb3156b849e73db48af4cd050492fe6..81537ee3f7bd97ff7821b6c86c148764d40d26cd
2021-06-09 00:28:53 +0000 to 2021-06-11 00:00:14 +0000
- Change how the fix_deny_warnings_but_not_others test works (rust-lang/cargo#9571)
- Add mising documentation regarding `cargo doc` (rust-lang/cargo#9565)
- Implement warning for ignored trailing arguments (rust-lang/cargo#9561)
- Make clippy happy (rust-lang/cargo#9569)
- Fix rustc/rustdoc config values to be config-relative. (rust-lang/cargo#9566)
- Update rustfix. (rust-lang/cargo#9567)
- Warn if an "all" target is specified, but we don't match anything (rust-lang/cargo#9549)
- add default_run to SerializedPackage (rust-lang/cargo#9550)
- respect user choice of lib/bin over heuristics (rust-lang/cargo#9522)
- Add a mean to mutably access the members of a workspace (rust-lang/cargo#9547)
JohnTitor added a commit to JohnTitor/rust that referenced this pull request Jun 11, 2021
Update cargo

10 commits in aa8b09297bb3156b849e73db48af4cd050492fe6..81537ee3f7bd97ff7821b6c86c148764d40d26cd
2021-06-09 00:28:53 +0000 to 2021-06-11 00:00:14 +0000
- Change how the fix_deny_warnings_but_not_others test works (rust-lang/cargo#9571)
- Add mising documentation regarding `cargo doc` (rust-lang/cargo#9565)
- Implement warning for ignored trailing arguments (rust-lang/cargo#9561)
- Make clippy happy (rust-lang/cargo#9569)
- Fix rustc/rustdoc config values to be config-relative. (rust-lang/cargo#9566)
- Update rustfix. (rust-lang/cargo#9567)
- Warn if an "all" target is specified, but we don't match anything (rust-lang/cargo#9549)
- add default_run to SerializedPackage (rust-lang/cargo#9550)
- respect user choice of lib/bin over heuristics (rust-lang/cargo#9522)
- Add a mean to mutably access the members of a workspace (rust-lang/cargo#9547)
bors added a commit to rust-lang-ci/rust that referenced this pull request Jun 12, 2021
Update cargo

11 commits in aa8b09297bb3156b849e73db48af4cd050492fe6..44456677b5d1d82fe981c955dc5c67734b31f340
2021-06-09 00:28:53 +0000 to 2021-06-12 18:00:01 +0000
- Fix package_default_run test. (rust-lang/cargo#9577)
- Change how the fix_deny_warnings_but_not_others test works (rust-lang/cargo#9571)
- Add mising documentation regarding `cargo doc` (rust-lang/cargo#9565)
- Implement warning for ignored trailing arguments (rust-lang/cargo#9561)
- Make clippy happy (rust-lang/cargo#9569)
- Fix rustc/rustdoc config values to be config-relative. (rust-lang/cargo#9566)
- Update rustfix. (rust-lang/cargo#9567)
- Warn if an "all" target is specified, but we don't match anything (rust-lang/cargo#9549)
- add default_run to SerializedPackage (rust-lang/cargo#9550)
- respect user choice of lib/bin over heuristics (rust-lang/cargo#9522)
- Add a mean to mutably access the members of a workspace (rust-lang/cargo#9547)
@ehuss ehuss added this to the 1.55.0 milestone Feb 6, 2022
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants