
# 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:
OldType
is nowNewType
. Replace all references and imports.- The
Struct::method()
method now requires an additionalmagnitude: f32
argument. Enum
has a new variant,Enum::NewVariant
, which must be handled duringmatch
statements.- The
Type::method
method has been removed. UseType::other_method
instead. - The
crate::old_module
module is nowcrate::new_module
. Update your imports. function
now 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,
Foo
has been moved frombar::foo
tobaz
could be written:Relocations
Item Old Path New Path Foo
bar::foo
baz