Rust 1.37.0
Released on August 15, 2019
What's Changed
#[must_use]will now warn if the type is contained in a [tuple][61100],- [You can now use the
cfgandcfg_attrattributes on - [You can now use enum variants through type alias.][61682] e.g. You can
- [You can now use
_as an identifier for consts.][61347] e.g. You can write - [You can now use
#[repr(align(X)]on enums.][61229] - [The
?Kleene macro operator is now available in the
- [You can now enable Profile-Guided Optimization with the
-C profile-generate - [The
rust-lldbwrapper script should now work again.][61827]
- [
mem::MaybeUninitis now ABI-compatible withT.][61802] - [
BufReader::buffer] - [
BufWriter::buffer] - [
Cell::from_mut] - [
Cell<[T]>::as_slice_of_cells][Cell]::as_slice_of_cells - [
DoubleEndedIterator::nth_back] - [
Option::xor] - [
Wrapping::reverse_bits] - [
i128::reverse_bits] - [
i16::reverse_bits] - [
i32::reverse_bits] - [
i64::reverse_bits] - [
i8::reverse_bits] - [
isize::reverse_bits] - [
slice::copy_within] - [
u128::reverse_bits] - [
u16::reverse_bits] - [
u32::reverse_bits] - [
u64::reverse_bits] - [
u8::reverse_bits] - [
usize::reverse_bits]
- [
Cargo.lockfiles are now included by default when publishing executable crates - [You can now specify
default-run="foo"in[package]to specify the
- [Using
...for inclusive range patterns will now warn by default.][61342] - [Using a trait object without the
dynwill now warn by default.][61203]
Full Changelog
Language
--------
- #[must_use] will now warn if the type is contained in a [tuple][61100],
[Box][62228], or an [array][62235] and unused.
- [You can now use the cfg and cfg_attr attributes on
generic parameters.][61547]
- [You can now use enum variants through type alias.][61682] e.g. You can
write the following:
type MyOption = Option;
fn increment_or_zero(x: MyOption) -> u8 {
match x {
MyOption::Some(y) => y + 1,
MyOption::None => 0,
}
}
- [You can now use _ as an identifier for consts.][61347] e.g. You can write
const _: u32 = 5;.
- [You can now use #[repr(align(X)] on enums.][61229]
- [The ? Kleene macro operator is now available in the
2015 edition.][60932]
Compiler
--------
- [You can now enable Profile-Guided Optimization with the -C profile-generate
and -C profile-use flags.][61268] For more information on how to use profile
guided optimization, please refer to the [rustc book][rustc-book-pgo].
- [The rust-lldb wrapper script should now work again.][61827]
Libraries
---------
- [mem::MaybeUninit is now ABI-compatible with T.][61802]
Stabilized APIs
---------------
- [BufReader::buffer]
- [BufWriter::buffer]
- [Cell::from_mut]
- [Cell<[T]>::as_slice_of_cells][Cell]
- [DoubleEndedIterator::nth_back]
- [Option::xor]
- [Wrapping::reverse_bits]
- [i128::reverse_bits]
- [i16::reverse_bits]
- [i32::reverse_bits]
- [i64::reverse_bits]
- [i8::reverse_bits]
- [isize::reverse_bits]
- [slice::copy_within]
- [u128::reverse_bits]
- [u16::reverse_bits]
- [u32::reverse_bits]
- [u64::reverse_bits]
- [u8::reverse_bits]
- [usize::reverse_bits]
Cargo
-----
- [Cargo.lock files are now included by default when publishing executable crates
with executables.][cargo/7026]
- [You can now specify default-run="foo" in [package] to specify the
default executable to use for cargo run.][cargo/7056]
Misc
----
Compatibility Notes
-------------------
- [Using ... for inclusive range patterns will now warn by default.][61342]
Please transition your code to using the ..= syntax for inclusive
ranges instead.
- [Using a trait object without the dyn will now warn by default.][61203]
Please transition your code to use dyn Trait for trait objects instead.
[62228]: https://github.com/rust-lang/rust/pull/62228/
[62235]: https://github.com/rust-lang/rust/pull/62235/
[61802]: https://github.com/rust-lang/rust/pull/61802/
[61827]: https://github.com/rust-lang/rust/pull/61827/
[61547]: https://github.com/rust-lang/rust/pull/61547/
[61682]: https://github.com/rust-lang/rust/pull/61682/
[61268]: https://github.com/rust-lang/rust/pull/61268/
[61342]: https://github.com/rust-lang/rust/pull/61342/
[61347]: https://github.com/rust-lang/rust/pull/61347/
[61100]: https://github.com/rust-lang/rust/pull/61100/
[61203]: https://github.com/rust-lang/rust/pull/61203/
[61229]: https://github.com/rust-lang/rust/pull/61229/
[60932]: https://github.com/rust-lang/rust/pull/60932/
[cargo/7026]: https://github.com/rust-lang/cargo/pull/7026/
[cargo/7056]: https://github.com/rust-lang/cargo/pull/7056/
[BufReader::buffer]: https://doc.rust-lang.org/std/io/struct.BufReader.html#method.buffer
[BufWriter::buffer]: https://doc.rust-lang.org/std/io/struct.BufWriter.html#method.buffer
[Cell::from_mut]: https://doc.rust-lang.org/std/cell/struct.Cell.html#method.from_mut
[Cell]: https://doc.rust-lang.org/std/cell/struct.Cell.html#method.as_slice_of_cells
[DoubleEndedIterator::nth_back]: https://doc.rust-lang.org/std/iter/trait.DoubleEndedIterator.html#method.nth_back
[Option::xor]: https://doc.rust-lang.org/std/option/enum.Option.html#method.xor
[Wrapping::reverse_bits]: https://doc.rust-lang.org/std/num/struct.Wrapping.html#method.reverse_bits
[i128::reverse_bits]: https://doc.rust-lang.org/std/primitive.i128.html#method.reverse_bits
[i16::reverse_bits]: https://doc.rust-lang.org/std/primitive.i16.html#method.reverse_bits
[i32::reverse_bits]: https://doc.rust-lang.org/std/primitive.i32.html#method.reverse_bits
[i64::reverse_bits]: https://doc.rust-lang.org/std/primitive.i64.html#method.reverse_bits
[i8::reverse_bits]: https://doc.rust-lang.org/std/primitive.i8.html#method.reverse_bits
[isize::reverse_bits]: https://doc.rust-lang.org/std/primitive.isize.html#method.reverse_bits
[slice::copy_within]: https://doc.rust-lang.org/std/primitive.slice.html#method.copy_within
[u128::reverse_bits]: https://doc.rust-lang.org/std/primitive.u128.html#method.reverse_bits
[u16::reverse_bits]: https://doc.rust-lang.org/std/primitive.u16.html#method.reverse_bits
[u32::reverse_bits]: https://doc.rust-lang.org/std/primitive.u32.html#method.reverse_bits
[u64::reverse_bits]: https://doc.rust-lang.org/std/primitive.u64.html#method.reverse_bits
[u8::reverse_bits]: https://doc.rust-lang.org/std/primitive.u8.html#method.reverse_bits
[usize::reverse_bits]: https://doc.rust-lang.org/std/primitive.usize.html#method.reverse_bits
[rustc-book-pgo]: https://doc.rust-lang.org/rustc/profile-guided-optimization.html