2020年11月9日のブックマーク (1件)

  • FnBoxについて - 簡潔なQ

    Rustの FnBox について、動機・仕組み・問題点を説明する。 FnBox の動機 以前の記事では、「「クロージャを boxせずに 返したい」という欲求は人類の四大欲求のひとつと言われている。 」と書いたが、出所の異なるクロージャを同じ型で扱う必要がある場合は無理せず Box に入れるべきである。 例えば、非同期処理など、継続渡し形式で何らかの処理をする場合は、一般に生のクロージャでは使い勝手が悪い。おもちゃ的な例として、フィボナッチ数列の計算を継続渡し形式で行うことを考える。以下のように書くとうまくいかない。 fn fib_cont<T, F: Fn(u32) -> T>(n: u32, continuation: F) -> T { if n <= 1 { continuation(n) } else { fib_cont(n - 1, |a| { fib_cont(n - 2,

    FnBoxについて - 簡潔なQ
    letitride
    letitride 2020/11/09
    The Rust Programming Language を学習している時に辿り着いた記事。Box<FnOnce()>の所有権についての説明。