Search code examples
rustclap

How to provide multiple line help message with Clap?


Is there a way for us to have line breaks in clap's help message?

I tried multiple line comments, also tried inserting \n in the mix. But neither works.

#[derive(Parser, Debug)]
#[clap(author, version, about)]
struct Args {
    /// The input filename.\n
    /// Hello world!
    #[clap(short, long, value_parser)]
    input: String,
}

Output:

USAGE:
    ascii_tree --input <INPUT>

OPTIONS:
    -h, --help             Print help information
    -i, --input <INPUT>    The input filename.\n Hello world!
    -V, --version          Print version information

Is there away to achieve the following?

USAGE:
    ascii_tree --input <INPUT>

OPTIONS:
    -h, --help             Print help information
    -i, --input <INPUT>    The input filename.
                           Hello world!
    -V, --version          Print version information

Solution

  • I know of two options. Make the second line only contain ///, or use verbatim_doc_comment:

    #[derive(Parser, Debug)]
    struct Args {
        /// Name of the person to greet
        ///
        /// Has a multi-line help.
        #[clap(short, long)]
        name: String,
    
        /// Number of times to greet
        /// Use the verbatim arg
        #[clap(short, long, verbatim_doc_comment)]
        count: u8,
    }
    

    Playground