我正在try 将一个PathBuf转换成一个字符串,这样就可以将它插入到CLI程序中调试文件未找到错误的死机!()消息中(根据Rust Book的第12章).
StackOverflow上的当前解决方案在使用env::current_dir().unwrap().to_string_lossy()
时返回Cow<str>
,或者在使用env::current_dir().unwrap().into_os_string().to_str()
时返回Option<&str>
.
这些类型不能提供给Panic!()宏,并且会引发编译器错误.
以下是当前代码:
let args: Vec<String> = env::args().collect();
let cwd = env::current_dir().unwrap().into_os_string().to_str();
if args.len() < 3 {
panic!("Not enough arguments, give a query argument and a file path. Current working directory is {cwd}");
}
目前,我try 使用一个Option<&str>
的"if let"语句来提取"str",但borrow 判断器阻止我使用它:
let pwd: String;
if let Some(str) = cwd {
let pwd = str.into_string();
}
println!("{pwd}");