# Objective Relocations are a fairly common form of migration, and a tabular format can make reading an otherwise repetitive list much easier. This should be included in the migration guide template. ## Solution - Added a dot-point highlighting a tabular format for relocations, with an explanation. - Added a dot-point indicating migrations should be written WRT the currently published version of a crate. - Fixed some formatting in an adjacent dot-point. ## Testing - CI
2.1 KiB
| title | pull_requests | |||
|---|---|---|---|---|
| Feature that broke |
|
Copy the contents of this file into a new file in ./migration-guides, update the metadata, and add migration guide content here.
Goals
Aim to communicate:
- What has changed since the last release?
- Why did we make this breaking change?
- How can users migrate their existing code?
Style Guide
Keep it short and sweet:
-
What, then why, then how to migrate.
-
Some helpful standardized phrases:
OldTypeis nowNewType. Replace all references and imports.- The
Struct::method()method now requires an additionalmagnitude: f32argument. Enumhas a new variant,Enum::NewVariant, which must be handled duringmatchstatements.- The
Type::methodmethod has been removed. UseType::other_methodinstead. - The
crate::old_modulemodule is nowcrate::new_module. Update your imports. functionnow returnsOption<String>, instead ofString.
-
Make sure it's searchable by directly naming the types and methods involved.
-
Use backticks for types, methods and modules (e.g.
Vec<T>orcore::mem::swap). -
Use bullet points to explain complex changes.
-
Avoid headings. If you must, use only level-two headings.
-
Diff codeblocks can be useful for succinctly communicating changes.
fn my_system(world: &mut World) { + world.new_method(); - world.old_method(); } -
Make sure to reference the currently published version of a crate when writing a migration guide. See docs.rs for a quick reference to the existing public API.
-
When moving items to a new module or crate, consider a simple table listing the moved items and the before and after paths. For example,
Foohas been moved frombar::footobazcould be written:Relocations
Item Old Path New Path Foobar::foobaz