Executando verificação de segurança...
Em resposta a [Não disponível]
3

Aqui vc definiu as opções de linha de comando:

  • Arg::new("target").short('t').long("Target Number")
  • Arg::new("list").short('l').long("List")

Ou seja, o "target" pode usar a opção curta -t ou a opção longa --Target\ Number (tive que usar \ porque tem um espaço, o que não é usual em opções longas). Da mesma forma, a lista de números deve usar -l ou --List.

Sendo assim, bastaria rodar usando estas formas:

cargo run -- -t 3 -l 1,2,3,4,5

Ou:

cargo run -- --Target\ Number 3 --List 1,2,3,4,5

Ou:

cargo run -- --Target\ Number 3 -l 1,2,3,4,5

Ou:

cargo run -- -t 3 --List 1,2,3,4,5

Para ver todas as opções disponíveis, basta rodar cargo run -- --help, que a saída será:

Usage: rusttest [OPTIONS]

Options:
  -t, --Target Number <target>  
  -l, --List <list>             
  -h, --help                    Print help

Mas como já dito, usar espaço não é comum em opções longas. Se eu fizesse somente --Target Number o shell entende que a opção é --Target e Number é o respectivo valor. Por isso precisei usar a \ e ficou --Target\ Number, pois assim ele entende que o espaço faz parte do nome da opção. Mas eu sugiro mudar, poderia ser por exemplo --target-number, que é uma forma muito mais comum em aplicações de linha de comando.

Por fim, vale também consultar a documentação do Clap.

Carregando publicação patrocinada...
5

Quero compartilhar uma curiosidade que aprendi esse ano com o livro The Art of Unix Programming, no tópico Command-Line Options, que tem a ver com as convenções que o @kht mencionou e vai ajudar a entender para que serve (e como surgiu) cada forma de argumento (curta e longa):

  • -a é um exemplo de argumento na tradição Unix original, onde as opções de linha de comando eram uma única letra precedida por um único hífen. Opções para sinalizar um modo que não recebem argumentos podem ser agrupadas, então se -a e -b fossem opções de modo, -ab ou -ba habilitariam ambos modos. Inclusive, existem alguns significados mais comuns para as opções de uma única letra, por exemplo, a = all, -d = delete ou directory.
  • --all é um exemplo de argumento no estilo GNU, que usa opções com palavras-chave ao invés de letras, precedidas por dois hífens. O argumento de uma opção, caso exista, pode ser separado por espaço em branco ou um =. O hífen duplo foi escolhido para que as opções tradicionais Unix de uma letra e as opções no estilo GNU pudessem ser misturadas inequivocamente na mesma linha de comando.
  • -geometry é um exemplo de argumento no estilo do toolkit X, que usa hífens únicos e palavras-chave para as opções. Pela minha experiência, diria que é a opção menos popular entre as três.

O estilo Unix original evoluiu em teletipos ASR-33 que tornaram a concisão uma virtude; por isso, as opções de uma única letra. Manter pressionada a tecla shift exigia um esforço real, daí a preferência por letras minúsculas e o uso de - (em vez do, talvez mais lógico, +) para habilitar opções.

O teletipo ASR-33, a aparência das teclas lembra uma máquina de escrever

Quem quiser se aprofundar um pouco mais, pode acessar o link desse tópico no livro.

0