Chapter 5. Changes in Rust Toolset in Red Hat Developer Tools 2019.3
This chapter lists some notable changes in Rust Toolset since its previous release.
5.1. Rust
Rust has been updated from version 1.31.1 to 1.35.0. Notable changes include:
Changes for Rust 1.32:
-
The
dbg!
macro: Enable easier print-debugging, with file, line, and an expression value. -
Final module improvements: "use" statements are more uniform. For example: allowing direct imports of
enum
variants. - Macro improvements: Macros can now match on literal tokens, and the "?" operator matches exactly 0 or 1 repetitions.
- Library stabilizations: Integers support conversions to and from byte arrays.
-
The
Changes for Rust 1.33:
-
const fn
improvements: Implementing constant functions now supports destructuring patterns,let
bindings, assignments, and more. - Pinning: Provides type-level guarantees that an object in memory will not move.
-
Import as
_
: Anonymous imports to bring trait methods in scope without the trait name, avoiding possible conflicts. -
Library stabilizations: Many more
const
methods for integers.
-
Changes for Rust 1.34:
-
Alternative
cargo
registries: Allows using registries other than the public crates.io, possibly mixed together. -
?
in documentation tests: TheTry
operator can now be used in doc tests that specify their "return" type. -
TryFrom
andTryInto
: Provide fallible conversion methods. -
fn before_exec
is deprecated in favor ofunsafe fn pre_exec
: Forked pre-exec environments have additional safety constraints, which is now indicated by being an unsafe call. -
Library stabilizations: Non-zero signed integer types,
from_fn
andsuccessors
iterator constructors.
-
Alternative
Changes for Rust 1.35:
-
Fn*
closure traits implemented forBox<dyn Fn*>
: Especially notable forBox<dyn FnOnce>
, which wasn’t possible to call abstractly before. -
Calling
dbg!()
with no argument: Updated from 1.32, it can now print just the file:line if there’s no argument. - Library stabilizations: float copysign, Range contains, RefCell map_split.
-
5.2. cargo
The cargo
tool has been updated from version 1.31.0 to 1.35.0.
5.3. cargo-vendor
The cargo-vendor
tool has been updated from version 0.1.22 to 0.1.23.