@@ -92,18 +92,24 @@ In Rust 2018, it's considered idiomatic to use the [`dyn`
92
92
keyword] ( ../rust-2018/trait-system/dyn-trait-for-trait-objects.html ) for
93
93
trait objects.
94
94
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:
96
109
97
110
``` console
98
111
$ cargo fix --edition-idioms
99
112
```
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
- > ` ` `
107
113
108
114
Afterwards, ` src/lib.rs ` looks like this:
109
115
@@ -115,8 +121,24 @@ trait Foo {
115
121
116
122
We're now more idiomatic, and we didn't have to fix our code manually!
117
123
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.
121
143
122
- Enjoy the new edition!
144
+ Enjoy the new edition!
0 commit comments