如果我在.to_path_buf()
之后立即调用expect
,则不会创建临时目录。这是一个bug还是Rust功能?
extern crate mktemp;
use std::path::Path;
fn main() {
let temp_dir = mktemp::Temp::new_dir().expect("Failed to create a temp directory");
let temp_dir_path = temp_dir.to_path_buf();
println!("tmp path exists: {}", Path::exists(&temp_dir_path));
let temp_dir_path = mktemp::Temp::new_dir().expect("Failed to create a temp directory").to_path_buf();
println!("tmp path exists: {}", Path::exists(&temp_dir_path));
}
哪个输出:
tmp path exists: true
tmp path exists: false
答案 0 :(得分:9)
我不知道,但我想知道the mktemp
documentation中是否有关于此事的内容......
一旦变量超出范围,就会删除基础文件系统资源。
您没有将Temp
存储在变量中,因此它会立即超出范围。它正在创建目录,然后立即销毁它。