Size: a a a

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

2020 April 16

Э

Эрик in Rust — русскоговорящее сообществo
Но разобрать его всё равно не вижу как.
источник

DS

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

A

Artem in Rust — русскоговорящее сообществo
Что, экзистенциальные типы завезли?
источник

DS

Doge Shibu in Rust — русскоговорящее сообществo
Artem
Что, экзистенциальные типы завезли?
Нет, просто немного стандартной полу-тайп-левел магии.
источник

A

Artem in Rust — русскоговорящее сообществo
Я сегодня узнал, что ненаселённый тип сделали анстейблом 2 года назад почти. Взгрустнул.
источник

Э

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

Э

Эрик in Rust — русскоговорящее сообществo
В итоге всё равно не разбирается лист генериков.
источник

DS

Doge Shibu in Rust — русскоговорящее сообществo
Эрик
В итоге всё равно не разбирается лист генериков.
А во что ты хочешь его разобрать?
источник

Э

Эрик in Rust — русскоговорящее сообществo
Ладно, согласен, не надо его разбирать, и fold'а хватит.
источник

Э

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

DS

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

Э

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

DS

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

DS

Doge Shibu in Rust — русскоговорящее сообществo
Так, понял, как получить одинаковый выхлоп в асме, но для этого придется добавить свой тип подобный Generic'у, только не владеющий.

Ну это уже не проблема.
источник

DS

Doge Shibu in Rust — русскоговорящее сообществo
источник

Э

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

DS

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

Потому что для раста важно наличие чего-то вроде такого:
trait AsRefGeneric<'a> { 
 type Repr: 'a;
 fn as_generic(&'a self) -> Self::Repr;
}
источник

Э

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

Э

Эрик in Rust — русскоговорящее сообществo
То есть в куче будет куча unsafe, которая вовсе не обязана работать, потому что #[repr(Rust)] не имеет стабильного ABI.
источник

Э

Эрик in Rust — русскоговорящее сообществo
Сегодня этот лист расширяется в одну сторону, а завтра в другую.
источник