let one = String::from("one");
let mut _it: Box<dyn Iterator<Item=char> + '_> = Box::new(one.chars());
let null = String::from("two");
_it = Box::new(null.chars());
drop(_it);
}
Я понимаю, что прикол в trait object, потому что если заменить эту вещь на просто Box<_> то всё работает, но не понимаю почему так.
Вроде, это работает так, что тип внутри бокса должен быть таким же как и справа (т.е. вывести общий dyn Iterator - нельзя)
Ну, если убрать второе присваивание _it, то тогда всё работает. Оно не компилируется с ошибкой что null дропается пока существуют на него референсы
Я не про второе присваивание. А про дефайн типа в первом месте
Обсуждают сегодня