My thought process is as follows:
- Many people with more experience than me have thought about this more than I have, so I'm probably missing something ...
- Rust has very strict and reliable stability guarantees for very good reasons. This does, however, mean that it can take a very long time for very useful features to become fully stabilised. For example
!has been ongoing since 2016;try_v2since 2021;assert_matcheswas in progress from 2021 until 2026. It's understandable that true stabilisation takes years for big complex topics & changes - this is in no way a complaint. - As a developer I have three options:
- don't use new features which would be really helpful and wait a few years.
- use nightly
- use stable with
RUSTC_BOOTSTRAP
Why I personally tend towards choosing option 3:
- I don't want to use nightly as I don't want the instability of daily changes and the risk of breakage at any time.
- I can trust that stable will not accidentally break something given the wonderful nightly-beta-stable release process that's in place. That means my only risk is of a deliberate breaking change in an unstable feature I've chosen to use. That's a risk I can better estimate and weigh against the value of using that feature.
- I can set up automation to test my crate with each new release and take action on failure (although to my knowledge I have no way of enforcing a maximum supported rust version).
- Running automated checks daily is a much bigger use of resources, both natural and personal. I can plan better around a quick check every 6 weeks.
- I'm effectively forced to have
RUSTC_BOOTSTRAPset on my local machine while coding if I want to have rust-analyzer support for testing and linting without huge delays every time I run a test. See: Issue #17149 · rust-lang/rust-analyzer
To my mind that means I get much more limited instability at zero cost vs nightly and I can choose to opt in to a feature where I believe it is worth the cost of instability in that specific feature
So why is this approach so actively discouraged?
The last discussions I can find are from 2021 here & here; they are focussed on slightly different use cases and revolve around making additional changes to the language while taking "RUSTC_BOOTSTRAP is bad" as a given.

