Получение целевой папки изнутри rust pro c -macro - PullRequest
0 голосов
/ 17 февраля 2020

Как видно из названия, я пытаюсь получить целевую папку для хранения промежуточных продуктов компиляции. Мне нужна настоящая целевая папка, поскольку я хотел бы кэшировать некоторые значения между компиляциями, чтобы значительно ускорить их (в противном случае я мог бы просто использовать временный каталог).

Мой текущий подход заключается в разборе аргументов ржавчины c вызов (через std::env::args()) и найти --out-dir, код выглядит примерно так:

// First we get the arguments for the rustc invocation
let mut args = std::env::args();

// Then we loop through them all, and find the value of "out-dir"
let mut out_dir = None;
while let Some(arg) = args.next() {
    if arg == "--out-dir" {
        out_dir = args.next();
    }
}

// Finally we clean out_dir by removing all trailing directories, until it ends with target 
let mut out_dir = PathBuf::from(out_dir.expect("Failed to find out_dir"));
while !out_dir.ends_with("target") {
    if !out_dir.pop() {
        // We ran out of directories...
        panic!("Failed to find out_dir");
    }
}

out_dir

Обычно я бы использовал что-то вроде переменной среды (подумайте о OUT_DIR) , но я не смог найти ничего, что могло бы мне помочь.

Так есть ли правильный способ сделать это? Или я должен сообщить о проблеме в группу разработчиков ржавчины?

...