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.
  • 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: The Try operator can now be used in doc tests that specify their "return" type.
    • TryFrom and TryInto: Provide fallible conversion methods.
    • fn before_exec is deprecated in favor of unsafe 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 and successors iterator constructors.
  • Changes for Rust 1.35:

    • Fn* closure traits implemented for Box<dyn Fn*>: Especially notable for Box<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.