Хотя тревожно тогда, что в конструкции "*const [T] as *const

T" as на самом деле разыменовывает указатель на слайс, чтобы получить указатель на первый элемент слайса?

11 ответов

21 просмотр

as это не рантаймовая операция А разыменование- рантаймовая операция

Alexey
as это не рантаймовая операция А разыменование- ра...

Забыл сказать что это не рантаймовая операция в данном случае

Alexey
as это не рантаймовая операция А разыменование- ра...

as получается работает не как отдельная "функция", а мол говорит, что надо просто "воспринимать T так, как указано типом после as"? а то не очень понимаю как это может быть не рантайм

Здесь человек говорил о разыменовании, хотя здесь не происходит разыменования

Alexander-Ruliov Автор вопроса
Alexey
Здесь человек говорил о разыменовании, хотя здесь ...

Ну я про то, что делаешь as и оно по сути уже на другой адрес указывает, странное. Ну и ещё вот это непонятно: error[E0606]: casting `*const [u8]` as `usize` is invalid --> src/main.rs:6:14 | 6 | let p1 = s as *const[u8] as usize; | ^^^^^^^^^^^^^^^^^^^^^^^^ | = help: cast through a thin pointer first

Alexander Ruliov
Ну я про то, что делаешь as и оно по сути уже на д...

*const [u8] это fat pointer он содержит ссылку на данные и длину нужно сначала получить ссылку на данные преобразованием к *const u8, потом уже каст к usize

Алиса Кассель-Королёва
*const [u8] это fat pointer он содержит ссылку на ...

я даже, наверное, понял почему для меня это запутанно было на уровне синтаксиса что fat что thin указатели выглядят одинаково, но при этом на уровне семантики - разные хотя, даже на уровне синтаксиса можно различить - получается что fat указатели можно отличить от thin указателей тем, что thin указатели образуются только !Sized типов или любых ссылок, так как они всегда !Sized, я прав? эх, простите душу грешную, что новичковыми глазами полез в дебри низкоуровневые))

если ты в ансейф не лезешь тебе скорее всего и не понадобятся такие подробности

Алиса Кассель-Королёва
если ты в ансейф не лезешь тебе скорее всего и не ...

мне просто интересны все эти вещи, я даже по этому поводу поступил на системное программирование, но там особо такому не учат)) интересно как это на уровне типобезопасного языка реализовано, да и в принципе на какие грабли можно наступить

К|/|pи/\/\ 6е3yглbIи
я даже, наверное, понял почему для меня это запута...

У типов, которые имплементят Thin (Pointee<Metadata = ()>), метаданные zero-sized при хранении поинтера на них, а так разницы нет. Сейчас fat могут быть только указатели на слайсы, str (как разновидность слайсов на самом деле), dyn Trait, и DST (последние содержат [T]/str/dyn Trait в качестве последнего поля и наследуют их метадату). Правда, что только !Sized могут быть fat, но не факт, что на любой !Sized pointer будет толстым. extern type например.

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

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

Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
Ребята, всем привет. Подскажите, пожалуйста, можно ли как-то через бота понять, что этого бота добавили в группу\канал и выдали ему права администратора?
Artem Stormageddon
9
Привет всем! Почему этот код не срабатывает при добавлении или удалении пользователя из чата? bot.on('chat_member', async (ctx) => { console.log(ctx); }) bot.launch({allo...
Alexander
7
Всем привет. Не понимаю, в чём тут шутка юмора. Убирается только разрешение на send_messages. А send_media_messages остаётся. Как сделать, чтобы оба убирались? await b...
Alexander
2
Есть тут кто занимается разработкой серваков майна? Или знакомые
meow *
3
'frakturBold' => ['𝖆', '𝖇', '𝖈', '𝖉', '𝖊', '𝖋', '𝖌', '𝖍', '𝖎', '𝖏', '𝖐', '𝖑', '𝖒', '𝖓', '𝖔', '𝖕', '𝖖', '𝖗', '𝖘', '𝖙', '𝖚', '𝖛', '𝖜', '𝖝', '𝖞', '𝖟', '𝕬', '𝕭', '𝕮', '𝕯'...
Roma
4
Есть ли лимиты на кол-во вебхук по домену? Стоит в данный момент 900+ ботов и бывает бот перестает отвечать (не приходят вебхуки) 🐒 Помогает только перезапуск
ᅠ [ Кому не ответил, дублируйте ]
11
а что делать если тебя убивают на картах?
Yarik yarik kyda ti lezesh
43
Товарищи, здравствуйте Подскажите, пожалуйста, может кто-нибудь сталкивался с такой задачей Через вебапку можно сканировать qr-код, а есть ли возможность считывать nfc?
Artem Stormageddon
8
Карта сайта