Хочу простого - получить командную строку, проверить количество параметров (больше двух), использовать первый параметр для вывода подсказки, а остальные склеить в строку.
По идее, для получения имени программы правильно будет использовать env::current_exe. Но получается не очень, да ещё и ошибки не обрабатываются:
println!("{}", std::env::current_exe().unwrap().display());
Если обработать, то получается вот так:
println!("{}", std::env::current_exe().ok().map_or("test".to_string(), |path| path.display().to_string()));
Поэтому хотел не заморачивать и просто использовать первый аргумент. Получилось вот так:
let args = std::env::args();
if args.len() < 2 {
println!("{}", args.take(1).last().unwrap_or("test".to_string()));
}
let text = args.skip(1).fold(String::new(), |result, param| result + " " + ¶m);
Собственно, вопросы:
1. Можно ли покрасивее получить имя программы?
2. Как поизящнее убрать первый пробел из получаемой строки?
3. Почему env::args возвращает итератор, а не вектор, как раньше?