Итак, время от времени я смотрю на Rust, и на этот раз у меня есть простая задача, чтобы получить путь к моему файлу истории bash. Итак, вы придумали env :: var() и env :: home_dir() и хотели бы присоединиться к ним. Теперь, как 1 или 2 строки в Python и, возможно, в C, я пришел с этой отвратительной 3 лайнера:Как очистить путь к истории bash?
let h_file = env::var("HISTFILE").unwrap_or(OsString::from_string(".bash_history".to_string())).into_string().unwrap_or_else(|_| { panic!("the end is near!!!")}); let h_dir = env::home_dir().unwrap_or_else(|| { panic!("unable to get homedir!") }); let h_file_p = h_dir.join(h_file);
Что бы быть лучше? Честно говоря, я обеспокоен тем, что, будучи новичком, просто используя документы, я придумал эту ужасную вещь.
Редактировать: Конечно, дело в том, что первая строка длинная, и я знаю, что я мог бы поместить все эти команды в несколько строк, следующих друг за другом, или использовать выражения gazillion match, все из которых на самом деле не сделают это хорошее решение для основной задачи.
Сколько вы заботитесь об ошибках? Я думаю, что многие из этого кода имеют дело с обработкой ошибок, и я чувствую, что люди будут удивлены тем, сколько ошибок возможно с кодом при запуске программирования в Rust ... – Shepmaster
Предыдущая версия была намного меньше ... https://github.com/buster/rrun/commit/d65bdffadb8391ac3f9adb648e617e2f20aea809#diff-93d0fcbc95e775bf2e023879c10a69e1R7 Так что большинство из этого связано с OsString, а что нет. Так что, по-видимому, старая версия больше не работает, а новая еще более уродливая – buster