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()
因为你不希望它失败。在生产中,您应该 而不是 有一个环境文件,而是使用实际的环境变量。如果您 unwrap
ped,那么您的服务将立即在生产环境中失败。不幸的是,这发生在我身上。
我正在将 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()
因为你不希望它失败。在生产中,您应该 而不是 有一个环境文件,而是使用实际的环境变量。如果您 unwrap
ped,那么您的服务将立即在生产环境中失败。不幸的是,这发生在我身上。