[英]How can I return a function?
我嘗試重新創建功能組合
fn compose<A, B, C>(f : |B| -> C,
g : |A| -> B)
-> |A| -> C{
|x| f(g(x))
}
但是我收到一生的錯誤。 我讀到閉包是基於堆棧的,但沒有解釋為什么我會收到此錯誤。
let f3 = compose(f1,f2);
我不能將閉包移出當前范圍嗎?
是的,Rust的當前閉包通過引用捕獲,並將閉包的環境(即對捕獲變量的引用)放置在堆棧上,通過引用對其進行引用。 因此,每當您有一個捕獲外部變量的閉包(捕獲f
和g
)時,它就被鏈接到創建它的堆棧框架。
C ++ 11樣式的無盒裝閉包通過允許按值捕獲值並允許直接存儲環境(即沒有強制引用)來解決此問題。 確切的語法尚未確定,但是您寫的內容可能是有效的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.