Macro reexport

Source
macro_rules! reexport {
    { fz_string_borrow } => { ... };
    { fz_string_borrow as $name:ident } => { ... };
    { fz_string_null } => { ... };
    { fz_string_null as $name:ident } => { ... };
    { fz_string_clone } => { ... };
    { fz_string_clone as $name:ident } => { ... };
    { fz_string_clone_with_len } => { ... };
    { fz_string_clone_with_len as $name:ident } => { ... };
    { fz_string_content } => { ... };
    { fz_string_content as $name:ident } => { ... };
    { fz_string_content_with_len } => { ... };
    { fz_string_content_with_len as $name:ident } => { ... };
    { fz_string_is_null } => { ... };
    { fz_string_is_null as $name:ident } => { ... };
    { fz_string_free } => { ... };
    { fz_string_free as $name:ident } => { ... };
}
Expand description

Re-export a fz_string_t utility function in your own crate.

For each utility function, this can be written either as

ffizz_string::reexport!(fz_string_free);

or, to rename the function,

ffizz_string::reexport!(fz_string_free as my_crate_string_free);

It is still up to you to include project-specific documentation and declaration, typically using #ffizz_header::snippet!, due to limitations in the Rust parser around docstrings and macros. For example:

ffizz_snippet!{
    #[ffizz(name="my_crate_string_free")]
    /// Free a string ...
    /// ```c
    /// EXTERN_C void my_crate_string_free(*my_crate_string);
    /// ```
}
ffizz_string::reexport!(fz_string_free as my_crate_string_free);