ライフと借りたポイントで困っています。マニュアルを読み、ポインターのチュートリアルを借りましたが、まだ行き詰まっています。
のスケッチmain.rs
fn main() {
let (db_child, repo_child):(DuplexStream<~str, ~str>, DuplexStream<~str, ~str>) = DuplexStream();
do spawn {
slurp_repos(&repo_child);
}
}
のスケッチrepos.rs
fn slurp_repos(chan: &'static DuplexStream<~str, ~str>) {
...
do request.begin |event| {
...
chan.send(api_url);
}
}
これらのモジュールをコンパイルすると、main.rs に次のエラーが表示されます。
main.rs:21:20: 21:31 error: borrowed value does not live long enough
main.rs:21 slurp_repos(&repo_child);
^~~~~~~~~~~
note: borrowed pointer must be valid for the static lifetime...
main.rs:13:10: 1:0 note: ...but borrowed value is only valid for the block at 13:10
error: aborting due to previous error
DuplexStreams の有効期間を静的に宣言する方法がよくわかりません。あるいは、これは slurp_repos の関数型での間違った方法だったのかもしれません。
完全なコンテキストを表示する場合: