Rust 1.36.0
Language
- Non-Lexical Lifetimes are now enabled on the 2015 edition.
- The order of traits in trait objects no longer affects the semantics of that object. e.g.
dyn Send + fmt::Debug
is now equivalent todyn fmt::Debug + Send
, where this was previously not the case.
Libraries
HashMap
's implementation has been replaced withhashbrown::HashMap
implementation.TryFromSliceError
now implementsFrom<Infallible>
.mem::needs_drop
is now available as a const fn.alloc::Layout::from_size_align_unchecked
is now available as a const fn.String
now implementsBorrowMut<str>
.io::Cursor
now implementsDefault
.- Both
NonNull::{dangling, cast}
are now const fns. - The
alloc
crate is now stable.alloc
allows you to use a subset ofstd
(e.g.Vec
,Box
,Arc
) in#![no_std]
environments if the environment has access to heap memory allocation. String
now implementsFrom<&String>
.- You can now pass multiple arguments to the
dbg!
macro.dbg!
will return a tuple of each argument when there is multiple arguments. Result::{is_err, is_ok}
are now#[must_use]
and will produce a warning if not used.
Stabilized APIs
VecDeque::rotate_left
VecDeque::rotate_right
Iterator::copied
io::IoSlice
io::IoSliceMut
Read::read_vectored
Write::write_vectored
str::as_mut_ptr
mem::MaybeUninit
pointer::align_offset
future::Future
task::Context
task::RawWaker
task::RawWakerVTable
task::Waker
task::Poll
Cargo
- Cargo will now produce an error if you attempt to use the name of a required dependency as a feature.
- You can now pass the
--offline
flag to run cargo without accessing the network.
You can find further change's in Cargo's 1.36.0 release notes.
Clippy
There have been numerous additions and fixes to clippy, see Clippy's 1.36.0 release notes for more details.
Misc
Compatibility Notes
- With the stabilisation of
mem::MaybeUninit
,mem::uninitialized
use is no longer recommended, and will be deprecated in 1.39.0.