Size: a a a

2020 March 27

AZ

Alex Zhukovsky in rust_offtopic
Soul
А для рантайма это запущенный уровень ьсложности
лол, для рантайма запущенный уровень это 20кб имени типа. Если под рантаймом компиль подразумевать
источник

DS

Doge Shibu in rust_offtopic
Soul
А для рантайма это запущенный уровень ьсложности
Это всё инлайнится полностью
источник

p

polunin.ai in rust_offtopic
Т-34 85
боже, никак не называй. А лучше вообще не юзай такое
да, лучше сишный асинк
источник

DS

Doge Shibu in rust_offtopic
Там толком ничего не остается от этих штук
источник

p

polunin.ai in rust_offtopic
Soul
А для рантайма это запущенный уровень ьсложности
там остается mov eax 10
источник

S

Soul in rust_offtopic
Doge Shibu
Там толком ничего не остается от этих штук
Если там 100 строк кода, а сям ничего не остаётся, то в какой области существует эта куча вложенных шаблонов?
источник

G

Gymmasssorla in rust_offtopic
polunin.ai
да, лучше сишный асинк
Сишный асинк, кстати, более требователен к аллокациям на куче, чем растовский
источник

p

polunin.ai in rust_offtopic
Soul
Если там 100 строк кода, а сям ничего не остаётся, то в какой области существует эта куча вложенных шаблонов?
на уровне компилятора
источник

p

polunin.ai in rust_offtopic
в рантайме типы трутся все
источник

DS

Doge Shibu in rust_offtopic
Soul
Если там 100 строк кода, а сям ничего не остаётся, то в какой области существует эта куча вложенных шаблонов?
Имеется в виду, что особой цены не будет от этой кучи типов.

Оно всё в основном нужно компилятору, а не тому, что будет происходить в рантайме
источник

S

Soul in rust_offtopic
значит вот там и запущен уровень сложности.
источник

p

polunin.ai in rust_offtopic
Soul
значит вот там и запущен уровень сложности.
ну нет
источник

p

polunin.ai in rust_offtopic
там просто много дженериков
источник

p

polunin.ai in rust_offtopic
это не сложно если разобратсья
источник

DS

Doge Shibu in rust_offtopic
Soul
значит вот там и запущен уровень сложности.
А это в любом современном компиляторе подобной хрени много.

Тут она просто может быть видна
источник

S

Soul in rust_offtopic
много _вложенныйх дженериков
источник

DS

Doge Shibu in rust_offtopic
Soul
много _вложенныйх дженериков
Да, потому что там считай декораторы декораторов декораторов.

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

DS

Doge Shibu in rust_offtopic
Всё это можно спрятать за Box<dyn Future...>, но зачем, если оно всё прячется за impl Future
источник

S

Soul in rust_offtopic
Doge Shibu
Да, потому что там считай декораторы декораторов декораторов.

Это важно для того, чтобы у компилятора была информация что именно вызывалось и не было динамических вызовов
Подобная сложность вызывает проблемы. Самая очевидная - размер debug-бинарников, тут уж врядли кто поспорит
источник

p

polunin.ai in rust_offtopic
Alex Zhukovsky
бонусный вопрос - как в венгерской нотации нужно назвать переменную типа futures::future::and_then::AndThen<futures::stream::concat::Concat2<hyper::body::body::Body>, futures::future::or_else::OrElse<futures::future::map::Map<futures::future::and_then::AndThen<futures::future::and_then::AndThen<futures::future::map_err::MapErr<futures::future::result_::FutureResult<contract::Update, serde_json::error::Error>, [closure@src\main.rs:139:22: 144:14]>, std::result::Result<(contract::User, std::string::String, i64, i64), http::response::Response<hyper::body::body::Body>>, [closure@src\main.rs:145:23: 162:14]>, futures::future::map_err::MapErr<futures::future::and_then::AndThen<impl futures::future::Future, futures::future::either::Either<futures::future::and_then::AndThen<impl futures::future::Future, futures::future::either::Either<futures::future::then::Then<impl futures::future::Future, futures::future::either::Either<impl futures::future::Future, futures::future::result_::FutureResult<(), telegram_client::TelegramClientError>>, [closure@src\main.rs:211:51: 224:46 telegram_client:_, chat_id:_, text:_]>, futures::future::result_::FutureResult<(), telegram_client::TelegramClientError>>, [closure@src\main.rs:173:90: 230:30 file_id:_, ext:_, user:_, message_id:_, dbs:_, chat_id:_, telegram_client:_]>, futures::future::result_::FutureResult<(), telegram_client::TelegramClientError>>, [closure@src\main.rs:166:31: 235:22 user:_, chat_id:_, message_id:_, telegram_client:_, file_id:_, dbs:_]>, [closure@src\main.rs:236:30: 242:22]>, [closure@src\main.rs:163:23: 243:14 telegram_client:_, dbs:_]>, [closure@src\main.rs:245:18: 248:14]>, std::result::Result<http::response::Response<hyper::body::body::Body>, hyper::error::Error>, fn(http::response::Response<hyper::body::body::Body>) -> std::result::Result<http::response::Response<hyper::body::body::Body>, hyper::error::Error> {std::result::Result<http::response::Response<hyper::body::body::Body>, hyper::error::Error>::Ok}>, [closure@src\main.rs:136:54: 250:6 telegram_client:_, dbs:_]>
вот здесь тип
AndThen<Concat2<Body>, OrElse<Map<AndThen<AndThen<MapErr<FutureResult<Update, Error>, ...>
источник