>А я не понимаю. Я даже не понимаю, что ты имеешь в виду под "моделью памяти". Что за модель памяти? Что-то типа RAM, EM, VAT[1]? Нет, наверное, это всё ж теоретические модели памяти _машины_, а не языка. Или что-то типа этого[2]? Не мог бы ты поделиться ссылкой, на тот теоретический фреймворк, в который позволяет тебе выстроить модель памяти раста?Что за нелепая херня? Идёшь и гуглишь memory model в контексте раста, можешь на гитхабе в ишьюсах поискать. Там спросишь сектантов что это такое.
Нет, ни к какой машине модель памяти отношения не имеет. Это именно модель памяти языка, потому как язык где-то исполняется и у языка должны быть представления о том где. Под языком здесь понимается не то, что у языка есть какая-то память. Память есть у железяки. Понимаются именно представления языка о памяти.
У говнораста, как и у любой скриптухи - нет какой-либо модели памяти. Говнораст существует только в рамках vm и его не заботит подобное.
При этом даже по части скриптухи это не всегда так, в силучая когда скриптуха является первичной по отношению к вм, то вм считается частью языка. Допустим, поэтому если взять ту же жаву - модель памяти там жавы, хотя на самом деле jvm, потому как жава этим не занимается.
А вот если взять какой-нибудь котлин, либо любую херню поверх jvm, то никакой котлин-модели-памяти не появится. Потому как скриптуха её делегирует vm, а вторичная скриптуха не определяет vm.
Вот llvm это такая же vm, которая имеет свою модель памяти. Которая, в свою очередь, определяется сишной моделью памяти. Она куда более конкретна.
В самом же говнорасте есть два языка. Это unsafe, который не более чем другой синтаксис для си. Там сишная модель памяти, многопоточности. Сишный же интероп и прочее. Если чуть более конкретней, то это обёртка над llvm-ir, вернее llvm-кодогеном. llvm даёт билдеры для функций, агрегатов, глобалов и прочего. Исключений. Того, что есть в си. Именно поэтому в гонорвасте более ничего нет.
А сам же llvm-ir - это просто более формальная версия си. Потому как реализует его и его окружение в себе.
Далее есть safe-говнораст. Это уже обёртка под unsafe, там совершенно левая модель памяти. Она в принципе памятью не занимается, а занимается ссылками. Поэтому моделью памяти её звать жирно, а зовётся так потому, что БЧ базируется именно на ней.
Сам же БЧ - это максимально примитивное дерьмом. По-сути там есть единственный инвариант. mut ref == unique ref. Это все правила.
Из них напрямую следует запрет шаринга. !mut ref == !unique ref, т.е. ридонли-шаринг. Ридонли-шаринг не считается за шаринг, потому как проблем не имеет. Там нет ни гонок ни прочей херне, о которой тебе рассказала пропаганда.
unique ref так же не может быть шарингом. Шаринг предполагает не-уникальные ссылки. Далее unique ref == mut ref, только так в говнорасте может взяться мутабельная ссылка.