This commit bumps the minimum supported rust version (MSRV) from 1.64 to
1.70. We're evaluating using new rust libraries in the Qiskit
accelerate crate that have MSRVs of 1.70 (the upstream libraries
have a higher MSRV primarily because of internal use of generic
associated types in those libraries). This commit raises the MSRV
proactively to align with the 1.0.0 release so we don't have to raise it
during a minor version release (like 1.1.0 or 1.2.0) if we chose to
start using the libraries later.
Raising the minimum Rust version lets us access workspace dependencies,
which are a convenient way of managing shared metadata between the
different crates in the project, which deduplicates a good amount of
our metadata. This also lets us share the PyO3 version and minimum
feature set between crates, reducing the number of places that need to
be updated on a Python version bump.
`Cargo.lock` is completely regenerated for this commit with the new
unification, with the minor tweak of having run
cargo update -p 'indexmap@2.0.0' --precise '1.9.3'
This is required to unify the `hashbrown` versions down to 0.12.3
between our dependencies and `pyo3`, which otherwise transitively
depends on `hashbrown ^0.14` via pulling in `indexmap 2.0`. This caused
a build failure, since the `hashbrown` types that PyO3 adds `impl`s of
its traits to are not the same types that our extension modules attempt
to use with it.
* Add `rust-toolchain.toml` for a consistent Rust development version
* Add components
* Simplify CI to not set Rust version
It will now use the rust-toolchain.toml file. This is possible because Rustup is already on the PATH, evidenced by us previously running `rustup default`
* Build Azure wheels with stable toolchain
* Use Stable for the sdist test build
---------
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>