我在 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()?
这是一种忽略因加载 dotenv 环境文件失败而导致的错误的方法。
dotenv()返回一个Result. Result::ok将 转换Result为Option. 这Option不会触发有关未使用的警告Result。
为什么不使用
unwrap()
因为你不希望它失败。在生产中,你应该不会有一个环境的文件,而不是你会用实际的环境变量。如果您unwrapped,那么您的服务将立即在生产中失败。不幸的是,这发生在我身上。