9

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

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()返回一个Result. 那做什么ok()呢?它会解开结果吗?如果是这样,为什么不使用unwrap()

4

1 回答 1

8

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

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

为什么不使用unwrap()

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

于 2020-06-24T02:27:57.063 回答