Я хотел бы создать командную строку, которая использует хлопок для анализа ввода. Лучшее, что я могу придумать, - это цикл, который запрашивает у пользователя ввод, разбивает его на регулярное выражение и создает Vec, который он каким-то образом передает
loop {
// Print command prompt and get command
print!("> "); io::stdout().flush().expect("Couldn't flush stdout");
let mut input = String::new(); // Take user input (to be parsed as clap args)
io::stdin().read_line(&mut input).expect("Error reading input.");
let args = WORD.captures_iter(&input)
.map(|cap| cap.get(1).or(cap.get(2)).unwrap().as_str())
.collect::<Vec<&str>>();
let matches = App::new("MyApp")
// ... Process Clap args/subcommands
.get_matches(args); //match arguments from CLI args variable
}
В принципе, мне интересно, есть ли способ заставить Clap использовать заранее заданный список аргументов?
clap
, вероятно, не имеет такой функциональности, потому чтоclap
обычно получает командную строку не как отдельную строку, а как список строк, уже проанализированных оболочкой. Можно попроситьclap
использовать список строк вместо использования аргументов программ. - person mcarton   schedule 27.05.2020