Rust does not appear to "fail fast" for individual tests explains that --fail-fast applies only at the level of cargo test running multiple targets. Each test target, containing potentially many functions, runs to completion, at least if using the normal harness code.
I don't want to change the default but I do think it would be useful to have an option to stop after the first failure within a single test target. For example, cargo mutants really just wants to know if any tests fail.
Do you think there would be any objection in principle to a PR adding an option for this?
I think you can approximate this behavior by compiling with panic=abort, though that won't work for should_panic tests.
Yes; the built-in test harness (aka libtest) is more or less under a feature freeze and work is being put towards, instead, designing better interfaces for custom test harnesses that can arbitrarily customize test execution behavior.
(Custom test harnesses are possible now but have no stable way to get at #[test] functions.)