在Rust中`mktemp`箱子的行为不一致

qwe*_*iop 3 rust

如果我.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));                                                                                                                                          
}
Run Code Online (Sandbox Code Playgroud)

哪个输出:

tmp path exists: true
tmp path exists: false
Run Code Online (Sandbox Code Playgroud)

DK.*_*DK. 9

我不知道,但我不知道是否有什么东西在mktemp文档这个...

一旦变量超出范围,就会删除基础文件系统资源.

您没有将Temp变量存储在变量中,因此它会立即超出范围.它正在创建目录,然后立即销毁它.