pub fn build_arg_parser() -> ArgParser<'static> {
    ArgParser::new()
        .arg(
            Argument::new("id")
                .required(true)
                .takes_value(true)
                .help("Jail ID."),
        )
        .arg(
            Argument::new("exec-file")
                .required(true)
                .takes_value(true)
                .help("File path to exec into."),
        )
        .arg(
            Argument::new("node")
                .required(false)
                .takes_value(true)
                .help("NUMA node to assign this microVM to."),
        )
        .arg(
            Argument::new("uid")
                .required(true)
                .takes_value(true)
                .help("The user identifier the jailer switches to after exec."),
        )
        .arg(
            Argument::new("gid")
                .required(true)
                .takes_value(true)
                .help("The group identifier the jailer switches to after exec."),
        )
        .arg(
            Argument::new("chroot-base-dir")
                .takes_value(true)
                .default_value("/srv/jailer")
                .help("The base folder where chroot jails are located."),
        )
        .arg(
            Argument::new("netns")
                .takes_value(true)
                .help("Path to the network namespace this microVM should join."),
        )
        .arg(Argument::new("daemonize").takes_value(false).help(
            "Daemonize the jailer before exec, by invoking setsid(), and redirecting \
             the standard I/O file descriptors to /dev/null.",
        ))
        .arg(
            Argument::new("new-pid-ns")
                .takes_value(false)
                .help("Exec into a new PID namespace."),
        )
        .arg(Argument::new("cgroup").allow_multiple(true).help(
            "Cgroup and value to be set by the jailer. It must follow this format: \
             <cgroup_file>=<value> (e.g cpu.shares=10). This argument can be used \
             multiple times to add multiple cgroups.",
        ))
        .arg(Argument::new("resource-limit").allow_multiple(true).help(
            "Resource limit values to be set by the jailer. It must follow this format: \
             <resource>=<value> (e.g no-file=1024). This argument can be used \
             multiple times to add multiple resource limits. \
             Current available resource values are:\n\
             \t\tfsize: The maximum size in bytes for files created by the process.\n\
             \t\tno-file: Specifies a value one greater than the maximum file descriptor number \
             that can be opened by this process.",
        ))
        .arg(
            Argument::new("cgroup-version")
                .takes_value(true)
                .default_value("1")
                .help("Select the cgroup version used by the jailer."),
        )
        .arg(
            Argument::new("version")
                .takes_value(false)
                .help("Print the binary version number."),
        )
}
/// Create an ArgParser object which contains info about the command line argument parser and populate
/// it with the expected arguments and their characteristics.
Create an ArgParser object which contains info about the command line argument parser and populate
it with the expected arguments and their characteristics.
Create an ArgParser object which contains info about the command line argument parser and populate it with the expected arguments and their characteristics .
pub fn build_arg_parser() -> ArgParser<'static> {
    ArgParser::new()
        .arg(
            Argument::new("id")
                .required(true)
                .takes_value(true)
                .help("Jail ID."),
        )
        .arg(
            Argument::new("exec-file")
                .required(true)
                .takes_value(true)
                .help("File path to exec into."),
        )
        .arg(
            Argument::new("node")
                .required(false)
                .takes_value(true)
                .help("NUMA node to assign this microVM to."),
        )
        .arg(
            Argument::new("uid")
                .required(true)
                .takes_value(true)
                .help("The user identifier the jailer switches to after exec."),
        )
        .arg(
            Argument::new("gid")
                .required(true)
                .takes_value(true)
                .help("The group identifier the jailer switches to after exec."),
        )
        .arg(
            Argument::new("chroot-base-dir")
                .takes_value(true)
                .default_value("/srv/jailer")
                .help("The base folder where chroot jails are located."),
        )
        .arg(
            Argument::new("netns")
                .takes_value(true)
                .help("Path to the network namespace this microVM should join."),
        )
        .arg(Argument::new("daemonize").takes_value(false).help(
            "Daemonize the jailer before exec, by invoking setsid(), and redirecting \
             the standard I/O file descriptors to /dev/null.",
        ))
        .arg(
            Argument::new("new-pid-ns")
                .takes_value(false)
                .help("Exec into a new PID namespace."),
        )
        .arg(Argument::new("cgroup").allow_multiple(true).help(
            "Cgroup and value to be set by the jailer. It must follow this format: \
             <cgroup_file>=<value> (e.g cpu.shares=10). This argument can be used \
             multiple times to add multiple cgroups.",
        ))
        .arg(Argument::new("resource-limit").allow_multiple(true).help(
            "Resource limit values to be set by the jailer. It must follow this format: \
             <resource>=<value> (e.g no-file=1024). This argument can be used \
             multiple times to add multiple resource limits. \
             Current available resource values are:\n\
             \t\tfsize: The maximum size in bytes for files created by the process.\n\
             \t\tno-file: Specifies a value one greater than the maximum file descriptor number \
             that can be opened by this process.",
        ))
        .arg(
            Argument::new("cgroup-version")
                .takes_value(true)
                .default_value("1")
                .help("Select the cgroup version used by the jailer."),
        )
        .arg(
            Argument::new("version")
                .takes_value(false)
                .help("Print the binary version number."),
        )
}
pub fn build_arg_parser ( ) -> ArgParser < ' static > { ArgParser :: new ( ) . arg ( Argument :: new ( " " ) . required ( true ) . takes_value ( true ) . help ( " " ) , ) . arg ( Argument :: new ( " " ) . required ( true ) . takes_value ( true ) . help ( " " ) , ) . arg ( Argument :: new ( " " ) . required ( false ) . takes_value ( true ) . help ( " " ) , ) . arg ( Argument :: new ( " " ) . required ( true ) . takes_value ( true ) . help ( " " ) , ) . arg ( Argument :: new ( " " ) . required ( true ) . takes_value ( true ) . help ( " " ) , ) . arg ( Argument :: new ( " " ) . takes_value ( true ) . default_value ( " " ) . help ( " " ) , ) . arg ( Argument :: new ( " " ) . takes_value ( true ) . help ( " " ) , ) . arg ( Argument :: new ( " " ) . takes_value ( false ) . help ( " \
 " , ) ) . arg ( Argument :: new ( " " ) . takes_value ( false ) . help ( " " ) , ) . arg ( Argument :: new ( " " ) . allow_multiple ( true ) . help ( " \
 \
 " , ) ) . arg ( Argument :: new ( " " ) . allow_multiple ( true ) . help ( " \
 \
 \
 \n \
 \t \t \n \
 \t \t \
 " , ) ) . arg ( Argument :: new ( " " ) . takes_value ( true ) . default_value ( " " ) . help ( " " ) , ) . arg ( Argument :: new ( " " ) . takes_value ( false ) . help ( " " ) , ) }
Create an ArgParser object which contains info about the command line argument parser and populate
it with the expected arguments and their characteristics.
Create an ArgParser object which contains info about the command line argument parser and populate it with the expected arguments and their characteristics .