В настоящее время я создаю приложение с основным циклом.Настройки добавляются в структуру в качестве ссылок, чтобы избежать упаковки.Проблема в том, что, несмотря на то, что программа проверки заимствований кажется совершенно корректной, она не проверяет бесконечные циклы.В качестве примера, это не компилируется:
struct Demo<'a> {
data: Vec<&'a u8>,
}
impl<'a> Demo<'a> {
fn new(data: Vec<&'a u8>) -> Self {
Demo { data }
}
fn bug(mut self) -> ! {
let a = 8;
{
self.data.push(&a);
{
self.forever();
}
}
}
fn forever(self) -> ! {
loop {
for dat in &self.data {
println!("{}", dat);
}
}
}
}
fn main() {
let v = vec![&1, &1, &2, &3];
Demo::new(v).bug();
}
Мой вопрос: как я могу реорганизовать приведенный выше код, чтобы избежать упаковки данных, но при этом иметь возможность использовать основной цикл.