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;
}
	 
					 
