亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

系統(tǒng)的開發(fā),測(cè)試和部署離不開環(huán)境變量,今天分享在Rust的系統(tǒng)開發(fā)中,使用dotenvy來讀取和使用環(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() {
    ...
}

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

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

項(xiàng)目實(shí)戰(zhàn)相關(guā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的編程開發(fā)中,我個(gè)人不建議處理錯(cuò)誤的地方,讓錯(cuò)誤以panic的方式終止系統(tǒng)運(yùn)行。如果當(dāng)前環(huán)境下不存在.env文件,系統(tǒng)應(yīng)該停止運(yùn)行,直至修復(fù)錯(cuò)誤。這里的原則是停下來什么都不做,總比運(yùn)行起來產(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)境變量寫入了,所以,對(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)境變量名稱是否在.env文件中定義,如果不存在,編譯器會(huì)給出提示;

相較于通過std::env::var("port").expect("port"),直接使用dotenv!("port")可以不用關(guān)注如果port沒有定義時(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è)問題不好回答。

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

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

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

相關(guān)文章

  • 深入了解Rust的生命周期

    深入了解Rust的生命周期

    生命周期指的是引用保持有效的作用域,Rust?的每個(gè)引用都有自己的生命周期。本文將通過示例和大家詳細(xì)說說Rust的生命周期,需要的可以參考一下
    2022-11-11
  • rust類型轉(zhuǎn)換的實(shí)現(xiàn)

    rust類型轉(zhuǎn)換的實(shí)現(xiàn)

    Rust是類型安全的語言,因此在Rust中做類型轉(zhuǎn)換不是一件簡(jiǎn)單的事,本文主要介紹了rust類型轉(zhuǎn)換的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12
  • Rust 語言中的dyn 關(guān)鍵字及用途解析

    Rust 語言中的dyn 關(guān)鍵字及用途解析

    在Rust中,"dyn"關(guān)鍵字用于表示動(dòng)態(tài)分發(fā)(dynamic dispatch),它通常與trait對(duì)象一起使用,以實(shí)現(xiàn)運(yùn)行時(shí)多態(tài), 在Rust中,多態(tài)是通過trait和impl來實(shí)現(xiàn)的,這篇文章主要介紹了Rust 語言中的 dyn 關(guān)鍵字,需要的朋友可以參考下
    2024-03-03
  • 一文弄懂Rust之切片

    一文弄懂Rust之切片

    在Rust中,切片是一種非常重要的引用類型,它允許你安全地引用一段連續(xù)內(nèi)存中的數(shù)據(jù),而不需要擁有這些數(shù)據(jù)的所有權(quán),本文主要介紹了Rust之切片,感興趣的可以了解一下
    2024-03-03
  • Rust的泛型、Traits與生命周期用法及說明

    Rust的泛型、Traits與生命周期用法及說明

    本文通過一個(gè)尋找列表中最大值的示例,展示了如何從重復(fù)代碼中提取函數(shù),再利用泛型實(shí)現(xiàn)代碼復(fù)用,主要步驟包括:識(shí)別重復(fù)邏輯;抽象提?。环盒蛻?yīng)用;進(jìn)一步擴(kuò)展,通過不斷抽象和泛化,我們不僅能減少代碼重復(fù),還能寫出更通用、健壯和可維護(hù)的代碼
    2025-02-02
  • Rust中的引用循環(huán)與內(nèi)存泄漏詳解

    Rust中的引用循環(huán)與內(nèi)存泄漏詳解

    這篇文章主要介紹了在Rust中如何使用Rc和RefCell來創(chuàng)建引用循環(huán),以及引用循環(huán)可能導(dǎo)致的內(nèi)存泄漏問題,文章還討論了如何使用Weak類型來解決引用循環(huán)問題,特別是在需要雙向引用的場(chǎng)景中,如樹形結(jié)構(gòu),通過理解和掌握這些智能指針的使用,可以編寫更高效且內(nèi)存安全的Rust程序
    2025-02-02
  • Rust Option類型基本使用詳解

    Rust Option類型基本使用詳解

    Rust的Option是一種強(qiáng)大的類型,用于處理可能為空的情況,避免了許多空值引起的運(yùn)行時(shí)錯(cuò)誤,本文介紹Rust Option類型詳解,感興趣的朋友一起看看吧
    2024-02-02
  • 詳解Rust Substrate框架中的Runtime

    詳解Rust Substrate框架中的Runtime

    ubstrate是一個(gè)區(qū)塊鏈開發(fā)框架,它提供了一系列模塊化和可擴(kuò)展的組件,可以幫助開發(fā)人員快速構(gòu)建自定義區(qū)塊鏈。 Runtime是Substrate區(qū)塊鏈的核心部分,文中有詳細(xì)的代碼示例,需要的朋友可以參考下
    2023-05-05
  • 關(guān)于rust的模塊引入問題

    關(guān)于rust的模塊引入問題

    Rust 語言是一種高效、可靠的通用高級(jí)語言,它的執(zhí)行效率也是令人稱贊的,是一種少有的兼顧開發(fā)效率和執(zhí)行效率的語言,這篇文章主要介紹了rust的模塊引入相關(guān)知識(shí),需要的朋友可以參考下
    2022-10-10
  • 聊聊Rust 運(yùn)算符

    聊聊Rust 運(yùn)算符

    運(yùn)算符 用于對(duì)數(shù)據(jù)執(zhí)行一些操作。被運(yùn)算符執(zhí)行操作的數(shù)據(jù)我們稱之為操作數(shù)。下面通過本文給大家介紹Rust 運(yùn)算符的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2021-11-11

最新評(píng)論