use std::path::PathBuf;
use clap::Parser;
#[derive(Parser, Debug)]
#[clap()]
pub struct Opts {
pub args: Vec<String>,
#[clap(short = 'c', long = "config")]
pub config: Option<PathBuf>,
#[clap(short = 'p', long = "pwd")]
pub pwd: Option<PathBuf>,
}
In Rust, the difference between single quotes (') and double quotes (") is significant and pertains to what kind of data you're representing:
-
Single Quotes ('): Used to denote a single character, or char type in Rust. For example, 'a' represents a single character. This is why when specifying the short option in clap, you use a single character within single quotes, like -c represented as 'c'.
-
Double Quotes ("): Used to denote a string literal, or String type in Rust. String literals are sequences of characters. For example, "config" represents a string consisting of the characters c, o, n, f, i, g. In clap, when specifying the long name of an argument, you use a string because these names are typically more than one character long.
This distinction is common in many programming languages, where single quotes represent a single character, and double quotes represent a string or sequence of characters. It's a part of the syntax that helps the compiler understand exactly what kind of data you're working with: a single char or a String.