是否有任何方法返回對在函數中創建的變量的引用?我想要寫一個程序,將寫一個文件在兩個步驟。在程序運行之前,該文件很可能不存在。文件名是固定的。問題是OpenOptions.new().write()可能會失敗。在這種情況下,我想調用一個自定義函數。trycreate()..這樣做的目的是創建文件,而不是打開它并返回一個句柄。既然文件名是固定的,trycreate()沒有參數,并且我不能設置返回值的生存期。我如何解決這個問題?use std::io::Write;use std::fs::OpenOptions;use std::path::Path;fn trycreate() -> &OpenOptions {
let f = OpenOptions::new().write(true).open("foo.txt");
let mut f = match f {
Ok(file) => file,
Err(_) => panic!("ERR"),
};
f}fn main() {
{
let f = OpenOptions::new().write(true).open(b"foo.txt");
let mut f = match f {
Ok(file) => file,
Err(_) => trycreate("foo.txt"),
};
let buf = b"test1\n";
let _ret = f.write(buf).unwrap();
}
println!("50%");
{
let f = OpenOptions::new().append(true).open("foo.txt");
let mut f = match f {
Ok(file) => file,
Err(_) => panic!("append"),
};
let buf = b"test2\n";
let _ret = f.write(buf).unwrap();
}
println!("Ok");}
2 回答

隔江千里
TA貢獻1906條經驗 獲得超10個贊
有沒有任何方法可以在沒有參數的情況下從函數返回引用?
OpenOptions::create
main
let f = OpenOptions::new().write(true).create(true).open(b"foo.txt");
- 2 回答
- 0 關注
- 615 瀏覽
添加回答
舉報
0/150
提交
取消