You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: main.rs
    path of file: ./repos/rust-bible/part4/async-future-demo/src
    
    the code of the file until where you have to start completion: // `block_on` blocks the current thread until the provided future has run to
// 
    
async fn do_more_tasks() {
    let f1 = learn_and_sing();
    let f2 = dance();
    // 下面的join! 类似于.await ,但他可以等待多个 future 并发完成
    // 如果说f1有了短暂的阻塞，这个时候f2 就会接管当前的线程
    // 如果f2执行时候发生了阻塞，f1就会接管执行
    // 等待f1,f2完成，f1,f2可以并发执行
    futures::join!(f1, f2);
}