Introduction
1.
What are editions?
1.1.
Creating a new project
1.2.
Transitioning an existing project to a new edition
2.
Rust 2015
3.
Rust 2018
3.1.
2018-Specific Changes
3.2.
Module system
3.2.1.
Raw identifiers
3.2.2.
Path clarity
3.2.3.
More visibility modifiers
3.2.4.
Nested imports with use
3.3.
Error handling and panics
3.3.1.
The ? operator for easier error handling
3.3.2.
? in main and tests
3.3.3.
Controlling panics with std::panic
3.3.4.
Aborting on panic
3.4.
Control flow
3.4.1.
Loops can break with a value
3.4.2.
async/await for easier concurrency
3.5.
Trait system
3.5.1.
impl Trait for returning complex types with ease
3.5.2.
dyn Trait for trait objects
3.5.3.
More container types support trait objects
3.5.4.
Associated constants
3.5.5.
No more anonymous parameters
3.6.
Slice patterns
3.7.
Ownership and lifetimes
3.7.1.
Non-lexical lifetimes
3.7.2.
Default match bindings
3.7.3.
'_, the anonymous lifetime
3.7.4.
Lifetime elision in impl
3.7.5.
T: 'a inference in structs
3.7.6.
Simpler lifetimes in static and const
3.8.
Data types
3.8.1.
Field init shorthand
3.8.2.
..= for inclusive ranges
3.8.3.
128 bit integers
3.8.4.
"Operator-equals" are now implementable
3.8.5.
union for an unsafe form of enum
3.8.6.
Choosing alignment with the repr attribute
3.9.
SIMD for faster computing
3.10.
Macros
3.10.1.
Custom Derive
3.10.2.
Macro changes
3.10.3.
At most one repetition
3.11.
The compiler
3.11.1.
Improved error messages
3.11.2.
Incremental Compilation for faster compiles
3.11.3.
An attribute for deprecation
3.12.
Rustup for managing Rust versions
3.13.
Cargo and crates.io
3.13.1.
cargo check for faster checking
3.13.2.
cargo install for easy installation of tools
3.13.3.
cargo new defaults to a binary project
3.13.4.
cargo rustc for passing arbitrary flags to rustc
3.13.5.
Cargo workspaces for multi-package projects
3.13.6.
Multi-file examples
3.13.7.
Replacing dependencies with patch
3.13.8.
Cargo can use a local registry replacement
3.13.9.
Crates.io disallows wildcard dependencies
3.14.
Documentation
3.14.1.
New editions of the "the book"
3.14.2.
The Rust Bookshelf
3.14.3.
The Rustonomicon
3.14.4.
Full documentation for std::os
3.15.
rustdoc
3.15.1.
Documentation tests can now compile-fail
3.15.2.
Rustdoc uses CommonMark
3.16.
Platform and target support
3.16.1.
libcore for low-level Rust
3.16.2.
WebAssembly support
3.16.3.
Global allocators
3.16.4.
MSVC toolchain support
3.16.5.
MUSL support for fully static binaries
3.16.6.
cdylib crates for C interoperability
4.
The Next Edition
4.1.
Next-Specific Changes
4.2.
The dbg! macro
4.3.
No jemalloc by default
4.4.
Uniform Paths
4.5.
literal macro matcher
4.6.
? operator in macros
4.7.
const fn
4.8.
Pinning
4.9.
No more FnBox
4.10.
Alternative Cargo Registries
4.11.
TryFrom and TryInto
4.12.
The Future trait
4.13.
The alloc crate
4.14.
MaybeUninit
4.15.
cargo vendor
Light (default)
Rust
Coal
Navy
Ayu
The Edition Guide
Next-Specific Changes
There have been no specific changes accepted for the next edition yet.