Можно ли клонировать переменную типа std::ops::Generator
? Есть генератор, я хочу создать новый экземпляр, с чистым стеком, метода clone()
нет. Я пробовал внутри Box
и внутри Pin
, но он не клонируется!
#![feature(generators, generator_trait)]
fn main() {
let gen = move || yield ();
let gen1 = gen.clone();
let gen = Box::new(move || yield ());
let gen1 = gen.clone();
let gen = Box::pin(move || yield ());
let gen1 = gen.clone();
}
error[E0599]: no method named `clone` found for type `[generator@src/main.rs:4:15: 4:31 _]` in the current scope
--> src/main.rs:6:20
|
6 | let gen1 = gen.clone();
| ^^^^^
Насколько я понимаю, замыкания могут быть клонированы; что не так с генераторами?
Единственный найденный мной обходной путь - вернуть генератор из какой-то функции (тогда он будет каждый раз новым), но это синтаксически неудобно для меня.