Re[2]: Send but not Sync
От: johny5 Новая Зеландия
Дата: 30.11.22 09:59
Оценка:
Здравствуйте, ArtDenis, Вы писали:

AD>Здравствуйте, johny5, Вы писали:


J>>Какие ещё "умные указатели" в Расте есть, возможно даже нестандартные?


AD>Без всяких умных укахателей ты можешь мувать объекты в поток, если они не содержат полей, которые явно запрещены для Send.


Упс, забыл про один аспект, что данные должны быть shared, RefCell<> отлично туда подходил.

И пока писал, понял свою ошибку. Компилятор не может знать что все копии Arc находятся в одном потоке, и потому он требует от контента Sync. Думаю даже если и валяются где смарт поинтеры с таким свойством — они явно будут unsafe, потому что гарантия того, что все копии находятся в одном потоке ложится на плечи программиста.

У меня правда вот такой монстр вышел:
Arc<Mutex<RefCell<>>> — есть ли что то покороче? Структура, которая должна быть доступна из разных объектов (shared_ptr<>), и ещё перемещается в другой поток.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.