Dry-run "cargo publish" to ensure that the workspace is publishable

To prevent a recurrence of #1054 (closed) and similar issues, it would be great to simulate publishing the whole workspace to see whether it works. We can't use cargo publish --dry-run work over the entire workspace, since a crate will not be publishable unless all its dependencies are published.

I guess that our best solution here probably involves:

  • Spinning up a local registry containing a minimal copy of the parts of crates.io that we need.
  • Simulating a publish to that registry.
  • Rolling back the registry to its original state (on success or failure) to avoid having to clone all our dependencies again.

This would be a nice-to-have for a lot of projects; I wonder if somebody has built it already.