最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Rust-使用dotenvy加載和使用環(huán)境變量的過(guò)程詳解

 更新時(shí)間:2023年11月14日 12:13:55   作者:明天好,會(huì)的  
系統(tǒng)的開(kāi)發(fā),測(cè)試和部署離不開(kāi)環(huán)境變量,今天分享在Rust的系統(tǒng)開(kāi)發(fā)中,使用dotenvy來(lái)讀取和使用環(huán)境變量,感興趣的朋友跟隨小編一起看看吧

系統(tǒng)的開(kāi)發(fā),測(cè)試和部署離不開(kāi)環(huán)境變量,今天分享在Rust的系統(tǒng)開(kāi)發(fā)中,使用dotenvy來(lái)讀取和使用環(huán)境變量。

安裝

cargo add dotenvy dotenv_codegen

加載環(huán)境變量

use dotenvy::dotenv;
fn main() {
    dotenv().expect(".env不存在");
    ...
}

dotenvy默認(rèn)會(huì)從項(xiàng)目的根目錄下的.env文件中加載環(huán)境變量。

環(huán)境變量的使用

不僅可以在運(yùn)行時(shí)使用環(huán)境變量,還可以在編譯時(shí)使用環(huán)境變量。

運(yùn)行時(shí)使用環(huán)境變量

use std::env;
use dotenvy::dotenv;
fn main() {
    dotenv().expect(".env不存在"); //從.env中加載環(huán)境變量
    println!("port={}", env::var("port").expect("port"));
    ...
}

編譯時(shí)使用環(huán)境變量

#[macro_use]
extern crate dotenv_codegen;
static redis_url : &'static = dotenv!("redis_url");
fn main() {
    ...
}

好了,從理論上,我們基本掌握了如何通過(guò)dotenvy,在Rust的代碼開(kāi)發(fā)中,如何加載和使用環(huán)境變量。

下面,是在項(xiàng)目的實(shí)際應(yīng)用中,可能會(huì)有的疑問(wèn),我列了幾個(gè)供大家參考。

項(xiàng)目實(shí)戰(zhàn)相關(guān)問(wèn)題

1. .env中的環(huán)境變量和系統(tǒng)中的環(huán)境變量是什么關(guān)系?

系統(tǒng)中的環(huán)境變量?jī)?yōu)先級(jí)大于.env中配置的環(huán)境變量。

例如,.env中有port=8000,而當(dāng)前系統(tǒng)的環(huán)境變量export port=8080,這個(gè)時(shí)候讀取到的環(huán)境變量port的值是8080

2. 在工程代碼中是否需要處理dotenv的錯(cuò)誤? 

我的建議是,不需要。

這是少數(shù)幾個(gè)在Rust的編程開(kāi)發(fā)中,我個(gè)人不建議處理錯(cuò)誤的地方,讓錯(cuò)誤以panic的方式終止系統(tǒng)運(yùn)行。如果當(dāng)前環(huán)境下不存在.env文件,系統(tǒng)應(yīng)該停止運(yùn)行,直至修復(fù)錯(cuò)誤。這里的原則是停下來(lái)什么都不做,總比運(yùn)行起來(lái)產(chǎn)生更大的錯(cuò)誤好。

3. 如果只是在編譯時(shí)使用環(huán)境變量,還需要在程序啟動(dòng)時(shí)調(diào)用dotenv()嗎?

不需要。

如果只是在編譯時(shí)使用環(huán)境變量,那么可以不用在程序啟動(dòng)時(shí)調(diào)用dotenv()函數(shù),但必須要正編譯時(shí).env文件存在。編譯完成后就可以丟棄.env文件了。

注意,另外,因?yàn)槭窃诰幾g時(shí)就將環(huán)境變量寫(xiě)入了,所以,對(duì)環(huán)境變量的修改將不會(huì)對(duì)編譯后運(yùn)行的程序產(chǎn)生影響。

4. 應(yīng)該在運(yùn)行時(shí)使用環(huán)境變量,還是在編譯時(shí)使用環(huán)境變量?

如果環(huán)境變量不會(huì)在運(yùn)行時(shí)發(fā)生改變,且在編譯時(shí)就知道環(huán)境變量的值,那么推薦在編譯時(shí)使用環(huán)境變量。

在編譯時(shí)使用環(huán)境變量的幾個(gè)好處:

執(zhí)行cargo clippy或者cargo build,編譯器會(huì)幫你檢查你使用的環(huán)境變量名稱(chēng)是否在.env文件中定義,如果不存在,編譯器會(huì)給出提示;

相較于通過(guò)std::env::var("port").expect("port"),直接使用dotenv!("port")可以不用關(guān)注如果port沒(méi)有定義時(shí)的處理分支。

5. 如何管理環(huán)境變量的相關(guān)代碼?

建議將環(huán)境變量放在env.rs文件中。

main.rs

#[macro_use]
extern crate dotenv_codegen;
mod env;
use env::PORT;
fn main() {
    println!("port={}", PORT);
}

env.rs

pub static PORT: &str = dotenv!("port");

6. 環(huán)境變量和config如何選擇?

哈哈,這個(gè)問(wèn)題不好回答。

之前寫(xiě)了一篇Rust-使用config配置你的API

其實(shí)在config中,也支持環(huán)境變量的。它們?cè)诠δ苌隙加邢嗷ジ采w的地方。但是config支持類(lèi)型的反序列化等豐富的功能。因此,環(huán)境變量和config如何選擇,這還是由項(xiàng)目的實(shí)際情況而定吧,不必太拘泥于技術(shù),畢竟技術(shù)是為我們服務(wù)的,而不是拿給我們站隊(duì)用的。

到此這篇關(guān)于Rust-使用dotenvy加載和使用環(huán)境變量的過(guò)程詳解的文章就介紹到這了,更多相關(guān)Rust使用dotenvy加載內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Rust實(shí)現(xiàn)日志記錄功能

    使用Rust實(shí)現(xiàn)日志記錄功能

    這篇文章主要為大家詳細(xì)介紹了使用Rust實(shí)現(xiàn)日志記錄功能的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的可以參考一下
    2024-04-04
  • Rust?中的?JSON?處理利器serde_json功能詳解

    Rust?中的?JSON?處理利器serde_json功能詳解

    本文介紹Rust中serde_json庫(kù),用于JSON序列化與反序列化,支持復(fù)雜結(jié)構(gòu)及錯(cuò)誤處理,助力高效處理數(shù)據(jù)交換需求,本文給大家詳細(xì)介紹Rust中的JSON處理利器serde_json功能,感興趣的朋友一起看看吧
    2025-06-06
  • Rust中Cargo的使用詳解

    Rust中Cargo的使用詳解

    Cargo 是 Rust 的構(gòu)建系統(tǒng)和包管理器,?多數(shù) Rustacean 們使? Cargo 來(lái)管理他們的 Rust 項(xiàng)?,因?yàn)樗梢詾槟闾幚砗芏嗳蝿?wù),?如構(gòu)建代碼、下載依賴(lài)庫(kù)并編譯這些庫(kù),這篇文章主要介紹了Rust中Cargo的使用,需要的朋友可以參考下
    2022-11-11
  • rust的vector和hashmap詳解

    rust的vector和hashmap詳解

    這篇文章主要介紹了rust的vector和hashmap,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • Rust中枚舉與模式匹配的使用

    Rust中枚舉與模式匹配的使用

    本文主要介紹了Rust中枚舉與模式匹配的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-06-06
  • Rust?中?Deref?Coercion講解

    Rust?中?Deref?Coercion講解

    Rust 的設(shè)計(jì)理念一向是顯式比隱式好,也就是說(shuō)所有的行為盡量在代碼中表現(xiàn)出來(lái),這篇文章主要介紹了Rust?中?Deref?Coercion?介紹,需要的朋友可以參考下
    2022-10-10
  • Rust編寫(xiě)自動(dòng)化測(cè)試實(shí)例權(quán)威指南

    Rust編寫(xiě)自動(dòng)化測(cè)試實(shí)例權(quán)威指南

    這篇文章主要為大家介紹了Rust編寫(xiě)自動(dòng)化測(cè)試實(shí)例權(quán)威指南詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • Rust?連接?PostgreSQL?數(shù)據(jù)庫(kù)的詳細(xì)過(guò)程

    Rust?連接?PostgreSQL?數(shù)據(jù)庫(kù)的詳細(xì)過(guò)程

    這篇文章主要介紹了Rust?連接?PostgreSQL?數(shù)據(jù)庫(kù)的完整代碼,本文圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-01-01
  • 2022最新Rust變量與數(shù)據(jù)類(lèi)型講解

    2022最新Rust變量與數(shù)據(jù)類(lèi)型講解

    rust 是強(qiáng)類(lèi)型語(yǔ)言所有變量、常量都必須有明確的數(shù)據(jù)類(lèi)型,這篇文章主要介紹了Rust變量與數(shù)據(jù)類(lèi)型,需要的朋友可以參考下
    2022-11-11
  • 一步到位,教你如何在Windows成功安裝Rust

    一步到位,教你如何在Windows成功安裝Rust

    一步到位:輕松學(xué)會(huì)在Windows上安裝Rust!想快速掌握Rust編程語(yǔ)言?別再為復(fù)雜教程頭疼!這份指南將手把手帶你順利完成Windows平臺(tái)上的Rust安裝全過(guò)程,從此編碼之旅更加順暢無(wú)阻,立即閱讀,開(kāi)始你的Rust編程旅程吧!
    2024-01-01

最新評(píng)論

平陆县| 阳原县| 天全县| 天祝| 南陵县| 永福县| 蓬莱市| 旺苍县| 高台县| 连江县| 烟台市| 台中市| 嘉鱼县| 柞水县| 顺义区| 璧山县| 化州市| 元阳县| 辉县市| 大石桥市| 张掖市| 秀山| 嵩明县| 安图县| 邵阳县| 满洲里市| 通道| 高尔夫| 永寿县| 子洲县| 贵南县| 嘉峪关市| 涞源县| 鹤山市| 和硕县| 基隆市| 新密市| 江达县| 丽江市| 锦州市| 东至县|