Toolchain requirements

Version 0.6.0 Updated Sep 14, 2026

rstest-bdd targets Rust 1.88 or newer across every crate in the workspace. Each Cargo.toml declares rust-version = "1.88", so cargo will refuse to compile the project on older compilers. The workspace uses the Rust 2024 edition.

rstest-bdd builds, tests, and lints on stable Rust. The repository pins that toolchain through rust-toolchain.toml, so ordinary cargo and Clippy commands use stable Rust.

Formatting toolchain

The workspace's .rustfmt.toml uses unstable formatting options. make fmt and make check-fmt therefore select the dated nightly formatter named by FMT_TOOLCHAIN in the Makefile, while every other Cargo invocation stays on stable. Install the matching formatter after installing the stable toolchain:

rustup toolchain install nightly-2026-08-07 --profile minimal --component rustfmt

Use make fmt rather than stable cargo fmt. Configure editor format-on-save to invoke rustup run nightly-2026-08-07 rustfmt, with any editor-specific arguments needed to pass the current file on standard input and read the formatted output from standard output. For rust-analyzer clients, set rust-analyzer.rustfmt.overrideCommand to that command array. This keeps local edits aligned with make check-fmt and CI.

Step definitions may be synchronous functions (fn) or asynchronous functions ( async fn). The framework no longer depends on the async-trait crate to express async methods in traits. Projects that previously relied on #[async_trait] in helper traits should replace those methods with ordinary functions, and use async steps or async fixtures where appropriate. Step wrappers normalize results into StepExecution.