Attribute Macro docify::export

source ·
#[export]
Expand description

Marks an item for export, making it available for embedding as a rust doc example via docify::embed!(..) or docify::embed_run!(..).

By default, you can just call the attribute with no arguments like the following:

#[docify::export]
mod some_item {
    fn some_func() {
        println!("hello world");
    }
}

When you docify::embed!(..) this item, you will have to refer to it by the primary ident associated with the item, in this case some_item. In some cases, such as with impl statements, there is no clear main ident. You should handle these situations by specifying an ident manually (not doing so will result in a compile error):

#[docify::export(some_name)]
impl SomeTrait for Something {
    // ...
}

You are also free to specify an alternate export name for items that do have a clear ident if you need/want to:

#[docify::export(SomeName)]
fn hello_world() {
    println!("hello");
    println!("world");
}

When you go to docify::embed!(..) or docify::embed_run!(..) such an item, you must refer to it by SomeName (in this case), or whatever name you provided to #[docify::export].

There is no guard to prevent duplicate export names in the same file, and export names are all considered within the global namespace of the file in question (they do not exist inside a particular module or scope within a source file). When using docify::embed!(..), duplicate results are simply embedded one after another, and this is by design.

If there are multiple items with the same inherent name in varipous scopes in the same file, and you want to export just one of them as a doc example, you should specify a unique ident as the export name for this item.

Note that if you wish to embed an entire file, you don’t need #[docify::export] at all and can instead specify just a path to docify::embed!(..) or docify::embed_run!(..).