Skip to content

Commit d5f43bf

Browse files
authored
Merge pull request #120 from alexcrichton/update
Update documentation for `cargo fix --broken-code`
2 parents afef680 + 157e51a commit d5f43bf

File tree

1 file changed

+34
-12
lines changed

1 file changed

+34
-12
lines changed

src/editions/transitioning-an-existing-project-to-a-new-edition.md

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -92,18 +92,24 @@ In Rust 2018, it's considered idiomatic to use the [`dyn`
9292
keyword](../rust-2018/trait-system/dyn-trait-for-trait-objects.html) for
9393
trait objects.
9494

95-
We can ask `cargo fix` to fix it:
95+
Eventually, we want `cargo fix` to fix all these idioms automatically in the same
96+
manner we did for upgrading to the 2018 edition. **Currently,
97+
though, the *"idiom lints"* are not ready for widespread automatic fixing.** The
98+
compiler isn't making `cargo fix`-compatible suggestions in many cases right
99+
now, and it is making incorrect suggestions in others. Enabling the idiom lints,
100+
even with `cargo fix`, is likely to leave your crate either broken or with many
101+
warnings still remaining.
102+
103+
We have plans to make these idiom migrations a seamless part of the Rust 2018
104+
experience, but we're not there yet. As a result the following instructions are
105+
recommended only for the intrepid who are willing to work through a few
106+
compiler/Cargo bugs!
107+
108+
With that out of the way, we can instruct Cargo to fix our code snippet with:
96109

97110
```console
98111
$ cargo fix --edition-idioms
99112
```
100-
> The `--edition-idioms` flag applies only to the "current crate" if you want
101-
> to run it against a workspace is necessary to use a workaround with
102-
> `RUSTFLAGS` in order to execute it in all the workspace members.
103-
>
104-
> ```shell
105-
> $ RUSTFLAGS='-Wrust_2018_idioms' cargo fix --all
106-
> ```
107113

108114
Afterwards, `src/lib.rs` looks like this:
109115

@@ -115,8 +121,24 @@ trait Foo {
115121

116122
We're now more idiomatic, and we didn't have to fix our code manually!
117123

118-
As before, `cargo fix` may not be able to automatically update our code.
119-
If `cargo fix` can't fix something, it will print a warning to the console,
120-
and you'll have to fix it manually.
124+
Note that `cargo fix` may still not be able to automatically update our code.
125+
If `cargo fix` can't fix something, it will print a warning to the console, and
126+
you'll have to fix it manually.
127+
128+
As mentioned before, there are known bugs around the idiom lints which
129+
means they're not all ready for prime time yet. You may get a scary-looking
130+
warning to report a bug to Cargo, which happens whenever a fix proposed by
131+
`rustc` actually caused code to stop compiling by accident. If you'd like `cargo
132+
fix` to make as much progress as possible, even if it causes code to stop
133+
compiling, you can execute:
134+
135+
```console
136+
$ cargo fix --edition-idioms --broken-code
137+
```
138+
139+
This will instruct `cargo fix` to apply automatic suggestions regardless of
140+
whether they work or not. Like usual, you'll see the compilation result after
141+
all fixes are applied. If you notice anything wrong or unusual, please feel free
142+
to report an issue to Cargo and we'll help prioritize and fix it.
121143

122-
Enjoy the new edition!
144+
Enjoy the new edition!

0 commit comments

Comments
 (0)