-
Notifications
You must be signed in to change notification settings - Fork 2.4k
/
Copy pathCargo.toml
60 lines (53 loc) · 2.23 KB
/
Cargo.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
[workspace]
members = ["crates/*"]
resolver = "2"
[workspace.package]
version = "2.0.0"
edition = "2021"
rust-version = "1.79" # Keep in sync with README.md and rust-toolchain.toml.
license = "Apache-2.0"
# Shared dependencies that can be inherited. This just helps a little with
# making sure our crates don't directly depend on different versions of things,
# although we can't help it if our transitive dependencies pull in more.
#
# Each crate can add on specific features freely as it inherits.
[workspace.dependencies]
bytemuck = "1.21"
indexmap.version = "2.7.1"
hashbrown.version = "0.14.5"
num-bigint = "0.4"
num-complex = "0.4"
ndarray = "0.15"
numpy = "0.23"
smallvec = "1.13"
thiserror = "2.0"
rustworkx-core = "0.15"
approx = "0.5"
itertools = "0.13.0"
ahash = "0.8.11"
rayon = "1.10"
# Most of the crates don't need the feature `extension-module`, since only `qiskit-pyext` builds an
# actual C extension (the feature disables linking in `libpython`, which is forbidden in Python
# distributions). We only activate that feature when building the C extension module; we still need
# it disabled for Rust-only tests to avoid linker errors with it not being loaded. See
# https://pyo3.rs/main/features#extension-module for more.
pyo3 = { version = "0.23", features = ["abi3-py39"] }
# These are our own crates.
qiskit-accelerate = { path = "crates/accelerate" }
qiskit-circuit = { path = "crates/circuit" }
qiskit-qasm2 = { path = "crates/qasm2" }
qiskit-qasm3 = { path = "crates/qasm3" }
[workspace.lints.clippy]
# The lint forbids things like `if a < b {} else if a == b {}`, and suggests matching on `a.cmp(&b)`
# which uses the `::std::cmp::Ordering` enum as a return. Both styles are acceptable, and the `if`
# chain can be more legible to people.
comparison-chain = "allow"
[workspace.lints.rust]
# In Rust 2021, the bodies of `unsafe fn` may use `unsafe` functions themselves without marking
# them. This is an overload of the word: `unsafe fn` is documenting something for the caller, but
# that doesn't mean the entire function body is unsafe. Denying this lint (which becomes
# warn-by-default in Rust 2024) means `unsafe fn` bodies still must use `unsafe {}` like normal.
unsafe_op_in_unsafe_fn = "deny"
[profile.release]
lto = 'fat'
codegen-units = 1