dotenv().ok() 是做什么的?

What does dotenv().ok() do?

我正在将 Diesel ORM 包装器与 PostgreSQL 一起使用。我正在关注 the guide on their website,其中包含以下代码:

pub fn establish_connection() -> PgConnection {
     dotenv().ok();

     let database_url = env::var("DATABASE_URL")
         .expect("DATABASE_URL must be set");
     PgConnection::establish(&database_url)
         .expect(&format!("Error connecting to {}", database_url))
}

我通过 dotenv 文档了解了 dotenv() 的作用——它加载了 env 文件。在源代码中我看到 dotenv() returns 一个 Result。那么 ok() 做什么呢?它会打开结果吗?如果是这样,为什么不使用 unwrap()

这是一种忽略由于未能加载 dotenv 环境文件而引起的错误的方法。

dotenv()returns一个Result. Result::ok converts the Result into an Option。此 Option 不会触发有关未使用 Result.

的警告

why not use unwrap()

因为你不希望它失败。在生产中,您应该 而不是 有一个环境文件,而是使用实际的环境变量。如果您 unwrapped,那么您的服务将立即在生产环境中失败。不幸的是,这发生在我身上。