1 个不稳定版本
0.0.1 | 2023年11月6日 |
---|
#8 in #temporarily
每月 60 次下载
在 3 crates 中使用
16KB
294 行
pushd
一个用于临时更改当前工作目录的简单库。
用法
将以下内容添加到您的 Cargo.toml
[dependencies]
pushd = "0.0.1"
示例
use anyhow::Result
use std::path::PathBuf;
use pushd::Pushd;
fn main() -> Result<()> {
write_in_etc()?;
// Current working directory is whatever it was before the call to
// `write_in_etc`.
}
fn write_in_etc() -> Result<()> {
let path = PathBuf::new("/etc");
let _pd = Pushd::new(path)?;
// Current working directory is now /etc
//
// Do something in /etc.
}
lib.rs
:
此 crate 提供了一个 Pushd
类型,它临时更改当前目录。
当创建一个 Pushd
结构体时,它将调用 env::set_current_dir
以更改到指定的目录。当 Pushd
被丢弃时,它将切换回原始目录。
如果原始目录不存在,则忽略此错误,因为这可能是原始目录是临时目录的原因。丢弃期间发生的所有其他错误默认会导致恐慌,但可以通过使用 Pushd::new_no_panic
构造函数完全禁用恐慌。
示例
use pushd::Pushd;
use std::path::PathBuf;
fn in_directory(path: PathBuf) {
// When the current function exits and this variable is dropped, the
// current directory will revert back to whatever it was before this
// `Pushd` was created.
let _pd = Pushd::new(path);
// ...
}
恐慌
如果 Pushd
在丢弃时无法切换回原始目录,则可能会引发恐慌。使用 new_no_panic
构造函数来防止这种情况。
依赖关系
~0.4–0.9MB
~20K SLoC