#![feature(coroutine_trait)] #![feature(coroutines)] #![allow(unused)] use std::ops::Coroutine; use std::ops::CoroutineState; use std::pin::pin; fn mk_static(s: &str) -> &'static str { let mut storage: Option<&'static str> = None; let mut coroutine = pin!(|_: &str| { let x: &'static str = yield (); //~^ ERROR lifetime may not live long enough storage = Some(x); }); coroutine.as_mut().resume(s); coroutine.as_mut().resume(s); storage.unwrap() } fn main() { let s = mk_static(&String::from("hello, world")); println!("{s}"); }