No description
Find a file
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
.github Update to Rust 2024 2025-07-23 17:29:12 -07:00
ci Test more targets. 2024-05-16 17:27:28 -07:00
crates Remove non_exhaustive from Book 2025-08-29 18:24:44 -07:00
examples Rename Book.sections to Book.items 2025-08-22 18:51:04 -07:00
guide Add sidebar heading navigation 2025-08-27 14:44:12 -07:00
src Change CLI dest-dir to be relative to the current directory 2025-08-18 16:28:08 -07:00
test_book Add sidebar heading navigation 2025-08-27 14:44:12 -07:00
tests Try to adjust search test to pass in CI 2025-08-27 15:15:08 -07:00
.git-blame-ignore-revs Add .git-blame-ignore-revs 2025-07-23 17:29:53 -07:00
.gitattributes Mark more font files as binary 2025-04-05 20:41:36 -04:00
.gitignore Add testsuite book directories to ignore list 2025-04-22 21:11:54 -07:00
Cargo.lock Add globs to test path names 2025-08-26 15:44:01 -07:00
Cargo.toml Add globs to test path names 2025-08-26 15:44:01 -07:00
CHANGELOG.md Update to 0.4.52 2025-07-14 15:45:55 -07:00
CODE_OF_CONDUCT.md add explicit code of conduct, copying other rust-lang repos 2021-07-26 11:52:24 -07:00
CONTRIBUTING.md Use consistent sentence case for section headers 2025-08-16 14:59:05 -07:00
eslint.config.mjs Lint HBS JS templates 2025-08-25 15:15:47 -07:00
LICENSE Create LICENSE 2015-07-29 01:11:30 +02:00
package.json Add sidebar heading navigation 2025-08-27 14:44:12 -07:00
README.md README.md: update workflow status badge 2025-02-13 11:01:08 -05:00
rustfmt.toml Add rustfmt.toml 2025-07-23 17:29:55 -07:00
triagebot.toml Add more triagebot features 2025-03-23 13:04:10 -07:00

mdBook

CI Status crates.io LICENSE

mdBook is a utility to create modern online books from Markdown files.

Check out the User Guide for a list of features and installation and usage information. The User Guide also serves as a demonstration to showcase what a book looks like.

If you are interested in contributing to the development of mdBook, check out the Contribution Guide.

License

All the code in this repository is released under the Mozilla Public License v2.0, for more information take a look at the LICENSE file.