2018-Specific Changes
The following is a summary of changes that only apply to code compiled with the 2018 edition compared to the 2015 edition.
- At most once
?macro repetition operator. - Path changes:
- Paths in
usedeclarations work the same as other paths. - Paths starting with
::must be followed with an external crate. - Paths in
pub(in path)visibility modifiers must start withcrate,self, orsuper.
- Paths in
- Anonymous trait function parameters are not allowed.
- Trait function parameters may use any irrefutable pattern when the function has a body.
dynis a strict keyword, in 2015 it is a weak keyword.async,await, andtryare reserved keywords.- The following lints are now deny by default:
Cargo
- If there is a target definition in a
Cargo.tomlmanifest, it no longer automatically disables automatic discovery of other targets. - Target paths of the form
src/{target_name}.rsare no longer inferred for targets where thepathfield is not set. cargo installfor the current directory is no longer allowed, you must specifycargo install --path .to install the current package.