Generally, an RFC goes through:
Please keep in mind our design principles.
For more concrete areas of consideration:
.cargo/config.toml and Cargo.toml.cargo/config.toml is for environment or transient configuration, being dependent on what directory you are running from and settable on the command-line, independent of other flags like --manifest-path or --package.
On the other hand Cargo.toml is for static, high-level project configuration.
For example,
[cfg] table to represent rustc --cfg flags as it was a direct port of low-level rustc behavior that didn't mesh with the other high level abstractions of manifests.[lints] field configuration.Cargo.toml.Cargo.tomlWhen adding a table to a manifest,
workspace alignworkspace = true field doesn't conflict with other entriesworkspace linterWhen adding a field,
version field) should be aligned across a workspace However, frequently dependency features will vary across a workspace.workspace and a package interact?features get mergeddefault-features has been hard to get right (#12162)When working extending dependencies tables:
cargo add or cargo remove?[patches] which are just modified dependencies?