Причина в том, что load-utf8
возвращает node!
, который ссылается на внешний строковый буфер, а не на само значение string!
.
node!
по сути является указатель, и он не соответствует структуре высокоуровневых значений Red; однако, поскольку это указатель, его можно преобразовать в указатель другого типа, например, red-value!
или любую другую структуру. Cra sh происходит, когда вы пытаетесь получить доступ к этому слоту искаженного значения.
Что касается исходного вопроса, это должно ответить на него.