关于Rust 使用 dotenv 来设置环境变量的问题

Rust 语言是一种高效、可靠的通用高级语言。其高效不仅限于开发效率,它的执行效率也是令人称赞的,是一种少有的兼顾开发效率和执行效率的语言。

Rust语言的特点

高性能 - Rust 速度惊人且内存利用率极高。由于没有运行时和垃圾回收,它能够胜任对性能要求特别高的服务,可以在嵌入式设备上运行,还能轻松和其他语言集成。

可靠性 - Rust 丰富的类型系统和所有权模型保证了内存安全和线程安全,让您在编译期就能够消除各种各样的错误。

生产力 - Rust 拥有出色的文档、友好的编译器和清晰的错误提示信息, 还集成了一流的工具 —— 包管理器和构建工具, 智能地自动补全和类型检验的多编辑器支持, 以及自动格式化代码等等。

在项目中,我们通常需要设置一些环境变量,用来保存一些凭证或其它数据,这时我们可以使用 dotenv 这个 crate。

首先在项目中添加 dotenv 这个依赖:

例如在下面这个项目中,需要设置数据库连接字符串和 Debug 等级这两个环境变量。在开发环境下,我们可以在项目根目录下创建 .env 这个文件:

在 .env 文件里,我们设置两个环境变量,分别是 DB_URL 和 LOG_LEVEL:

下面来到 main.rs,想要访问系统的环境变量,我们使用标准库的 std::env 即可:

这里,我们先把获取到的环境变量进行遍历和打印,然后再分别尝试打印 PATH、DB_URL 和 LOG_LEVEL 这三个环境变量的值。

结果如下:

我们可以看到,前面是遍历打印的环境变量,后边打印出了 PATH 的值。然后在尝试获取 DB_URL 值的时候程序就恐慌了,因为没有找到这个环境变量。

现在我们使用 dotenv 这个 crate:

先把 dotenv 导入,然后在程序开始的地方执行 dotenv() 函数即可,这就会从当前目录或父目录中的 .env 文件中加载环境变量。

如果你想指定其它路径,可以使用 crate 中提供的 from_filename 或 from_path 这两个函数。

好,那么调用 dotenv() 之后为什么还要调用 ok() 方法?

首先,dotenv() 返回的是 Result<PathBuf> 类型,如果返回值不使用的话,就会发出一个警告:

调用 ok() 之后,会把 Result 转化为 Option,而 Option 就不会产生未使用 Result 的警告了。

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

因为在生产环境中,你不会使用 .env 这个文件,你应该使用真实的环境变量,这时 dotenv() 函数就会加载失败,如果使用 unwrap(),那么你的程序就会停止运行。

所以这里使用 ok() 的目的就是当加载 dotenv 环境文件失败的时候可以忽略错误。

代码:

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 来设置环境变量的文章就介绍到这了,更多相关Rust 设置环境变量内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 聊聊Rust 运算符

    目录 一元运算符 二元运算符 算数操作符 位运算符 惰性 boolean 运算符 比较运算符 类型转换运算符 重载运算符 格式化字符串 一元运算符 顾名思义,一元操作符是专门对一个 Rust 元素进行操作的运算符,主要包括以下几个: - :取负,专门用于数值类型.实现了 std::ops::Neg. * :解引用.实现了 std::ops::Deref 或 std::ops::DerefMut. ! :取反.例如 !false 相当于 true.有意思的是,如果这个操作符对数字类型使用,会将其每

  • Rust 连接 PostgreSQL 数据库的详细过程

    pgxr 是一个 Rust 的 crate 库,可以实现用 Rust 语言来编写 PostgreSQL 的扩展函数(相当于存储过程). 这次,我们使用 postgres 这个 crate 来连接和操作 PostgreSQL 数据库. 创建好项目后,在 cargo.toml 里添加 postgres 的依赖: 首先,导入相关的类型,并创建一个 Person struct: 再创建 create_db 函数,用来创建数据库和表,它返回一个 Result,里面可能是 Client 或错误: 注意,Cl

  • Rust 函数详解

    目录 函数参数 函数返回值 高阶函数 函数指针类型 函数作为参数 函数作为返回值 相关资料 Rust 支持多种编程范式,但更偏向于函数式,函数在 Rust 中是"一等公民",函数可以作为数据在程序中进行传递.跟 C.C++ 一样, Rust 也有一个唯一的程序入口 main 函数. 示例:程序入口 main 函数 fn main() { println!("Hello, world!"); } Rust 使用 fn 关键字来声明和定义函数,使用 snake case

  • Rust 连接 SQLite 数据库的过程解析

    使用 Rust 语言连接操作 SQLite 数据库,我使用 rusqlite 这个 crate. 看例子: 首先,使用 cargo 创建一个 Rust 项目,然后添加依赖 rusqlite: 来到 main.rs,其余所有的代码都写在这里. 首先引入 rusqlite 相关的类型,并建立一个 Person struct: Person 有三个字段,id.name 和 data,其实本例中,我们只会用到前两个字段. 下面,编写一个用来创建数据库和 person 表的函数: 该函数会创建名为 dat

  • 关于Rust 使用 dotenv 来设置环境变量的问题

    Rust 语言是一种高效.可靠的通用高级语言.其高效不仅限于开发效率,它的执行效率也是令人称赞的,是一种少有的兼顾开发效率和执行效率的语言. Rust语言的特点 高性能 - Rust 速度惊人且内存利用率极高.由于没有运行时和垃圾回收,它能够胜任对性能要求特别高的服务,可以在嵌入式设备上运行,还能轻松和其他语言集成. 可靠性 - Rust 丰富的类型系统和所有权模型保证了内存安全和线程安全,让您在编译期就能够消除各种各样的错误. 生产力 - Rust 拥有出色的文档.友好的编译器和清晰的错误提示

  • python设置环境变量的原因和方法

    相信很多初学python的小伙伴都会遇到这样的坑:环境变量配置不好,无法正常启动python.那么环境变量究竟是个什么东西呢?为什么要设置它?下面我们来说一说. 1.什么是环境变量 引用百度百科里面的解释:环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息.看到这里我相信大家可能还是有所疑惑,但是,不急,接着看. 2.为什么需要环境变量 windows系统下,假如我们安装了某一款软件,安装结束后,在安装目录会生成一个该软件的.exe文件,双击该文件,我们就

  • python设置环境变量的作用和实例

    Python的环境变量 环境变量 说明 PYTHONSTARTUP 在交互式启动时执行的文件(无默认值) PYTHONPATH ':' - 以默认模块搜索路径为前缀的分隔目录列表.结果是sys.path. PYTHONHOME 交替的 <prefix> 目录 (或者 <prefix>:<exec_prefix>). 默认的模块搜索路径为 <prefix>/pythonX.X. PYTHONCASEOK 忽略import语句中的大小写(Windows). PY

  • Webpack设置环境变量的一些误区详解

    一.前言 日常的前端开发工作中,至少会有两套构建环境 一套开发时使用,构建结果用于本地开发调试,不进行代码压缩.打印 debug 信息.包含 sourcemap 文件等 一套发布时使用,构建结果用于线上,即代码都是压缩过的.运行时不打印 debug 信息.静态文件不包括 sourcemap 等 webpack 4.0 版本开始引入了 mode 的概念 选项 描述 development 会将 process.env.NODE_ENV 的值设为 development.启用 NamedChunks

  • linux安装jdk并设置环境变量的方法教程(看这一篇够了)

    1.查看linux位数 查看linux是32位还是64位,影响需要下载JDK的版本 系统位数 jdk位数 x86(32位) 32位 x86_64(64位) 32位 64位 在linux命令输入: uname -a 如果是64位机器,会输出x86_64 2.下载JDK 下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html 对应步骤1,下载64位的linx版本 3.安装JD

  • python设置环境变量的作用整理

    python设置环境变量有什么用? 1.设置环境变量可以在cmd命令行中找到python命令: 2.设置环境变量可以在安装exe的第三包的时候找到对应python版本路径: 3.设置环境变量可以在用pip install 包的时候找到路径. 简言之.python设置环境变量可以使命令行里面直接运行脚本.很多ide也需要你预设python环境变量,不然找不到你的python parser. 知识点扩展: Python的环境变量 环境变量 说明 PYTHONSTARTUP 在交互式启动时执行的文件(

  • 浅谈Linux下修改/设置环境变量JAVA_HOME的方法

    1. 永久修改,对所有用户有效 # vi /etc/profile //按键盘[Shift + g], 在profile文件最后添加下面的内容: JAVA_HOME=/usr/local/java/jdk1.7.0_25 JRE_HOME=$JAVA_HOME/jre CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar PATH=$JAVA_HOME/bin:$PATH export PATH JAVA_HOME JRE_HOME C

  • golang 在windows中设置环境变量的操作

    安装完成后需要在系统环境变量中设置 GOPATH为项目目录 GOROOT为安装目录 path中设置好安装目录到bin目录 打开cmd,输入go env,出现如下配置生效 补充:Golang 环境变量须知 1.前言 无论你是使用 Windows.Linux 还是 Mac 操作系统来开发 Go 应用程序,在安装好 Go 安装语言开发工具之后,都必须配置好 Go 语言开发所要求的 环境变量,才算初步完成 Go 开发环境的搭建. 但对于一些初学者来说,可能不太明白 Go 语言中常用的环境变量的作用以及如

  • Go获取与设置环境变量的方法详解

    目录 前言 01 从安装 Go 说起 02 Go 如何使用环境变量 03 小结 前言 今天的文章比较基础,但却是必须掌握的,而且本文有些内容,也许你之前没想过.希望这篇文章能够让你理解环境变量并掌握 Go 环境变量相关操作. 01 从安装 Go 说起 其实不止是安装 Go,其他语言一本也会有类似的问题.一般来说,安装完 Go 后,会建议将 go 可执行程序配置到 PATH 环境变量中. 比如我本地的 PATH 环境变量的值: $ echo $PATH /Users/xuxinhua/.go/bi

  • Java16 JDK安装并设置环境变量的方法步骤

    本文将在win10的环境下安装jdk16.配置环境变量. 1.下载JDK (1)打开官网下载最新的JDK(Java SE Development Kit, JDK) 如果官网打开过慢可以试试本地下载:下载地址 (2)选择对应的版本 (3)双击下载的exe进行安装 在安装过程中可以改变安装位置也可以不改变,但是安装的位置一定要记住!!!!这关系到后面设置环境变量.然后安装过程中其它的选项就next~ (4)配置环境变量 一共需要配置3个系统环境变量. 此电脑–属性–高级系统设置–环境变量-新建系统

随机推荐