title: (tokio::spawn) borrowed value does not live long enough -- argument requires that `sleepy` is borrowed for `'static`
body: <p>This MWE shows the use of <code>tokio::spawn</code> in <code>for in</code> loop.  The commented code <code>sleepy_futures.push(sleepy.sleep_n(2));</code> works fine, but does not run/poll the async function.</p>
  <p>Basically, I would like to run a bunch of async functions at the same time.  I am happy to change the implementation of <code>Sleepy</code> or use another library/technique.</p>
  <pre class="lang-rust prettyprint-override"><code>pub struct Sleepy;
  impl Sleepy {
      pub async fn sleep_n(self: &amp;Self, n: u64) -&gt; String {
          sleep(Duration::from_secs(n));
          &quot;test&quot;.to_string()
      }
  }
  
  #[tokio::main(core_threads = 4)]
  async fn main() {
      let sleepy = Sleepy{};
  
      let mut sleepy_futures = vec::Vec::new();
      for _ in 0..5 {
          // sleepy_futures.push(sleepy.sleep_n(2));
          sleepy_futures.push(tokio::task::spawn(sleepy.sleep_n(2)));
      }
  
      let results = futures::future::join_all(sleepy_futures).await;
      for result in results {
          println!(&quot;{}&quot;, result.unwrap())
      }
  }
  </code></pre>