是否有任何方法返回對(duì)在函數(shù)中創(chuàng)建的變量的引用?我想要寫一個(gè)程序,將寫一個(gè)文件在兩個(gè)步驟。在程序運(yùn)行之前,該文件很可能不存在。文件名是固定的。問(wèn)題是OpenOptions.new().write()可能會(huì)失敗。在這種情況下,我想調(diào)用一個(gè)自定義函數(shù)。trycreate()..這樣做的目的是創(chuàng)建文件,而不是打開(kāi)它并返回一個(gè)句柄。既然文件名是固定的,trycreate()沒(méi)有參數(shù),并且我不能設(shè)置返回值的生存期。我如何解決這個(gè)問(wèn)題?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貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超10個(gè)贊
有沒(méi)有任何方法可以在沒(méi)有參數(shù)的情況下從函數(shù)返回引用?
OpenOptions::create
main
let f = OpenOptions::new().write(true).create(true).open(b"foo.txt");
- 2 回答
- 0 關(guān)注
- 612 瀏覽
添加回答
舉報(bào)
0/150
提交
取消