doc_for 0.1.0

📖 Get the documentation comment for a type.
Documentation

doc_for

GitHub License Crates.io Version Crates.io Total Downloads docs.rs

📖 Get the documentation comment for a type.

🤔 Usage

First, bring DocFor and doc_for! into scope:

use doc_for::{DocFor, doc_for};

Then, derive the DocFor trait for your type:

# use doc_for::{DocFor, doc_for};
#
/// Some documentation
#[derive(DocFor)]
struct MyStruct {
    field: i32,
}

Finally, use the doc_for! macro to get the documentation comment:

# use doc_for::{DocFor, doc_for};
#
# /// Some documentation
# #[derive(DocFor)]
# struct MyStruct {
#     field: i32,
# }
assert_eq!(doc_for!(MyStruct), " Some documentation");

Note that the leading spaces are preserved. Multi-line comments are also supported:

# use doc_for::{DocFor, doc_for};
#
/// Some documentation
/// that spans multiple lines
///
/// Additional information
#[derive(DocFor)]
struct MyStruct {
    field: i32,
}
assert_eq!(doc_for!(MyStruct), r#" Some documentation
 that spans multiple lines

 Additional information"#);

Also works with tuple structs, enums and unions:

# use doc_for::{DocFor, doc_for};
#
/// Tuple struct documentation
#[derive(DocFor)]
struct MyTupleStruct(i32);
assert_eq!(doc_for!(MyTupleStruct), " Tuple struct documentation");

/// Enum documentation
#[derive(DocFor)]
enum MyEnum {
    Variant,
}
assert_eq!(doc_for!(MyEnum), " Enum documentation");

/// Union documentation
#[derive(DocFor)]
union MyUnion {
    field: i32,
}
assert_eq!(doc_for!(MyUnion), " Union documentation");

✅ TODO

  • Access module documentation (e.g. doc_for!(my_module))
  • Access trait documentation (e.g. doc_for!(MyTrait))
  • Access sub-item documentation
    • Access field documentation (e.g. doc_for!(MyStruct::field))
    • Access method documentation (e.g. doc_for!(MyStruct::method))
    • Access associated constant documentation (e.g. doc_for!(MyStruct::CONSTANT))
    • Access associated type documentation (e.g. doc_for!(MyStruct::Type))
    • Access enum variant documentation (e.g. doc_for!(MyEnum::Variant))