Cargo Features

[dependencies]
strobe = { version = "0.2.0", default-features = false, features = ["std", "align_selected", "align_4", "align_32", "align_64", "align_512", "align_1024"] }
default = align_64, std

These default features are set whenever strobe is added without default-features = false somewhere in the dependency tree.

std default
align_selected align_1? align_1024? align_128? align_16? align_2? align_256? align_32? align_4? align_512? align_64 align_8? align_rust?

Memory alignment of intermediate storage must be selected at compile time,
trading better throughput at larger alignment (loosely speaking)
against lower total stack usage at smaller alignment.

In the worst case, each expression may need additional padding of up to the total alignment bytes minus one, in order to meet alignment requirements.

As a rule of thumb, 64 bytes is a good number for application-level perf.
Memory-constrained embedded usages may prefer to use exactly the minimum align of their vector instruction set (if any), or Rust compiler-determined alignment to balance overall program perf, or a strict align(1) to reduce padding.

align_rust align_1 align_2 align_4 = align_selected
align_8 align_16 align_32 = align_selected
align_64 default = align_selected
align_128 align_256 align_512 = align_selected
align_1024 = align_selected