fn(Code) -> Docs
Doku [![crates-badge]][crates-link] [![docs-badge]][docs-link]
[crates-badge]: https://img.shields.io/crates/v/doku.svg [crates-link]: https://crates.io/crates/doku [docs-badge]: https://img.shields.io/badge/docs.rs-latest-informational [docs-link]: https://docs.rs/doku
Doku is a framework for documenting Rust data structures - it allows to generate aesthetic, human-friendly descriptions of configuration types, requests / responses, and so on.
Say goodbye to stale, hand-written documentation - with Doku, code is the documentation!
Example
[dependencies]
doku = "0.21"
use doku::Document;
use serde::Deserialize;
#[derive(Deserialize, Document)] struct Config { /// Database's engine db_engine: DbEngine,
/// Database's host #[doku(example = "localhost")] db_host: String,
/// Database's port #[doku(example = "5432")] db_port: usize, }
#[derive(Deserialize, Document)] enum DbEngine { #[serde(rename = "pgsql")] PostgreSQL,
#[serde(rename = "mysql")] MySQL, }
fn main() { println!("
json"); println!("{}", doku::to_json::"); println!(); println!("toml"); println!("{}", doku::to_toml::"); }
{
// Database's engine
"db_engine": "pgsql" | "mysql",
// Database's host
"db_host": "localhost",
// Database's port
"db_port": 5432
}
# Database's engine
db_engine = "pgsql" | "mysql"
Database's host
db_host = "localhost"
Database's port
db_port = 5432
You'll find more examples in ./doku/examples; there's also a documentation at
Contributing
Found a bug, have an idea? Please let us know on GitHub - patches are welcome, too!
If you want to try hacking on Doku, the entry points are:
There are also integration tests at ./doku/tests.License
Licensed under the MIT license.