It also says that it is not automatically enabled for workspaces. This leads me to wonder whether we should in general always enable the new resolver in workspaces. Is there any reason to not do this? Is it good practice to do this?
The reason this isn't done by default is because it would be a breaking change. The new resolver behaves different from the old resolver. Of it didn't, we wouldn't have exposed a way to switch between the two in the first place.
I figured this was the reason for not changing the default. My question is whether I in my crates should change the resolver in the same sense that I have interest in setting the edition to 2021 because in general things get better with newer versions, not whether Rust/Cargo should change the default.
I found that edition guide blurb rather confusing.
Anyway, I think the only reason you have to opt-in with
resolver = "2" in a virtual workspace is that you can't set
[workspace] (and a virtual workspace has no
[package] under which to do so either). See the bottom of that issue for some closed-as-dupe issues about this topic.
(I say "only reason" but basically the clash is that
edition is (currently) per-crate, and
resolver is per-workspace, but the former is being used to determine the default of the latter in the root package of a workspace. No root package, no way to override the default.)
TL;DR: if you would have used
edition = "2021" in a non-virtual-workspace crate, set
resolver = "2" in your virtual workspace crate.