Impl<T: ?Sized> Unpin for Rc<T> {} А это только к

Rc.ptr относится Unpin? Там нет такой же штуки для RcBox например. Вроде бы логично, запрещаем двигать RcBox чтобы не сломать указатели.

3 ответов

8 просмотров

В документации написано, что является Unpin. И почему это нельзя пиннить

— !Unpin не запрещает двигаться обычным значениям — RcBox нельзя двигать в принципе, у пользователей нет доступа к ней

Не стоит смотреть внутрь Rc, чтобы понять гарантии Pin, поскольку их инварианты друг от друга напрямую не зависят. Пусть у нас будет: Pin<P>, type T = <P as Deref>::Target. Тогда, если T: Unpin, то Pin<P> = P. В противном случае написавший структуру или перечисление утверждает, что та ссылается на себя прямо или опосредованно. Поэтому P должен быть указателем (неважно, простым, умным или в виде ссылки): для гарантии стабильного адреса. Сам Box/Rc волен свободно перемещаться, но не память в куче. В дополнение !Unpin запрещает DerefMut по умолчанию (в сейфе) и в принципе не даёт мут ссылок, как раз для того, чтобы нельзя было без ансаунда заставить поинтер внутри структуры провиснуть.

Похожие вопросы

Обсуждают сегодня

https://t.me/iDubTG/827 это для владельцев каналов?
Андрей
4
а в ботах подписки - это цифровой товар?
Андрей
3
а есть какая нить ссылка для быстрого открытия меню со старсами? типа tg://stars
Андрей
6
if (user?.choseType === 'oneDay') { await ctx.reply( 'Добро пожаловать в команду «Магнита»! Правда, на один день ☺️ ', ); await ctx.s...
Kokni
1
Привет гайс, как через телеграф отправить сообщения в канал альбомом? как тут ( не анимешник, хотя чуть-чуть )
Kokni
1
оплату инвойса вот так ловить?
Roma
3
а в чем сложность спиздить пак и сделать бесплатый аналог?
Андрей
1
Сonst magicTgHTML = (text, entities) => { let processedText = text; let offsetShift = 0; entities.forEach(entity => { const { offset, length, type, url, ...
Андрей
1
всем салют сегодня утро заметил что бот не может отправлять фотки по url. ручками в браузере ссылка норм открывает фотки. падает ошибка 'Bad Request: failed to send message ...
Vasya Ivanov
9
То есть кто захочет, тот все равно пройдет эту проверку?
Shen
2
Карта сайта