Size: a a a

Rust — русскоговорящее сообществo

2020 April 16

DS

Doge Shibu in Rust — русскоговорящее сообществo
Эрик
Вообще, проблема с листом в куче не то чтобы большая, но писать много придётся, потому что многие функции там жрут весь лист, а не ссылку на него, и всё это надо переписать под новый лист.
Ну HList он не для того, чтобы в куче хранится в виде замены массивами или векторам, это просто чуть более удобное для обобщенной работы представление обычных структур.
источник

Э

Эрик in Rust — русскоговорящее сообществo
И совершенно точно, что этот лист копируется каждый раз, когда ты туда суёшь что-то с увеличенным align.
источник

Э

Эрик in Rust — русскоговорящее сообществo
Вообще, надо действительно посмотреть, в какую сторону он расширяется.
источник

DS

Doge Shibu in Rust — русскоговорящее сообществo
@hirrolot

Я тут попрбовал ещё сделать вывод тайпкласса через LabelledGeneric из frunk, т.к. вот он может без владения преобразовать в LabelledGeneric с ссылками, получился вообще третий вариант кода, где 128 бит структуры за раз сравниваются:
источник

G

Gymmasssorla in Rust — русскоговорящее сообществo
Занятно
источник

DS

Doge Shibu in Rust — русскоговорящее сообществo
Gymmasssorla
Занятно
Ещё в который раз посмеялся с того, как сделаны тайплевел имена полей в LabelledGeneric, смешное решение.
источник

В

Вафель in Rust — русскоговорящее сообществo
Doge Shibu
Ещё в который раз посмеялся с того, как сделаны тайплевел имена полей в LabelledGeneric, смешное решение.
И как они там сделаны?
источник

e🦀

eupn 🦀 in Rust — русскоговорящее сообществo
Дмитрий
Как правильно перевести blanket implementation?
Ковровая реализация, по аналогии с ковровыми бомбардировками
источник

DS

Doge Shibu in Rust — русскоговорящее сообществo
Вафель
И как они там сделаны?
Вот примерно так:
frunk_core::labelled::Field<(frunk_core::labelled::chars::f, frunk_core::labelled::chars::i, frunk_core::labelled::chars::e, frunk_core::labelled::chars::l, frunk_core::labelled::chars::d, frunk_core::labelled::chars::__, frunk_core::labelled::chars::_3), &i64>
источник

G

Gymmasssorla in Rust — русскоговорящее сообществo
Забавно
источник

В

Вафель in Rust — русскоговорящее сообществo
Doge Shibu
Вот примерно так:
frunk_core::labelled::Field<(frunk_core::labelled::chars::f, frunk_core::labelled::chars::i, frunk_core::labelled::chars::e, frunk_core::labelled::chars::l, frunk_core::labelled::chars::d, frunk_core::labelled::chars::__, frunk_core::labelled::chars::_3), &i64>
Омг, это поле с именем field_3?
источник

DS

Doge Shibu in Rust — русскоговорящее сообществo
Вафель
Омг, это поле с именем field_3?
Да
источник

В

Вафель in Rust — русскоговорящее сообществo
Мощно
источник

DS

Doge Shibu in Rust — русскоговорящее сообществo
Вафель
Мощно
Зато на уровне типов сидит
источник

В

Вафель in Rust — русскоговорящее сообществo
Странно что там тупл, а не хлист, если уж на то пошло
источник

e🦀

eupn 🦀 in Rust — русскоговорящее сообществo
Ну так typenum так же сделано, там число в бинарном виде представлено как либо 1 либо 0
источник

В

Вафель in Rust — русскоговорящее сообществo
Я бы сказал что число в typenumHList битов
источник

Э

Эрик in Rust — русскоговорящее сообществo
Вафель
Я бы сказал что число в typenumHList битов
На уровне битов HList не сделаешь, разве что хлистовый интерфейс к реальной структуре.
источник

В

Вафель in Rust — русскоговорящее сообществo
Эрик
На уровне битов HList не сделаешь, разве что хлистовый интерфейс к реальной структуре.
😒
источник

В

Вафель in Rust — русскоговорящее сообществo
Cons<B1, Nil> вот тебе и хлист битов
источник