В коде необходимо обеспечить уникальность курсора ’ & mut Cursor’ он бережно передается от одного объекта некоторого состояния, другому.
Одним из таких объектов является структура Items которая в себе содержит ссылку на Cursor и массив с дополнительными параметрами описывающими координаты курсора.
Вроде в чате уже ответили, но это правда UB и компилятор имеет право что угодно тебе поломать оптимизациями из-за этого. Если оно работает сейчас, то совершенно спокойно и без предупреждений может сломаться в следующих версиях компилятора или при сборке под другие ОС. Плюсую мнение что тут надо просто скопировать эти три usize’а, это очень дешевая операция, которую компилятору еще и соптимизировать просто.
большое спасибо
но пошел по другому пути
разломил Items на две части совсем выкусил массив dims
пользователь будет вынужден самостоятельно создать его, поскольку метод next() будет этого требовать
мой код несколько иначе работает.
в методе next происходит мутация и курсора и дополнительной информации одновременно. так вот, трабл в том, что в этот момент Items залочен ибо &mut self и он передан в возвращенный экземпляр Values
соответственно к dims тоже доступа нет.
да и панику словить в рантайме тоже… так себе удовольствие
если будет интересно разобраться могу выложить код полностью.
есть какая то магия в Rust, заставляющая искать более лучшие решения.