欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關于Rust?使用?dotenv?來設置環(huán)境變量的問題

 更新時間:2022年01月23日 17:22:46   作者:yangxu.pro  
在項目中,我們通常需要設置一些環(huán)境變量,用來保存一些憑證或其它數(shù)據(jù),這時我們可以使用dotenv這個crate,接下來通過本文給大家介紹Rust?使用dotenv來設置環(huán)境變量的問題,感興趣的朋友一起看看吧

Rust 語言是一種高效、可靠的通用高級語言。其高效不僅限于開發(fā)效率,它的執(zhí)行效率也是令人稱贊的,是一種少有的兼顧開發(fā)效率和執(zhí)行效率的語言。

Rust語言的特點

高性能 - Rust 速度驚人且內(nèi)存利用率極高。由于沒有運行時和垃圾回收,它能夠勝任對性能要求特別高的服務,可以在嵌入式設備上運行,還能輕松和其他語言集成。

可靠性 - Rust 豐富的類型系統(tǒng)和所有權模型保證了內(nèi)存安全和線程安全,讓您在編譯期就能夠消除各種各樣的錯誤。

生產(chǎn)力 - Rust 擁有出色的文檔、友好的編譯器和清晰的錯誤提示信息, 還集成了一流的工具 —— 包管理器和構建工具, 智能地自動補全和類型檢驗的多編輯器支持, 以及自動格式化代碼等等。

在項目中,我們通常需要設置一些環(huán)境變量,用來保存一些憑證或其它數(shù)據(jù),這時我們可以使用 dotenv 這個 crate。

首先在項目中添加 dotenv 這個依賴:

例如在下面這個項目中,需要設置數(shù)據(jù)庫連接字符串和 Debug 等級這兩個環(huán)境變量。在開發(fā)環(huán)境下,我們可以在項目根目錄下創(chuàng)建 .env 這個文件:

在 .env 文件里,我們設置兩個環(huán)境變量,分別是 DB_URL 和 LOG_LEVEL:

下面來到 main.rs,想要訪問系統(tǒng)的環(huán)境變量,我們使用標準庫的 std::env 即可:

這里,我們先把獲取到的環(huán)境變量進行遍歷和打印,然后再分別嘗試打印 PATH、DB_URL 和 LOG_LEVEL 這三個環(huán)境變量的值。

結果如下:

我們可以看到,前面是遍歷打印的環(huán)境變量,后邊打印出了 PATH 的值。然后在嘗試獲取 DB_URL 值的時候程序就恐慌了,因為沒有找到這個環(huán)境變量。

現(xiàn)在我們使用 dotenv 這個 crate:

先把 dotenv 導入,然后在程序開始的地方執(zhí)行 dotenv() 函數(shù)即可,這就會從當前目錄或父目錄中的 .env 文件中加載環(huán)境變量。

如果你想指定其它路徑,可以使用 crate 中提供的 from_filename 或 from_path 這兩個函數(shù)。

好,那么調用 dotenv() 之后為什么還要調用 ok() 方法?

首先,dotenv() 返回的是 Result<PathBuf> 類型,如果返回值不使用的話,就會發(fā)出一個警告:

調用 ok() 之后,會把 Result 轉化為 Option,而 Option 就不會產(chǎn)生未使用 Result 的警告了。

那么,為什么不使用 unwrap()?

因為在生產(chǎn)環(huán)境中,你不會使用 .env 這個文件,你應該使用真實的環(huán)境變量,這時 dotenv() 函數(shù)就會加載失敗,如果使用 unwrap(),那么你的程序就會停止運行。

所以這里使用 ok() 的目的就是當加載 dotenv 環(huán)境文件失敗的時候可以忽略錯誤。

代碼:

use std::env;
use dotenv::dotenv;
fn main() {
    dotenv().ok();
    for (k, v) in env::vars() {
        println!("{}: {}", k, v);
    }
    println!("PATH: {}", env::var("PATH").unwrap());
    println!("DB: {}", env::var("DB_URL").unwrap());
    println!("LOG: {}", env::var("LOG_LEVEL").unwrap());
}

到此這篇關于Rust 使用 dotenv 來設置環(huán)境變量的文章就介紹到這了,更多相關Rust 設置環(huán)境變量內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 詳解Rust中的方法

    詳解Rust中的方法

    方法其實就是結構體的成員函數(shù),在C語言中的結構體是沒有成員函數(shù)的,但是Rust畢竟也是一門面向對象的編程語言,所以給結構體加上方法的特性很符合面向對象的特點,這篇文章主要介紹了Rust中的方法,需要的朋友可以參考下
    2022-10-10
  • Rust中Cargo的使用詳解

    Rust中Cargo的使用詳解

    Cargo 是 Rust 的構建系統(tǒng)和包管理器,?多數(shù) Rustacean 們使? Cargo 來管理他們的 Rust 項?,因為它可以為你處理很多任務,?如構建代碼、下載依賴庫并編譯這些庫,這篇文章主要介紹了Rust中Cargo的使用,需要的朋友可以參考下
    2022-11-11
  • Rust處理錯誤的實現(xiàn)方法

    Rust處理錯誤的實現(xiàn)方法

    程序在運行的過程中,總是會不可避免地產(chǎn)生錯誤,而如何優(yōu)雅地解決錯誤,也是語言的設計哲學之一。本文就來和大家來了Rust是如何處理錯誤的,感興趣的可以了解一下
    2023-03-03
  • Rust使用kind進行異常處理(錯誤的分類與傳遞)

    Rust使用kind進行異常處理(錯誤的分類與傳遞)

    Rust?有一套獨特的處理異常情況的機制,它并不像其它語言中的?try?機制那樣簡單,這篇文章主要介紹了Rust指南錯誤的分類與傳遞以及使用kind進行異常處理,需要的朋友可以參考下
    2022-09-09
  • Rust中non_exhaustive的enum使用確保程序健壯性

    Rust中non_exhaustive的enum使用確保程序健壯性

    這篇文章主要為大家介紹了Rust中non_exhaustive的enum使用確保程序健壯性示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • Windows系統(tǒng)下安裝Rust環(huán)境超詳細教程

    Windows系統(tǒng)下安裝Rust環(huán)境超詳細教程

    這篇文章主要介紹了如何在Windows系統(tǒng)上安裝mingw64和Rust,mingw64是一個輕便的C語言編譯環(huán)境,可以替代Rust默認使用的Visual?Studio,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2025-02-02
  • Rust中的引用與借用舉例詳解

    Rust中的引用與借用舉例詳解

    這篇文章主要給大家介紹了關于Rust中引用與借用的相關資料,rust中借用和引用的附帶功效都一樣,就是都有生命周期,文中通過代碼介紹的非常詳細,對大家學習或者使用Rust具有一定的參考價值,需要的朋友可以參考下
    2023-11-11
  • Rust處理命令行參數(shù)

    Rust處理命令行參數(shù)

    在Rust中,命令行參數(shù)是程序從命令行接收的輸入,它們?yōu)槌绦蛱峁┝诉\行時配置和數(shù)據(jù)的靈活性,本文就來介紹一下Rust處理命令行參數(shù),具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • Rust中的Drop特性之解讀自動化資源清理的魔法

    Rust中的Drop特性之解讀自動化資源清理的魔法

    Rust通過Drop特性實現(xiàn)了自動清理機制,確保資源在對象超出作用域時自動釋放,避免了手動管理資源時可能出現(xiàn)的內(nèi)存泄漏或雙重釋放問題,智能指針如Box、Rc和RefCell都依賴于Drop來管理資源,提供了靈活且安全的資源管理方案
    2025-02-02
  • 詳解Rust中的所有權機制

    詳解Rust中的所有權機制

    Rust?語言提供了跟其他系統(tǒng)編程語言相同的方式來控制你使用的內(nèi)存,但擁有數(shù)據(jù)所有者在離開作用域后自動清除其數(shù)據(jù)的功能意味著你無須額外編寫和調試相關的控制代碼,這篇文章主要介紹了Rust中的所有權機制,需要的朋友可以參考下
    2022-10-10

最新評論