Struct mdbook::book::MDBook

source ·
pub struct MDBook {
    pub root: PathBuf,
    pub config: Config,
    pub book: Book,
    /* private fields */
}
Expand description

The object used to manage and build a book.

Fields§

§root: PathBuf

The book’s root directory.

§config: Config

The configuration used to tweak now a book is built.

§book: Book

A representation of the book’s contents in memory.

Implementations§

source§

impl MDBook

source

pub fn load<P: Into<PathBuf>>(book_root: P) -> Result<MDBook>

Load a book from its root directory on disk.

source

pub fn load_with_config<P: Into<PathBuf>>( book_root: P, config: Config ) -> Result<MDBook>

Load a book from its root directory using a custom Config.

source

pub fn load_with_config_and_summary<P: Into<PathBuf>>( book_root: P, config: Config, summary: Summary ) -> Result<MDBook>

Load a book from its root directory using a custom Config and a custom summary.

source

pub fn iter(&self) -> BookItems<'_>

Returns a flat depth-first iterator over the elements of the book, it returns a BookItem enum: (section: String, bookitem: &BookItem)

for item in book.iter() {
    match *item {
        BookItem::Chapter(ref chapter) => {},
        BookItem::Separator => {},
        BookItem::PartTitle(ref title) => {}
    }
}

// would print something like this:
// 1. Chapter 1
// 1.1 Sub Chapter
// 1.2 Sub Chapter
// 2. Chapter 2
//
// etc.
source

pub fn init<P: Into<PathBuf>>(book_root: P) -> BookBuilder

init() gives you a BookBuilder which you can use to setup a new book and its accompanying directory structure.

The BookBuilder creates some boilerplate files and directories to get you started with your book.

book-test/
├── book
└── src
    ├── chapter_1.md
    └── SUMMARY.md

It uses the path provided as the root directory for your book, then adds in a src/ directory containing a SUMMARY.md and chapter_1.md file to get you started.

source

pub fn build(&self) -> Result<()>

Tells the renderer to build our book and put it in the build directory.

source

pub fn preprocess_book( &self, renderer: &dyn Renderer ) -> Result<(Book, PreprocessorContext)>

Run preprocessors and return the final book.

source

pub fn execute_build_process(&self, renderer: &dyn Renderer) -> Result<()>

Run the entire build process for a particular Renderer.

source

pub fn with_renderer<R: Renderer + 'static>(&mut self, renderer: R) -> &mut Self

You can change the default renderer to another one by using this method. The only requirement is that your renderer implement the Renderer trait.

source

pub fn with_preprocessor<P: Preprocessor + 'static>( &mut self, preprocessor: P ) -> &mut Self

Register a Preprocessor to be used when rendering the book.

source

pub fn test(&mut self, library_paths: Vec<&str>) -> Result<()>

Run rustdoc tests on the book, linking against the provided libraries.

source

pub fn test_chapter( &mut self, library_paths: Vec<&str>, chapter: Option<&str> ) -> Result<()>

Run rustdoc tests on a specific chapter of the book, linking against the provided libraries. If chapter is None, all tests will be run.

source

pub fn build_dir_for(&self, backend_name: &str) -> PathBuf

The logic for determining where a backend should put its build artefacts.

If there is only 1 renderer, put it in the directory pointed to by the build.build_dir key in Config. If there is more than one then the renderer gets its own directory within the main build dir.

i.e. If there were only one renderer (in this case, the HTML renderer):

  • build/
    • index.html

Otherwise if there are multiple:

  • build/
    • epub/
      • my_awesome_book.epub
    • html/
      • index.html
    • latex/
      • my_awesome_book.tex
source

pub fn source_dir(&self) -> PathBuf

Get the directory containing this book’s source files.

source

pub fn theme_dir(&self) -> PathBuf

Get the directory containing the theme resources for the book.

Auto Trait Implementations§

§

impl !RefUnwindSafe for MDBook

§

impl !Send for MDBook

§

impl !Sync for MDBook

§

impl Unpin for MDBook

§

impl !UnwindSafe for MDBook

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.