網(wǎng)站首頁 編程語言 正文
Rust 語言是一種高效、可靠的通用高級語言。其高效不僅限于開發(fā)效率,它的執(zhí)行效率也是令人稱贊的,是一種少有的兼顧開發(fā)效率和執(zhí)行效率的語言。
Rust語言的特點(diǎn)
高性能 - Rust 速度驚人且內(nèi)存利用率極高。由于沒有運(yùn)行時和垃圾回收,它能夠勝任對性能要求特別高的服務(wù),可以在嵌入式設(shè)備上運(yùn)行,還能輕松和其他語言集成。
可靠性 - Rust 豐富的類型系統(tǒng)和所有權(quán)模型保證了內(nèi)存安全和線程安全,讓您在編譯期就能夠消除各種各樣的錯誤。
生產(chǎn)力 - Rust 擁有出色的文檔、友好的編譯器和清晰的錯誤提示信息, 還集成了一流的工具 —— 包管理器和構(gòu)建工具, 智能地自動補(bǔ)全和類型檢驗(yàn)的多編輯器支持, 以及自動格式化代碼等等。
在項(xiàng)目中,我們通常需要設(shè)置一些環(huán)境變量,用來保存一些憑證或其它數(shù)據(jù),這時我們可以使用 dotenv 這個 crate。
首先在項(xiàng)目中添加 dotenv 這個依賴:
例如在下面這個項(xiàng)目中,需要設(shè)置數(shù)據(jù)庫連接字符串和 Debug 等級這兩個環(huán)境變量。在開發(fā)環(huán)境下,我們可以在項(xiàng)目根目錄下創(chuàng)建 .env 這個文件:
在 .env 文件里,我們設(shè)置兩個環(huán)境變量,分別是 DB_URL 和 LOG_LEVEL:
下面來到 main.rs,想要訪問系統(tǒng)的環(huán)境變量,我們使用標(biāo)準(zhǔn)庫的 std::env 即可:
這里,我們先把獲取到的環(huán)境變量進(jìn)行遍歷和打印,然后再分別嘗試打印 PATH、DB_URL 和 LOG_LEVEL 這三個環(huán)境變量的值。
結(jié)果如下:
我們可以看到,前面是遍歷打印的環(huán)境變量,后邊打印出了 PATH 的值。然后在嘗試獲取 DB_URL 值的時候程序就恐慌了,因?yàn)闆]有找到這個環(huán)境變量。
現(xiàn)在我們使用 dotenv 這個 crate:
先把 dotenv 導(dǎo)入,然后在程序開始的地方執(zhí)行 dotenv() 函數(shù)即可,這就會從當(dāng)前目錄或父目錄中的 .env 文件中加載環(huán)境變量。
如果你想指定其它路徑,可以使用 crate 中提供的 from_filename 或 from_path 這兩個函數(shù)。
好,那么調(diào)用 dotenv() 之后為什么還要調(diào)用 ok() 方法?
首先,dotenv() 返回的是 Result<PathBuf> 類型,如果返回值不使用的話,就會發(fā)出一個警告:
調(diào)用 ok() 之后,會把 Result 轉(zhuǎn)化為 Option,而 Option 就不會產(chǎn)生未使用 Result 的警告了。
那么,為什么不使用 unwrap()?
因?yàn)樵谏a(chǎn)環(huán)境中,你不會使用 .env 這個文件,你應(yīng)該使用真實(shí)的環(huán)境變量,這時 dotenv() 函數(shù)就會加載失敗,如果使用 unwrap(),那么你的程序就會停止運(yùn)行。
所以這里使用 ok() 的目的就是當(dāng)加載 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()); }
原文鏈接:https://www.cnblogs.com/yangxu-pro/p/15831888.html
相關(guān)推薦
- 2022-04-19 C#中Task.ContinueWith連續(xù)任務(wù)使用實(shí)例_C#教程
- 2022-09-09 Python?cv.Canny()方法參數(shù)與使用方法_python
- 2022-07-26 Python文件處理、os模塊、glob模塊_python
- 2022-06-07 FreeRTOS實(shí)時操作系統(tǒng)結(jié)構(gòu)示例_操作系統(tǒng)
- 2022-08-18 nginx之queue的具體使用_nginx
- 2022-08-04 Unity中協(xié)程IEnumerator的使用方法介紹詳解_C#教程
- 2022-07-12 element表格循環(huán)校驗(yàn),確保數(shù)據(jù)不重復(fù)
- 2022-07-20 關(guān)于numpy強(qiáng)制類型轉(zhuǎn)換的問題_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支