Rust 1.31.0
Released on December 6, 2018
What's Changed
- 🎉 [This version marks the release of the 2018 edition of Rust.][54057] 🎉
- [New lifetime elision rules now allow for eliding lifetimes in functions and
- [You can now define and use
constfunctions.][54835] These are currently - [You can now use tool lints, which allow you to scope lints from external
- [
#[no_mangle]and#[export_name]attributes can now be located anywhere in - [You can now use parentheses in pattern matches.][54497]
- [Updated musl to 1.1.20][54430]
- [You can now convert
num::NonZero*types to their raw equivalents using the - [You can now convert a
&OptionintoOption<&T>and&mut Option - [You can now multiply (
*) atime::Durationby au32.][52813] - [
slice::align_to] - [
slice::align_to_mut] - [
slice::chunks_exact] - [
slice::chunks_exact_mut] - [
slice::rchunks] - [
slice::rchunks_mut] - [
slice::rchunks_exact] - [
slice::rchunks_exact_mut] - [
Option::replace]
- [Cargo will now download crates in parallel using HTTP/2.][cargo/6005]
- [You can now rename packages in your Cargo.toml][cargo/6319] We have a guide
Full Changelog
Language
--------
- 🎉 [This version marks the release of the 2018 edition of Rust.][54057] 🎉
- [New lifetime elision rules now allow for eliding lifetimes in functions and
impl headers.][54778] E.g. impl<'a> Reader for BufReader<'a> {} can now be
impl Reader for BufReader<'_> {}. Lifetimes are still required to be defined
in structs.
- [You can now define and use const functions.][54835] These are currently
a strict minimal subset of the [const fn RFC][RFC-911]. Refer to the
[language reference][const-reference] for what exactly is available.
- [You can now use tool lints, which allow you to scope lints from external
tools using attributes.][54870] E.g. #[allow(clippy::filter_map)].
- [#[no_mangle] and #[export_name] attributes can now be located anywhere in
a crate, not just in exported functions.][54451]
- [You can now use parentheses in pattern matches.][54497]
Compiler
--------
- [Updated musl to 1.1.20][54430]
Libraries
---------
- [You can now convert num::NonZero* types to their raw equivalents using the
From trait.][54240] E.g. u8 now implements From.
- [You can now convert a &Option into Option<&T> and &mut Option
into Option<&mut T> using the From trait.][53218]
- [You can now multiply (*) a time::Duration by a u32.][52813]
Stabilized APIs
---------------
- [slice::align_to]
- [slice::align_to_mut]
- [slice::chunks_exact]
- [slice::chunks_exact_mut]
- [slice::rchunks]
- [slice::rchunks_mut]
- [slice::rchunks_exact]
- [slice::rchunks_exact_mut]
- [Option::replace]
Cargo
-----
- [Cargo will now download crates in parallel using HTTP/2.][cargo/6005]
- [You can now rename packages in your Cargo.toml][cargo/6319] We have a guide
on [how to use the package key in your dependencies.][cargo-rename-reference]
[52813]: https://github.com/rust-lang/rust/pull/52813/
[53218]: https://github.com/rust-lang/rust/pull/53218/
[54057]: https://github.com/rust-lang/rust/pull/54057/
[54240]: https://github.com/rust-lang/rust/pull/54240/
[54430]: https://github.com/rust-lang/rust/pull/54430/
[54451]: https://github.com/rust-lang/rust/pull/54451/
[54497]: https://github.com/rust-lang/rust/pull/54497/
[54778]: https://github.com/rust-lang/rust/pull/54778/
[54835]: https://github.com/rust-lang/rust/pull/54835/
[54870]: https://github.com/rust-lang/rust/pull/54870/
[RFC-911]: https://github.com/rust-lang/rfcs/pull/911
[Option::replace]: https://doc.rust-lang.org/std/option/enum.Option.html#method.replace
[slice::align_to_mut]: https://doc.rust-lang.org/std/primitive.slice.html#method.align_to_mut
[slice::align_to]: https://doc.rust-lang.org/std/primitive.slice.html#method.align_to
[slice::chunks_exact_mut]: https://doc.rust-lang.org/std/primitive.slice.html#method.chunks_exact_mut
[slice::chunks_exact]: https://doc.rust-lang.org/std/primitive.slice.html#method.chunks_exact
[slice::rchunks_exact_mut]: https://doc.rust-lang.org/std/primitive.slice.html#method.rchunks_mut
[slice::rchunks_exact]: https://doc.rust-lang.org/std/primitive.slice.html#method.rchunks_exact
[slice::rchunks_mut]: https://doc.rust-lang.org/std/primitive.slice.html#method.rchunks_mut
[slice::rchunks]: https://doc.rust-lang.org/std/primitive.slice.html#method.rchunks
[cargo/6005]: https://github.com/rust-lang/cargo/pull/6005/
[cargo/6319]: https://github.com/rust-lang/cargo/pull/6319/
[cargo-rename-reference]: https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#renaming-dependencies-in-cargotoml
[const-reference]: https://doc.rust-lang.org/reference/items/functions.html#const-functions