Version 1.37.0 (2019-08-15)
Language
#[must_use]will now warn if the type is contained in a tuple,Box, or an array and unused.- You can now use the
cfgandcfg_attrattributes on generic parameters. - You can now use enum variants through type alias. e.g. You can
write the following:
#![allow(unused)] fn main() { type MyOption = Option<u8>; 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. e.g. You can writeconst _: u32 = 5;. - You can now use
#[repr(align(X)]on enums. - The
?Kleene macro operator is now available in the 2015 edition.
Compiler
- You can now enable Profile-Guided Optimization with the
-C profile-generateand-C profile-useflags. For more information on how to use profile guided optimization, please refer to the rustc book. - The
rust-lldbwrapper script should now work again.
Libraries
Stabilized APIs
BufReader::bufferBufWriter::bufferCell::from_mutCell<[T]>::as_slice_of_cellsDoubleEndedIterator::nth_backOption::xorWrapping::reverse_bitsi128::reverse_bitsi16::reverse_bitsi32::reverse_bitsi64::reverse_bitsi8::reverse_bitsisize::reverse_bitsslice::copy_withinu128::reverse_bitsu16::reverse_bitsu32::reverse_bitsu64::reverse_bitsu8::reverse_bitsusize::reverse_bits
Cargo
Cargo.lockfiles are now included by default when publishing executable crates with executables.- You can now specify
default-run="foo"in[package]to specify the default executable to use forcargo run.
Misc
Compatibility Notes
- Using
...for inclusive range patterns will now warn by default. Please transition your code to using the..=syntax for inclusive ranges instead. - Using a trait object without the
dynwill now warn by default. Please transition your code to usedyn Traitfor trait objects instead.