mdbook/crates
Eric Huss 30d3aeb691 Remove non_exhaustive from Book
This removes the `non_exhaustive` attribute from the `Book` and its
inner types `BookItem` and `Chapter`. These were added in
https://github.com/rust-lang/mdBook/pull/2779. After thinking about it
more, I realized that these types cannot be extended in a
semver-compatible way, so I am fine with allowing them be exhaustive.

The problem is that with CmdPreprocessor, the `Book` will be
re-serialized by a preprocessor, which could potentially be on an older
version. Attempting to add any new fields/variants means that either the
deserialization will fail, or the new fields will be stripped by the
preprocessor.

These could potentially be structured such that they have a
`serde(flatten)` or Other/Unknown variant so that a preprocessor would
at least see the extra fields/variants and pass them along back to the
output. However, a preprocessor or renderer wouldn't know what to do
with those new fields/variants (particularly `BookItem`) which would
itself be a problem. It's still possible to do something like this in
the future, but for now I think it's fine to restrict these to
semver-major changes.
2025-08-29 18:24:44 -07:00
..
mdbook-core Remove non_exhaustive from Book 2025-08-29 18:24:44 -07:00
mdbook-driver Rename Book.sections to Book.items 2025-08-22 18:51:04 -07:00
mdbook-html Remove non_exhaustive from Book 2025-08-29 18:24:44 -07:00
mdbook-markdown Enable smart-punctuation by default 2025-08-22 16:52:08 -07:00
mdbook-preprocessor Change PreProcessor::supports_renderer to return a Result 2025-08-16 13:26:01 -07:00
mdbook-renderer Switch all public types to non_exhaustive 2025-08-09 17:02:01 -07:00
mdbook-summary Rename Book.sections to Book.items 2025-08-22 18:51:04 -07:00