亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

是否有任何方法返回對在函數中創建的變量的引用?

是否有任何方法返回對在函數中創建的變量的引用?

Smart貓小萌 2019-06-03 13:15:55
是否有任何方法返回對在函數中創建的變量的引用?我想要寫一個程序,將寫一個文件在兩個步驟。在程序運行之前,該文件很可能不存在。文件名是固定的。問題是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");

如果文件還不存在,將創建該文件,這將解決您原來的問題。


查看完整回答
反對 回復 2019-06-03
  • 2 回答
  • 0 關注
  • 615 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號