Rust 獲取項目文件夾的絕對路徑

在寫某個玩具項目的時候,需要在 integration test 中讀取某個復(fù)雜的配置文件。而讀取這個文件本身也是測試的一部分。目錄結(jié)構(gòu)如下:

Proj
  |- src
  |- tests
       |- my_tests.rs
       |- some.conf

但是使用 cargo test 時,執(zhí)行目錄并不確定(可以更改 target 路徑),因此這里必須在代碼中使用絕對路徑讀取 some.conf。

好在 Rust 確實隱蔽地提供了這么一個功能,因為 Cargo 在編譯時必須知道項目的位置,因此會設(shè)置一個環(huán)境變量 CARGO_MANIFEST_DIR。這個環(huán)境變量就是 Cargo.toml 文件所在的文件夾,也就是 項目文件夾的絕對路徑。通過它,我們可以自己手動拼接一個 some.conf 的絕對路徑:

use std::path::PathBuf;

#[test]
fn test_something() {
// omitted...
    let mut config_path = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
    config_path.push("tests");
    config_path.push("some.conf");
    println!("config file: {:?}", config_path);
// omitted...
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容