The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Фронтэнд для языка Rust доведён до готовности для интеграции..."
Отправлено Аноним, 08-Дек-22 16:24 
> компилятор зачем-то перемещает состояние, когда копирование запрещено?

Компилятор перемещает, потому что я попросил его переместить значение. Я в курсе что Copy не реализован для Box'а, в этом фишка Box'а, это смарт-поинтер, а не член собачий. Box гарантирует, что он будет в единственном экземпляре. Если бы мне нужно было клонировать, я бы сделал:

let j = i.clone();

Но тогда я бы получил вторую аллокацию памяти и в i и j лежали бы разные Box<i32>, которые по значению бы совпадали, но были бы разные. В терминах lisp'а, они были бы equal, но не eq.

> Причем делает это неявно,

Да, это дефолтное поведение типов в ответ на =, описанное в любом материале для личинок растоманов. Clone и Copy -- это дополнительные трейты, которые разработчик этих типов может навешивать на них, а может нет. Таким образом move -- это дефолт в расте.

Но это иррелевантно нашему разговору, разговор о том, что UB не возникает. И ты так и не придумал, как его создать на смарт-поинтерах.

Или может не совсем иррелевантно... Это ведь суть отличий смарт-поинтеров C++ и Rust'а, так? Та самая суть которая делает смарт-поинтеры Rust'а смарт-поинтерами, и оставляет смарт-поинтеры C++ членами собачьими.

> даже не выдавая диагностики.

Ты в глаза долбишься, или что? Я тебе привёл диагностику. Не всю, там ещё хинты всякие для нубов, что можно сделать чтобы код скомпилировался, но я и не стал копировать.

> Хотя C++, например, это вообще-то ошибка компиляции, и компилятор обязан выдать диагностику.

В C++ это не ошибка компиляции, выше по треду есть аналогичный C++ код, и компилятор C++ его радостно компилирует и выдаёт на выходе бинарь. А вот в Rust'е это ошибка, и раст как раз выдаёт ошибку компиляции и диагностику.

Ты чо, крeмлeвcкoй пpoпaгaнgы пересмотрел, и решил что обвинять других в своих грехах -- это хороший способ вести дискуссию? Нет, это может быть эффективным способом пpoпaгaнgы -- не знаю, но в дискуссии тебя будут макать в чан с известной субстанцией за каждую такую попытку.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру