11 releases (6 breaking)

0.21.1 Jun 9, 2023
0.20.0 Nov 7, 2022
0.12.0 Jul 31, 2022
0.11.0 Dec 15, 2021
0.9.0 Jul 22, 2021

#294 in Rust patterns

Download history 753/week @ 2024-12-17 134/week @ 2024-12-24 425/week @ 2024-12-31 1028/week @ 2025-01-07 1063/week @ 2025-01-14 1319/week @ 2025-01-21 1035/week @ 2025-01-28 1356/week @ 2025-02-04 1076/week @ 2025-02-11 1017/week @ 2025-02-18 1648/week @ 2025-02-25 1505/week @ 2025-03-04 1509/week @ 2025-03-11 1854/week @ 2025-03-18 1564/week @ 2025-03-25 1526/week @ 2025-04-01

6,764 downloads per month
Used in 16 crates (4 directly)

MIT license

220KB
5K SLoC

Doku   crates-badge docs-badge

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::<Config>());
    println!("```");
    println!();
    println!("```toml");
    println!("{}", doku::to_toml::<Config>());
    println!("```");
}
{
  // 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 https://docs.rs/doku/.

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.

Dependencies

~2.1–3.5MB
~73K SLoC