unsafe
- это способ сказать: «Заткнись, ржавчина, я знаю, что делаю». В этом случае вы гарантируете компилятору, что v
всегда является действительным выровненным указателем на Node<T>
, что индексирование массива forward
разрешается в массив Option<*mut Node<T>>
с размером MAX_HEIGHT
. Если какое-либо из этих предположений будет нарушено, вы вернетесь в неопределенную зону поведения.
Вы отключили все средства защиты и нацелили свой компилятор на неизвестные указатели. Рациональная часть моего мозга хочет точно знать, чего вы пытаетесь достичь здесь.
Лучший совет, который я могу предложить с предоставленной информацией, - это использовать rust-gdb
и шагать по вашей программе, пока ваши указатели не будут выглядеть вменяемыми.