dotenv().ok() 有什么作用?

ele*_*ory 6 rust rust-result

我在 PostgreSQL 中使用 Diesel ORM 包装器。我正在关注他们网站上的指南,其中包含以下代码:

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))
}
Run Code Online (Sandbox Code Playgroud)

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

She*_*ter 6

这是一种忽略因加载 dotenv 环境文件失败而导致的错误的方法。

dotenv()返回一个Result. Result::ok将 转换ResultOption. 这Option不会触发有关未使用的警告Result

为什么不使用 unwrap()

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