Cargo Features

pauli_tracker has no features set by default.

[dependencies]
pauli_tracker = { version = "0.4.1", features = ["circuit", "experimental", "serde", "bitvec", "bitvec_simd", "bit-vec"] }
circuit

Enables rand

Affects pauli_tracker::circuit

experimental
serde

Enables serde, serde of hashbrown, use_serde of optional bitvec_simd, serde of optional bit-vec and optional bitvec

Features from optional dependencies

about the specified dependency version:

  • we use the newest major version if possible: if we expose an item from a dependency, then bumping the dependencies major version is a breaking change, therefore, if we don't have to bump the dependency's version, we wait until we really want to increase our major version because of some other reasons
  • we use the lowest possible minor version (manually search it with a binary-like search and test with ./target/debug/xtask ci locked); this is okay because we test it in our CI (test locked) and it provides maximal flexibility to users. However, note that we are not testing all versions in the possible range from our specified minimal version to the latest version. This means that there might be versions within the allowed range that do not compile. That is in general a problem and the only way out would be to define exact versions with "=", but that is too strict. However, this kind of breakage should be rare if the libraries follow the SemVer rules, as best as possible, and users don't use stuff like wildcard imports. Specifying the lowest possible minor versions, increases the chance for such breakages, but since this is rather a SemVer failure, I think this is better then restricting when this library can be used (through too tight dependency version bounds)
  • we tend to use a higher patch version (because these are bug fixes or internal improvements), i.e., when adding a dependency or updating its major and/or minor versions, we select the highest possible patch version (because finding the minimal working patch version seems rather unnecessary - why would someone want to restrict a dependency to a smaller patch version (except if the patch breaks something, but then it should be fixed soon)) the above is of course unnecessary for dev-dependencies, xtask, ..., just use whatever works
bitvec implicit feature

Enables bitvec

bitvec:

Addresses memory by bits, for packed collections and bitfields

bitvec_simd implicit feature

Enables bitvec_simd

bitvec_simd:

bitvec with SIMD

Affects boolean_vector::bitvec_simd

bit-vec implicit feature

Enables bit-vec

bit-vec:

A vector of bits