3

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
E_net4
  • 27,810
  • 13
  • 101
  • 139
Yuchen
  • 30,852
  • 26
  • 164
  • 234

2 Answers2

9

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

Caesar
  • 6,733
  • 4
  • 38
  • 44
1

You can add the verbatim_doc_comment option:

#[derive(Parser, Debug)]
#[clap(author, version, about)]
struct Args {
    /// The input filename.
    /// Hello world!
    #[clap(short, long, value_parser, verbatim_doc_comment)]
    input: String,
}
USAGE:
    ascii_tree --input <INPUT>

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

It seems without it, Rust only recognizes paragraph breaks via double-newline.

Finomnis
  • 18,094
  • 1
  • 20
  • 27