Rust如何與問號運算子 友好相處?

時間 2021-06-04 01:48:00

1樓:

Failure 庫可以自動轉換錯誤到統一的型別,所以可以簡單地返回。並且還能用好幾種模式來處理錯誤(合併不同的錯誤返回是其中一種模式),詳見庫本身的教程。

rust-lang-nursery/failure最後一種最複雜的模式 An Error and ErrorKind pair,看教程都沒看懂,別人給我發了乙個的例項:bluejekyll/trust-dns

另外就是眾所周知,Rust 1.26 可以在 main 裡面返回 Result 了。

2樓:

#![cfg_attr(not(debug_assertions), no_main)]

#[macro_use]

extern

crate

porus

;prelude!(

solve

);fn

solve

()-> Result

<(),Error

>其他問題等以後再解決了。

3樓:juu wiio

乙個專案至少乙個自定義的Error型別,把可能遇到的Error全轉換成這乙個,通常就是用error_chain,定義乙個errors模組,函式的返回型別都寫errors::Result

如果只是返回Result已經可以寫得非常清爽了,直接用?;寫future啥的目前還需要手動map_err(From::from)

至於main函式裡如F001所說已經有RFC了,error_chain也提供quick_main巨集

4樓:F001

main 函式返回型別的問題,已經有了 RFC rust-lang/rfcs 。正在實現過程中,Rust core team 有手把手的教程 Tracking issue for RFC 1937: `?

` in `main` · Issue #43301 · rust-lang/rust。

至於怎麼把不同的 error 型別統一起來,最簡單的辦法應該就是用 `Box`。

如何過載 運算子?

XZiar operator返回乙個double 或者不就夠了,使用時裡的第二個是指標自帶。不過存多維陣列的話我還是推薦扁平化 C 怎麼實現效率盡可能高地帶邊界檢查的多維陣列模板類? 果凍蝦仁 與其過載不如過載 你所需要的操作它都能滿足,而且也不失優雅。這種表達,很容易聯想到一種資料型別,那就是矩陣...

Java中如何對變數使用與或運算子。?

快樂領讀 1 與運算子 與運算子用符號 表示,其使用規律如下 兩個運算元中位都為1,結果才為1,否則結果為0,例如下面的程式段。public class data13 執行結果 a 和b 與的結果是 128 下面分析這個程式 a 的值是129,轉換成二進位制就是10000001,而 b 的值是128...

python如何實現左側的運算子過載?

Kittyhawk 先從myob 1說起,假設myob屬於Myob類,這裡我們過載了 mul class Myob def mul self val print mul 過載了 mul 後我們就可以順利實現myob 1,結果是列印出 mul 但如果把兩者換一下位,1 myob,就會報錯了。這是因為1...