use std::{
env, io,
path::PathBuf,
process::{self, Command},
};
fn inner_main() -> io::Result<PathBuf> {
let exe = env::current_exe()?;
let dir = exe.parent().expect("Executable must be in some directory");
let dir = dir.join("nvs");
Ok(dir)
}
fn main() {
let path = inner_main().expect("Couldn't get path.");
let path = path.into_os_string().into_string().unwrap();
Command::new("cd")
.arg(&path)
.status()
.expect("Something went wrong.");
process::exit(0);
}
Я беру путь, в котором находится двоичный файл, захожу в родительский каталог, чтобы имя двоичного файла больше не было в пути, а затем добавляю "nvs" в конце пути, а затем в main()
Iпоместите функцию inner_main()
в let, а затем повторно объявите let как строку, чтобы я мог перейти в каталог.
Всякий раз, когда он пытается выполнить CDing в каталог nvs, ничего не происходит, и я знаю, что команда выполняется, потому что еслиЯ перемещаю бинарный файл куда-то без файла nvs в тот же каталог, в котором он работает, говоря, что не может найти этот каталог, поэтому мой вопрос: когда он находится в каталоге с nvs, почему он на самом деле не записывается в указанный каталог, как должно?