use futures::executor::block_on; struct Song { lyric: String, } async fn learn_and_sing() { let song = learn_song().await; sing_song(song).await; } async fn learn_song() -> Song { let song = Song { lyric: String::from("La la la...") } println!("Learned song"); return song; } async fn sing_song(song: Song) {{ println!("{}", song.lyric); }} async fn dance() { println!("Dance"); } async fn async_main(){ let f1 = learn_and_sing(); let f2 = dance(); futures::join!(f1, f2); } fn main(){ block_on(async_main()); }
to use `async fn`, switch to Rust 2018 or later
2015 Rustだと使えない模様
c++の非同期処理
#include <iostream> #include <future> int main() { std::promise<int> pr; std::future<int> ft = pr.get_future(); pr.set_value(100); int i = ft.get(); std::cout << i << std::endl; }