2015-06-30 87 views
2

由於市電返回類型是一個空元組(),是否認爲在fn main()中使用return;?我想結束我的節目,但不想panic!,我只想冷靜地結束。有沒有一個標準的方式來儘早結束主要?或者這可以嗎?我來自C++背景,如果你需要從一個不返回任何值的函數提前返回,你可能可能不應該使用void開始,所以我想知道這是否與main()沒有返回類型?可以返回主頁嗎?

fn main() { 
    // ... 

    // if no cline args display usage and end 
    if matches.free.is_empty() { 
     print_usage(&program, options); 
     return; 

    // program continues 
} 

回答

5

這樣在語言層面很好地返回像這樣早。在這種情況下,您可能還會喜歡std::process::exit函數,該函數還允許設置進程的返回碼。

+1

當你使用'std :: process :: exit'時,析構函數會被調用嗎? – WiSaGaN

+4

@WiSaGaN:「請注意,因爲此函數從不返回,並且它終止進程,所以當前堆棧或任何其他線程的堆棧上的析構函數都不會運行。如果需要乾淨的關閉,建議只在沒有更多析構函數可以運行的已知點上調用此函數。「 –

+3

任何我們無法簡單地像往常一樣從主函數返回錯誤代碼的原因? 'std :: process :: exit'看起來相當麻煩。 – PureW