Обновить

Твой async fn на самом деле enum, а Pin нужен потому, что Rust наступил на грабли самоссылающихся структур

Уровень сложностиСложный
Время на прочтение7 мин
Охват и читатели4.7K
Всего голосов 6: ↑3 и ↓30
Комментарии2

Комментарии 2

Реальный случай из практики: у меня была корутина, которая держала в памяти String с подробным сообщением об ошибке через границу .await, и весила 8 КБ на задачу. Замена String на Box<str> срезала размер до 16 байт. На десяти тысячах задач это разница в восемьдесят мегабайт.

Сперва хотел спросить «Это как, String хранит данные в куче и весит всего 24 байта», а потом посмотрел на ник автора и понял, что спрашивать нет смысла...

Не может быть случайностью, что эта статья вышла через 4 часа после вот этой https://habr.com/ru/companies/beget/articles/1023090/ на точно ту же тему. Первые примеры в обоих статьях совпадают с точностью до косметических отличий.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации