1 个不稳定版本

0.0.1 2023年11月6日

#8 in #temporarily

Download history 89/week @ 2024-03-14 47/week @ 2024-03-21 68/week @ 2024-03-28 20/week @ 2024-04-04 1/week @ 2024-04-11 63/week @ 2024-04-18 20/week @ 2024-04-25 127/week @ 2024-05-02 13/week @ 2024-05-09 76/week @ 2024-05-16 11/week @ 2024-05-23 10/week @ 2024-05-30 14/week @ 2024-06-06 36/week @ 2024-06-13 6/week @ 2024-06-20 3/week @ 2024-06-27

每月 60 次下载
3 crates 中使用

MIT/Apache

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