The OpenNET Project / Index page

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



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

Исходное сообщение
"Выпуск языка программирования Rust 1.55"
Отправлено Аноним, 12-Сен-21 20:19 
>> Всё что угодно большое ты не будешь передавать "по-значению" без передачи владения, которая позволит избежать копирования. Если владение не передаётся, то компилятор вынужден создавать копию, дабы не было бы двух одновременных ссылок.

По значению передавать не буду, буду передавать другими способами, но передавать владение при этом вовсе не обязательно. Передача владения по-умолчанию приводит к борьбе программиста с борроу-чекером.
А где сказано, что компилятору (даже расту) нельзя создать несколько "одновременных ссылок"? В С++ такого ограничения вообще нет.

>> WindowBuilder

Да, для этого примера, передача владения работает как некая оптимизация, но это не единственный метод который позволяет избежать копирования в таком паттерне. В часности, компилятор С++ может выполнять технику "избежания копирования": https://en.wikipedia.org/wiki/Copy_elision#Return_value_opti...

>> String::from_utf8(vec: Vec<u8>) -> Result<String, FromUTF8Error>

Тут описан очень частный случай. Тк. если создается уникод-строка, то чаще всего под неё понадобится больше памяти чем есть у "vec" и выделять новый блок памяти всё-равно придется.
Если же String остается в UTF8 представлении, то эта функция - просто преобразование типов, которая скомпилируется в no-op. С точки зрения оптимизации, передача владения тут - сомнительная необходимость.

>> что будет если ты сделаешь:
>> string s = "хеллоувролд";
>> foo(std::move(s));
>> std::cout << s << std::endl;

Ничего "такого" не будет, cout "напечатает" пустую строку.

>> C++ программисты не любят внешние API

Откуда такая уверенность?

>> проще навелосипедить своё;

Это зависит от конкретной ситуации, бывает что проще своё написать.

>> надо чтобы вызывающий код понимал как и что надо делать, чтобы не наступить на грабли.

Да, надо. Читайте документацию (и документируйте свой АПИ).

 

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



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

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