Предыдущий тред : >>3407697 (OP)
Rust — blazing fast язык для системного программирования без segfault'ов и с гарантиями потокобезопасности. Он позволяет писать безопасный и эффективный код, который легко поддерживать и масштабировать.
Ссылка на официальный сайт: https://www.rust-lang.org/
В этом треде мы объясняем базовые и продвинутые концепции языка, а также программирования в целом. Поможем новичкам, подскажем, что выбрать для веба, игр или, прости господи, блокчейна.
НОВИНКА: Rust для Windows: https://metanit.com/rust/windows/
IDE для Rust: https://areweideyet.com/
GUI для Rust: http://www.areweguiyet.com/
Web для Rust: https://www.arewewebyet.org/
Игры на Rust: https://arewegameyet.rs/
Что еще есть для Rust?
- Посмотри сам: https://wiki.mozilla.org/Areweyet
Основная литература:
Rust Book (версия на русском языке): https://doc.rust-lang.ru/book/
Rust Book: https://doc.rust-lang.org/book/
Rustlings (упражнения для привыкания к Rust): https://github.com/rust-lang/rustlings
Rust by Example: https://doc.rust-lang.org/rust-by-example/
The Rustonomicon (для продвинутых): https://doc.rust-lang.org/nomicon/
Programming Rust: https://www.oreilly.com/library/view/programming-rust/9781491927274/
100 упражнений по Rust: https://rust-exercises.com/100-exercises/
Ресурсы на русском:
https://rust-lang.ru/
Отдельное спасибо автору этого гитхаба (старому ОПу). Здесь ты сможешь найти много полезной информации: https://gist.github.com/TatriX/183c816f1346d418f969c4576c2b9b41
Эм, ребят....

Рассматривал разные варианты: PHP, Node.js, Go, Rust (Java и Kotlin не рассматриваю, очень не зашли).
У раста выявил только два минуса для себя:
- кривая обучения очень уж крутая (чтобы что-то начать делать в бэке нормально нужно месяцев 12)
- долгая разработка в сравнении в другими языками (то, что я сделаю на других языках за 1-2 дня, на расте буду делать неделю или две)
В других языках нашел минусов намного больше. Меньше всего в Go, но он не заточен на сложную бизнес-логику, сделать-то можно конечно, но на костылях и с тяжелой поддержкой в дальнейшем. А мой проект содержит сложную бизнес-логику: бухучет, оперативный учет и т.п. (я сам бухгалтер), которую я планирую годами расширять и совершенствовать. И это будет именно веб-проект со всеми вытекающими (будет даже telegram mini app).
Но экспертных материалов по практическому применению Rust в бэкенде я не смог найти. Как-то все в общих чертах, обзорно, толком полную картину не составишь. Это как в статьях про Python - да он может всё, очень гибкий, можно и в бэк и в ml и в гуй тоже может. А на деле - очень медлительный и очень прикладной, но хорошо для DS и ML (клей для Си в основном).
В концепциях программирования я не профессионал, но умею в VBA, Python и 1С в рамках своих компетенций по профессии). А также немного в CSS, HTML и JS.
Дайте пожалуйста вашу экспертную оценку. Если будет время, напишите пожалуйста развернутый ответ.
Grok

От нейродебилов не получилось взять релевантную информацию. Они и про Пиструн мне говорят: О да, это отличный вопрос. Python может решить все ваши проблемы. Огромное сообщество, дохулирд фреймворков...
Так ты знаешь питон, начинай писать на питоне. А не спрашивай дикпики о выборе языка. И еще думай как сделать так чтобы можно было как можно больше делигировать в будущем, наемным макакам, а не самому писать все.
Извини, бро, но неужели ты думаешь, что я не рассматривал этот вариант? Питон не отвечает моим требованиям по производительности. Нужно что-то пошустрее. Хотя бы уровня Node. Но это опять компромиссы. Уже 2 недели в ступоре хожу, читаю, смотрю, слушаю, но так не могу найти консенсус.
Чел. Ты хотя бы мвп запили для начала. А уж потом думай о производительности для своего круда. 100% ты не сможешь одновременно учить все и пилить что-то рабочее. Ты в расте только начнешь изучать лайвтаймы с боровчекером и уже забудешь о своей главной цели из-за когнитивного перегруза.
>У раста выявил только два минуса для себя:
Я тебе добавлю третий минус от себя - время компиляции. Попробуй хоть раз скомпилировать ну какой-нибудь скажем форум целиком сделанный на расте и ты охуеешь. А то что ты сказал... Нуууу для меня это не является минусами - 1) "кривая обучения очень уж крутая" - хорошо, меньше всяких тупых детей, рукожопов и случайных людей будет. 2) "долгая разработка в сравнении в другими языками" - мне лично похуй, за меня 70% кода нейронка пишет.
>экспертных материалов по практическому применению Rust в бэкенде я не смог найти
Хуёво искал. Заходишь на amazon.com, в поиск вбиваешь слово "rust", категория "books" и там будет писят тыщь этих книг.
>Меньше всего в Go, но он не заточен на сложную бизнес-логику
Скорее проблема в тебе, а не в go. Это ты не заточен на сложную бизнес-логику.
Никто не пишет на срасте бек для веба потому что слишком много времени занимает, ты вместо алгоритмов пишешь бойлерпринт и сражаешься с языком. Сервер игры - частично, может быть, чаты - неплохо, почему бы и нет, трансляции поедания кала - вполне рабочая тема.
Бек для веба пишут на ноде, либо жаба если это тырпрайз, всё потому что эти языки позволяют хуякс-хуякс и в продакшн, есть куча встроенных в языки плюшек. А нода/бан/deno ещё и производительные дохуя.
Если хочешь писать бек на компилируемом языке, то во-первых используй zig (этот тред реклама zig на самом деле) потому что бойлерпринта меньше, во-вторых тебе придётся писать ебейшую кучу собственных велосипедов, и я что-то нихуя не уверен что это имеет смысл. Для твоей бизнес-логики придётся самому писать конечные автоматы, сигналы и эвенты, и всё это с аллокацией и структурами данных на массивах. Будешь не только бухгалтером, но и системным архитектором, лолд, готов?
>Никто не пишет на срасте бек
ВНИМАНИЕ, ВСЕМ СРОЧНО ПЕРЕСТАТЬ ПИСАТЬ БЭК, АНОН НА ДВАЧЕ СКАЗАЛ ЧТО НА НЕМ НИКТО НЕ ПИШЕТ
ВСМЫСЛЕ УЖЕ НАПИСАЛИ ВСЁ!?!?! УДАЛЯЙТЕ!
> борда
Это хуйня которая занимает 200 строчек в JS для всего сервера и 200 строчек для клиента? Пиздец мощно. Что-то ещё будет?
Блядь, да что угодно https://github.com/jennypeng/ImageBoard Первое что попалось. Тут строчек 300, наверное, основная часть это счётчики, лол, которые можно написать не так уебищно. Думая основная работа с БД, роутами и АПИ для борды занимает строчек 100, не больше.
В пидорасте бойлерпринта просто дохуя. Слишком дохуя для адекватного написания бека.
ахахахаа там буквально 1 форма + просмотр
> Первое что попалось
тебе реально при поиске движков борды всё что выдало древнее говно уровня лабы 12 летней давности?
попробуй получше поискать, что то реально похожее на борду
> Думая основная работа с БД, роутами и АПИ для борды занимает строчек 100, не больше.
ну если дальше уровня лабы не уходить то да
> ахахахаа там буквально 1 форма + просмотр
Погоди, что не так? В борде только это и есть. Треды и доски реализуются ещё двумя функциями.
> тебе реально при поиске движков борды всё что выдало древнее говно уровня лабы 12 летней давности?
Да, гугл в наши дни нихуя не ищет.
> ну если дальше уровня лабы не уходить то да
Чел, это борда. Тут нет ничего сложного. Прямо совсем ничего. На расте это сложно только из-за того что язык говно.
Однажды в качестве proof of concept написал вики-движок на пыхе примерно в 150 строк. Правда, с безопасностью там было всё плохо.
>Погоди, что не так? В борде только это и есть.
блять чел, ну ты глянь хотя бы как борда на которой ты сейчас находишься выглядит и что делает кроме того что просто тебе показывает треды
>Да, гугл в наши дни нихуя не ищет.
предлагаешь мне вместо тебя гуглить? точно сам не справишься?
>Тут нет ничего сложного
кто тут про сложность говорит?
легко != 10 строчек кода, тут есть еще функционал кроме того чтобы тебе хтмл показать + формочку сделать
> блять чел, ну ты глянь хотя бы как борда на которой ты сейчас находишься выглядит и что делает кроме того что просто тебе показывает треды
Так расскажи мне что она такого делает, кроме подсчёта статистики и полутра вызовов апи. Ты точно писал борду? Сколько запросов апи у тебя было?
> предлагаешь мне вместо тебя гуглить? точно сам не справишься?
Да, мне поебать на это дерьмо.
> кто тут про сложность говорит?
> легко != 10 строчек кода,
Если ты пишешь на нормальном языке для бекенда - сложность прямо пропорциональна количеству строк кода. В случае сраста это конечно не так, но это проблема языка.
> тут есть еще функционал кроме того чтобы тебе хтмл показать + формочку сделать
Это борда. Всё что борда делает - сохраняет и отправляет стринги. Доски, топ тредов и прочая хуйня решаются ещё одной строчкой которая добавляет посты в кэш/бд. Самая сложная часть харчка - это капча.

>Так расскажи мне что она такого делает, кроме подсчёта статистики и полутра вызовов апи.
модерация + админка
медия
(в моем случае) реал тайм постинг
базовая безопасность (чтобы не завайпали гомонеграми)
настройка борды
избранное \ скрытие
>сложность прямо пропорциональна количеству строк кода
во дибил
>Да, мне поебать на это дерьмо.
ну так а о чем с тобой говорить?
> борда это супер просто 20 строчек кода
> хоть один движок видел\писал?
> пук среньк, всё просто строчка бд апи формочка
> ты хоть понимаешь функционал борды
> пук среньк, строчка капча
> модерация + админка
Ого, много. Поздравляю, твой апи расширился на один запрос. Вместо пяти стало шесть. Если ты создаёшь команду чмодератеров, то будет семь. Семь апи точек, бля, много...
> медия
Что медия? Стрим файла это функция на 20 строчек. С буферами работает. Конечно, в пидорасте это будет минимум 1к строк отборного говнокода, но что поделать...
> в моем случае) реал тайм постинг
Постинг и так всегда реалтайм. Тут всё наоборот, чтобы делать постинг батчами нужно больше кода, да и нахуй это не нужно особо.
> базовая безопасность (чтобы не завайпали гомонеграми)
Две строчки кода при использовании кук, четыре строчки кода при использовании токена. Много....
> во дибил
Речь идёт про нормальный язык бекенда, а не про раст.
> ну так а о чем с тобой говорить?
Можешь ещё повизжать о том как сложно тебе было писать борду на срасте.
> > пук среньк,
Сколько вызовов апи было на твоей борде? Напиши мне это, не стесняйся.
ну уже слишком жирно

>Это хуйня которая занимает 200 строчек в JS для всего сервера и 200 строчек для клиента? Пиздец мощно. Что-то ещё будет?
У меня есть проекты на расте. Я пишу бекенд. Что ты хотел-то?
Вот описание проекта ---> https://pastebin.com/raw/RxjYq1iW
Вот пример кода ---> https://pastebin.com/raw/JBerjWZj
Там около ~130 тысяч строк лютого пиздеца на расте, не считая typescript и фронта.
мимо-другой-анон
>ты вместо алгоритмов пишешь бойлерпринт
Смотри... у тебя есть вот такой контент https://pastebin.com/raw/zLD4WLCr Сможешь его декодировать в бинарный файл? Я тебе даже решение на расте могу подсказать https://pastebin.com/raw/Wt90DY9p
>кривая обучения очень уж крутая (чтобы что-то начать делать в бэке нормально нужно месяцев 12)
С растом ты будешь каждый день своей жизни учиться, потому что две трети любого кода на расте — это объявления новых вспомогательных типов для ублажения компилятора, и соответственно, работающие с тобой люди будут непрерывно писать новые и новые вспомогательные конструкции под свою логику.
Помню, я охуел, когда увидел, насколько сложно. Safe реализация двусвязанного списка на Rust настолько нереальна, что они по итогу сплошной unsafe ебанули в std.
>Меньше всего в Go, но он не заточен на сложную бизнес-логику, сделать-то можно конечно, но на костылях и с тяжелой поддержкой в дальнейшем
В чом тяжесть поддержки? Пиши на Elixir, лол.
>Это как в статьях про Python - да он может всё, очень гибкий, можно и в бэк и в ml и в гуй тоже может. А на деле - очень медлительный и очень прикладной, но хорошо для DS и ML (клей для Си в основном).
По-моему никто не скрывает, что питон еле ползает. Можешь попытаться у нейросетки поспрашивать вопросы, и подчёркивать ей, типа "я хочу не мейнстрим", "какие альтернативные взгляды на этот вопрос бывают?".
Гуй, кстати, очень грустный в питоне. Я не в последнюю очередь думал свою либу многозадачности под нужды гуя адаптировать, но там настолько всё плохо в питоне, что ну его нахуй. Питон — это реально bash, со всеми вытекающими и втекающими.
>От нейродебилов не получилось взять релевантную информацию. Они и про Пиструн мне говорят: О да, это отличный вопрос. Python может решить все ваши проблемы. Огромное сообщество, дохулирд фреймворков...
Странно. Можешь показать пример промта, по которому нейросетка выдала тебе хуйню?
>>54549
Нейровысеры не интересуют. Следующий раз приноси свой код, посмотрю что там у тебя.
>>54649
>две трети любого кода на расте — это объявления новых вспомогательных типов для ублажения компилятора
>Помню, я охуел, когда увидел, насколько сложно. Safe реализация двусвязанного списка на Rust настолько нереальна, что они по итогу сплошной unsafe ебанули в std.
База. А если это мультипоток будет? На этом пидорастёнок зависнет, потому что токены в GPT исчерпались.
>Вот описание проекта ---> https://pastebin.com/raw/RxjYq1iW
>Вот пример кода ---> https://pastebin.com/raw/JBerjWZj
>Там около ~130 тысяч строк лютого пиздеца на расте, не считая typescript и фронта
Наркоман, это ты мне про AWS чесал в облачном тхреаде?

> error: invalid option: -Dcpu
> error: invalid option: -Dtarget
> error: invalid option: -Doptimize
Что это блять, в build.zig нет никаких аргументов и я не передаю ему?
А дальше под этим стектрейс build.zig, без ошибки. Что ты хочешь, сука?
Есть менеджер пакетов, но название пакета и название модуля разное, я должен идти в репу и смотреть в zig.mod как они назвали модуль. Потом ещё прописывать в build.zig сборку и импорт каждой зависимости. При этом мне пришлось смотреть видос на ютубе как правильно добавить её в build.zig, ведь документация к zon не гуглится. Ебануться.
И эти мудаки зачем-то переписывают LLVM на зиге, не осилив даже сделать нормальную сборку и документацию. Воистину красноглазые пердоли не умеют в юзерфрендли софт, только в пердольное говно.
А потом они ещё рассказывают как у них встроен clang в компилятор и его можно использовать как более удобную замену крестового компилятора. Более удобную чем что? Чем makefile как из нулевых? При этом они рассказывают про нативную поддержку сишки без ffi в зиге, но как мне например заинклюдить Windows.h под виндой? Я должен сам окружение настраивать руками? Виндобляди даже в нулевые про такую дикость не слышали.
Назови своё имя, хохлодемон)
Неа.
Кстати, какая IDE на расте в 2025 году считается наилучшей?
А то переписывание emacs на расте забросили https://github.com/remacs/remacs
Умом Ржавый не понять,
И кол-вом строчек не измерить:
У него особенная стать —
В Раст можно только верить.
(Ф. Тютчев)
ПОЗДРАВЛЯЮ ВАС, РАСТОВЧАНЕ, С ДЕСЯТИЛЕТИЕМ ПОТРЯСАЮЩЕЙ РАСТ ПОБЕДЫ! ПУСТЬ ВАШ КОД БУДЕТ БЕЗОПАСНЫМ КАК НЕПРИСТУПНАЯ КРЕПОСТЬ, БЫСТРЫМ КАК ГОНОЧНЫЙ БАЛИД! ПУСТЬ ЗАВИСТНИКИ КРИЧАТ ПРО СВОЮ СЛАБОСТЬ И НИАСИЛ СИНТАКСИСА! СЛАВА РАСТУ! ПОБЕДЕ СЛАВА!
Давно пора, ебена мать, умом растишку понимать!
Потому что раст сделали наглухо пизданутые чулочники. Функция get возвращает указатель на элемент массива. Просто получить элемент по индексу будет v[]
Вот так работает:
fn main() {
let mut v = vec![1,2,3,4,5];
let first = v[0];
v[0] = 42;
v.push(6);
println!("{first}");
println!("{v:#?}");
}

Лучше бы показали кто это говно спонсирует. А то такие довольные, явно баблищем их заваливают, и неспроста, явно не от полезности и прибыльности этого высера.
Кто она по национальности? He? She? His? Hmm? Sheet?

Я знаю что растанам больно от реальности, но ЯП с безопасной памятью - это в первую очередь джава и шарп. Про раст никогда речи даже и не шло.
На системных ЯП ничего кроме ОС не пишут. Все реальные задачи решаются безопасными языками с GC.
А зачем на них что-то другое писать? В вебе у джавы производительность выше раста.
От инвесторов.
Как комментарии принято оформлять?
Чел весь финтех сидит на расте и пишет на нем свои микрописьки, альфа, сбер, тинек. Все вакансии открыты можешь сам убедиться в этом.
Впрочем то что это хуйня какая то я согласен. Даже не представляю сколько там у них ебли с этим, как будто проще было на плюсах даже кек
Трахать
У альфы вижу только одну вакансию с растом. И там же рядом го, жава. У сбера тоже одна. У тинька ноль.
Ну крч ты начал фантазировать про пидорастные команды которых нет. Уверен они там пишут полтора микросервиса, связанные с либой на расте. А в бизнес-логику и БД их даже близко не пускают, даже на полшишечки.
Не трясись ты так. Подумаешь обосрался прилюдно.
Адаптеры крайней будет писать удобнее и ну мере конвертеры по.
Языку всего десять лет, а его уже интегрируют в линукс и постепенно вытесняют плюсоговно (в предметной области максимально ригидной к изменениям). Для сравнения какому-нибудь пистону уже больше 30 лет, а выстрелил он только когда нейросетки начали разрабатывать.
Кто-кто? Батя твой?
а на си уже через год после выхода портировали весь юних, значит си в 10 раз пизже
Почему плюсопедики за 40 лет не смогли навязать пинусу свою волю, а растофаги смогли?
Все так. Для своего времени это был гигапрорыв.
Линусу это пропихнули после курса таблеток и прочих нападок со стороны небазового сообщества.
Ну и прекрасно, Линукс это говноговна
И лично выебали Пинуса в жопу
>Линусу это пропихнули после курса таблеток и прочих нападок со стороны небазового сообщества.
Линус уже давно выполняет роль наёмного сотрудника, который будет делать то, что ему скажут, "love it or leave it". Ему просто напомнили об этом, когда он однажды выебнулся. Всем мейнтейнерам об этом аналогично напоминают. Никакой свободы в ядре линя уже давно нет, вся разработка лежит под корпорациями — свобода заключается в том, как эти хотелки корпораций ты будешь выполнять.
Есть объективные проблемы со включением Rust в ядре, например, тот факт, что изначально это был специализированный инструмент для написания браузера — взять те же Sync/Send, которые приколочены гвоздями к компилятору и очевидно являются узкоспециализированным инструментом, бесполезным в ядре, в котором не просто потоки и lock-free код, а есть прерывания, у которых особая культура кодинга.
Пришлось вычищать стандартную библиотеку от браузерного говна, и только после этого Rust подпустили к написанию драйверов. Я не верю, что раст когда-то пустят дальше, потому что дальше там просто сплошняком unsafe код, который лишает применение Rust смысла — всё ядро нужно будет переписывать под прихоти раста, как и вообще любая строчка кода требует усилий для ублажения компилятора, иначе компилятор её не примет.
>>58551
>плюсы за столько лет к линуксу даже не подпустили
Если от плюсов брать безопасное подмножество, то от них почти ничего не остаётся по итогу — в помойку отправляется 80% std и две трети спецификации C++. И даже после этого компиляторы C++ настолько ебливые, что их очень тяжело сделать совместимыми и безопасными, слишком уж это беспорядочное нагромождение фич и слоёв совместимости. Сука, C++ только несколько лет назад научилось линковать static поля в объявлении класса — это пиздец товарищи, как с яхзыком без поддержки интерфейсов типов работать? В языке есть hpp-реализация и cpp-реализация, но интерфейсов в C++ не существует, помимо сишных. А если ты всё равно пользуешься только сишными фичами, то зачем тебе C++?
>Линусу это пропихнули после курса таблеток и прочих нападок со стороны небазового сообщества.
Линус уже давно выполняет роль наёмного сотрудника, который будет делать то, что ему скажут, "love it or leave it". Ему просто напомнили об этом, когда он однажды выебнулся. Всем мейнтейнерам об этом аналогично напоминают. Никакой свободы в ядре линя уже давно нет, вся разработка лежит под корпорациями — свобода заключается в том, как эти хотелки корпораций ты будешь выполнять.
Есть объективные проблемы со включением Rust в ядре, например, тот факт, что изначально это был специализированный инструмент для написания браузера — взять те же Sync/Send, которые приколочены гвоздями к компилятору и очевидно являются узкоспециализированным инструментом, бесполезным в ядре, в котором не просто потоки и lock-free код, а есть прерывания, у которых особая культура кодинга.
Пришлось вычищать стандартную библиотеку от браузерного говна, и только после этого Rust подпустили к написанию драйверов. Я не верю, что раст когда-то пустят дальше, потому что дальше там просто сплошняком unsafe код, который лишает применение Rust смысла — всё ядро нужно будет переписывать под прихоти раста, как и вообще любая строчка кода требует усилий для ублажения компилятора, иначе компилятор её не примет.
>>58551
>плюсы за столько лет к линуксу даже не подпустили
Если от плюсов брать безопасное подмножество, то от них почти ничего не остаётся по итогу — в помойку отправляется 80% std и две трети спецификации C++. И даже после этого компиляторы C++ настолько ебливые, что их очень тяжело сделать совместимыми и безопасными, слишком уж это беспорядочное нагромождение фич и слоёв совместимости. Сука, C++ только несколько лет назад научилось линковать static поля в объявлении класса — это пиздец товарищи, как с яхзыком без поддержки интерфейсов типов работать? В языке есть hpp-реализация и cpp-реализация, но интерфейсов в C++ не существует, помимо сишных. А если ты всё равно пользуешься только сишными фичами, то зачем тебе C++?
> интерфейсов типов
> hpp-реализация и cpp-реализация
Шиз, зачем ты пишешь на си с классами и жалуешься на кресты? Это как писать на расте и жаловаться что ГОвно плохое. Модули уже давно в крестах работают стабильно, сишные хедеры больше не нужны. Что ты там про линковку выдумываешь вообще не понятно, экспорты работают как и должны.
> Модули уже давно в крестах работают стабильно, сишные хедеры больше не нужны.
Давно? С 2024 стабильная поддержка в основным компиляторах — это "давно"? Ты какого года рождения? Для меня "давно" модулей C++ вообще не существовало даже в прототипах.
Так-то мне самому модули C++ тоже нравятся — за 35 лет пора бы уже.
Тем не менее, одних модулей недостаточно для решения проблема. Например, проблему непрозрачных и private объявлений типов модули не решают — это по прежнему можно описать только сишными типами. Исключения для ядерной разработки нужно вырезать из яызка — а хули в C++ остаётся без исключений и опирающегося на них RAII? Как я и писал — мало что остаётся.
> проблему непрозрачных и private объявлений типов
Шизик, какие ты там проблемы нашёл? Для начала забудь про сишку и пиши на крестах.
>сплошняком unsafe код, который лишает применение Rust
Я уже выше вам дэбилам говорил, что раст это не про безопастность, а про нескучный синтаксис, раст никакой безопасности не гарантирует, безопастность может гарантировать только человек, который пишет на язык_нейм и доказательства.
>на си с классами и жалуешься на кресты
>си с классами
А если он не использует ооп-дерьмо, а пользуется тем, что в плюсах nullptr - это ключевое слово, а булы - это отдельные типы, это кресты или "си с классами"?
>крестовый std
Нахуя его использовать? Алсо, тех же рефов нет в си, а это пиздатая фича, использовать супер ограниченное подмножество плюсов вообще говоря годная идея. Так ты не ответил, что такое си с классами?
Какой яп, такое и обсуждение.
>Блять и чо? Я дрочу на трапов ииии?
Ты гей просто. Гомосексуал. Гомосексуалист, как раньше говорили.
Нормисопроблемы
"asdfaf" выдает &str, ссылку на строку. Кто при этом владеет строкой?
По-твоему правомерно говорить о "владении" без соответствующей записи? По-моему, нихуя. Прямая цитата из учебника: "такая запись становится владельцем".
>в растотреде удалили пост с трапопикчей
Рустакеаны, вас это не задевает?
Зачем тебе писать на раст тогда. Зачем в принципе писать на раст, чтобы с языком сражаться?
fn, str, dyn, fs, Vec и прочее. Че больные что-ли?
Мы вроде не в девяностых где нужно было сэкономить пару килобайт текста, нахуя эти сокращения сраные нужны? Что полностью так впадлу слово написать? При чем не понятно по какому принципу сокращения, одна часть языка нормальная, другую решили отрезать. Какого хуя String полностью, а Vec уже сокращение?
А то! Нет бы сразу написать AbstractProxyDecoratorBeanImpl
Напиздела пидорастическая проститутка придорожная
>На расте есть сборщик карго, а не С++ ничего такого даже близко нет
Уже отвечали — vcpkg есть для C++.
>уже отвечали, даже близко нет
Уже отвечали — близко да. Rust не умеет сам собираться на винде, просто для справки.
>сам то понял что сказал, затупок-студентик?
Нет это ты, долбоебина, не смог решить задачи, которую решает chatgpt даже старой версии. Rust не умеет комплиировать сорцы в бинарники под win32 без установки стороннего ПО.
я тебя услышал, студентик долбоёбик, напиши еще 10 постов где себя тупизднем выставляешь не понимающем нихуя в матчасти, а то думаю еще не всем понятно
Поддерживаю, у раста хуже vcpkg. Где-то посередине между зигом в простынями скриптов сборки на зиге и простотой vcpkg.
Ага. Когда хочешь версию либы запинить в vcpkg.json то нужно искать и прописывать хеш из репозитория vcpkg, когда эту версию запушили. Ничего более наркоманского Майкрософт придумать не смогла..
>Нужно ли знать С++, чтобы писать на Rust?
Нужно ли знать итальянскую кухню, чтобы готовить русские блюда?
Нужно ли знать вьетнамский язык, чтобы говорить по-немецки?
Нужно ли уметь водить машину, чтобы научиться ездить на мотоцикле?
Такого же рода вопросы.
1. Что такое турборыба
2. Какого цвета чулочки сейчас на вас

>1. Что такое турборыба
Ну кстати это не шутки. Турборыба действительно используется, чтобы показать компилятору в какой тип приводить - ::<НекийТип>
>vcpkg
А он умеет собирать проект по команде vcpkg build? Или прежде надо ручками написать CMake-душнину?
>из-за слишком жесткой системы владения
Значит раст плохой инструмент для этой задачи. Проходите мимо.
>а не статические матрицы
>как делают некоторые студенты в своих лабах
Но повышается локальность данных. Алсо, если идти подобным путём, то получаем нулевую пользу от баран чекера.
>Vec - базовый тип. String - обертка.
Про fn что скажешь? У меня это основная претензия сейчас
Мимо вкатун с C-образных языков
Вообще, нахуя синтаксис изобретали новый? Что это дало по факту?
>Вообще, нахуя синтаксис изобретали новый? Что это дало по факту?
Ничего не дало, пидорасам захотелось сделать что-то ПРОГРЕССИВНОЕ просто так - это же пидорасы. Не потому что оно лучше, а потому что оно отличается от старого и типа нитакоекакфсе, понимаешь? В итоге ожидаемо получился кал, даже говноланг лучше выглядит.
>пидорасам захотелось сделать что-то ПРОГРЕССИВНОЕ просто так - это же пидорасы
Те, кто долго жил среди пидарасов, говорят, что они втайне стыдятся своего греха и стараются поразить всякими фокусами. Думают про себя так: «Да, я пидарас. Так уж вышло – что теперь делать… Но может быть, я гениальный пидарас! Вдруг я напишу удивительную музыку! Разве посмеют плохо говорить о гениальном музыканте…» И поэтому все время стараются придумать новую музыку, чтобы не стыдно было и дальше харить друг друга в дупло. И если б делали тихо, в специальном обитом пробкой месте, то всем было бы так же безразлично, как и то, что долбятся в сраку. Но их музыку приходится слушать каждый день, ибо заводят ее повсеместно. И потому не слышим ни ветра, ни моря, ни шороха листьев, ни пения птиц. А только один и тот же пустой и мертвый звук, которым хотят удивить, запуская его в небо под разными углами. Бывает, правда, что у пидарасов ломается музыкальная установка. В такие минуты спеши слушать тишину.
>А он умеет собирать проект по команде vcpkg build? Или прежде надо ручками написать CMake-душнину?
Cargo — это игрушка для написания hello world. Когда проект становится сложнее, то начинается:
https://github.com/ranger-finance/ostium-rust-sdk/blob/main/build.rs
https://github.com/rust-random/getrandom/blob/master/build.rs
https://github.com/rust-lang/libz-sys/blob/main/build.rs
https://github.com/dtolnay/proc-macro2/blob/master/build.rs
Я советую очень внимательно посмотреть на последний скрипт и осознать суть проблемы, которую я писал выше — вся "простота" опирается на единственный компилятор и тулчейн. Если компилятор-тулчейн не один, а если ещё и внешнее окружение может быть разное — всё, пиздец, приехали, расчехляй build.rs.
С другой стороны, действительно, включение одной либы на CMake выглядит больше:
option(ENABLE_FOO "Enable the Foo feature" ON)
if (ENABLE_FOO)
find_package(Foo REQUIRED)
target_link_libraries(myapp PRIVATE Foo::Foo)
endif()
Я для ответа попытался найти что-то масштаба SDL2, но ничего подобного для Rust просто нет. SDL2 я люблю потому, что у неё одни из самых ебливых зависимостей, потому что она сама абстрагирует особенности целевых платформ. Но ящик для Rust просто оборачивает SDL2 в FFI, полагаясь на уже произведённую CMake-ом конфигурацию при сборке SDL2.
Самая писечка:
https://github.com/Rust-SDL2/rust-sdl2/blob/master/Cargo.toml
[package.metadata.vcpkg]
dependencies = ["sdl2"]
Ой, шо за хуйня, Cargo не может собрать SDL2 на винде без vcpkg. Как же так?
Я напоминаю, что SDL2 — это каких-то сраных 150 тыс строк, это даже не GTK4, в котором уже порядка 600 тыс строк. Возьмите и перепишите SDl2 на расте! — А, не, не хотим, слишком сложно, хотим cargo build.
Ещё раз повторюсь: Cargo и Rust работают так классно, пока их используют в роли потешной дёргалки для внешних библиотек, пока им самим не нужно адаптироваться под окружение.
Питон тридцать лет назад прошёл по ТЕМ ЖЕ граблям, когда его система сборки считала, что на компьютере может быть единственный интерпретатор, единственный набор библиотек, и вообще, подходит любая платформа, если эта платформа — Unix.
Да, кстати, чуть не забыл, вообще-то в мире бывают ситуации, когда существует более одного репозитория, потому что на некоторых ЯП пишут что-то большее, чем hello world-ы, потому возникают патченные библиотеки, у которых своё версионирование — удачи применять pkgname >= 1.2.1 в таком случае. В данном случае я соглашусь с тем, что всё-таки дефолтное версионированние для центральной репы Cargo всё-таки проще, а сложные случаи такие же сложные, как и в vcpkg.
>А он умеет собирать проект по команде vcpkg build? Или прежде надо ручками написать CMake-душнину?
Cargo — это игрушка для написания hello world. Когда проект становится сложнее, то начинается:
https://github.com/ranger-finance/ostium-rust-sdk/blob/main/build.rs
https://github.com/rust-random/getrandom/blob/master/build.rs
https://github.com/rust-lang/libz-sys/blob/main/build.rs
https://github.com/dtolnay/proc-macro2/blob/master/build.rs
Я советую очень внимательно посмотреть на последний скрипт и осознать суть проблемы, которую я писал выше — вся "простота" опирается на единственный компилятор и тулчейн. Если компилятор-тулчейн не один, а если ещё и внешнее окружение может быть разное — всё, пиздец, приехали, расчехляй build.rs.
С другой стороны, действительно, включение одной либы на CMake выглядит больше:
option(ENABLE_FOO "Enable the Foo feature" ON)
if (ENABLE_FOO)
find_package(Foo REQUIRED)
target_link_libraries(myapp PRIVATE Foo::Foo)
endif()
Я для ответа попытался найти что-то масштаба SDL2, но ничего подобного для Rust просто нет. SDL2 я люблю потому, что у неё одни из самых ебливых зависимостей, потому что она сама абстрагирует особенности целевых платформ. Но ящик для Rust просто оборачивает SDL2 в FFI, полагаясь на уже произведённую CMake-ом конфигурацию при сборке SDL2.
Самая писечка:
https://github.com/Rust-SDL2/rust-sdl2/blob/master/Cargo.toml
[package.metadata.vcpkg]
dependencies = ["sdl2"]
Ой, шо за хуйня, Cargo не может собрать SDL2 на винде без vcpkg. Как же так?
Я напоминаю, что SDL2 — это каких-то сраных 150 тыс строк, это даже не GTK4, в котором уже порядка 600 тыс строк. Возьмите и перепишите SDl2 на расте! — А, не, не хотим, слишком сложно, хотим cargo build.
Ещё раз повторюсь: Cargo и Rust работают так классно, пока их используют в роли потешной дёргалки для внешних библиотек, пока им самим не нужно адаптироваться под окружение.
Питон тридцать лет назад прошёл по ТЕМ ЖЕ граблям, когда его система сборки считала, что на компьютере может быть единственный интерпретатор, единственный набор библиотек, и вообще, подходит любая платформа, если эта платформа — Unix.
Да, кстати, чуть не забыл, вообще-то в мире бывают ситуации, когда существует более одного репозитория, потому что на некоторых ЯП пишут что-то большее, чем hello world-ы, потому возникают патченные библиотеки, у которых своё версионирование — удачи применять pkgname >= 1.2.1 в таком случае. В данном случае я соглашусь с тем, что всё-таки дефолтное версионированние для центральной репы Cargo всё-таки проще, а сложные случаи такие же сложные, как и в vcpkg.
Если не заниматься линковкой архивов/шаред объектов, зачем вообще системы модулей/пакетов в целом, если можно дёргать репозиторий с исходниками?
Ещё добавлю, build.rs/build.zig - це харашо, потому что это 1 система сборки на язык, а в сях их больше 1-й, ну там Autotools/Cmake/Meson, если что не спорю с утверждением "Cargo — это игрушка для написания hello world".
>Я советую очень внимательно посмотреть на последний скрипт
Килотонны сборочного кода это везде так, где не hello world надо собирать, тут да, просто не отделаешься, если надо писать, то придётся написать.
https://github.com/systemd/systemd/blob/main/meson.build
>Если не заниматься линковкой архивов/шаред объектов, зачем вообще системы модулей/пакетов в целом, если можно дёргать репозиторий с исходниками?
Я напоминаю, что Cargo не в последнюю очередь был создан для того, чтобы побороть бесконечно медленную компиляцию в Rust. Без этой хуйни можно просто скачивать сорцы с гитхабов и класть в один каталог — зачем их как-то предварительно собирать, если они на одном языке и для одного тулчейна?
Тот же Delphi/Pascal, с которого я начинал и в котором я обожаю систему сборки, может вообще собирать огромный проект без единого прекомпилированного модуля. У меня так и было: полная сборка 6 млн строк библиотек из сорцов целых 5 минут собиралось на двухъяденой машине в хуй знает каком году — нейросетка мне подсказывает, что аналогичный объем кода на расте на той же машине будет собираться 3 часа. Инкрементальная сборка не делфи где-то 20 секунд была.
>3462894
>build.rs/build.zig - це харашо, потому что это 1 система сборки на язык, а в сях их больше 1-й, ну там Autotools/Cmake/Meson
Cargo НЕ решает целого ряда задач, для которых нужны Autotools/CMake/Meson. А именно — платформоспецифичная конфигурация зоопарка библиотек и инструментов на разных ЯП. Там, где нужно это сделать — Cargo дёргает тот же vcpkg (который дёргает cmake), как я показывал выше.
>Килотонны сборочного кода это везде так, где не hello world надо собирать, тут да, просто не отделаешься, если надо писать, то придётся написать.
Если взять скрип попроще:
https://github.com/DPDK/dpdk/blob/main/meson.build
где половину кода — это просто принты, то даже тут скрипт build.rs выглядит жирнее в два раза:
https://pastebin.com/jQzw8eYv
Нужно понимать, что DSL для CMake/Meson созданы не просто так, они решают задачу, которые неудобно решать ни башем, ни питоном, ни C/C++. Я сам имел честь делать проект на SCons, и я знатно наебался с этими вашими Тьюринг полными ЯП. Но разрабы Cargo посчитали, что они самые умные и им DSL не нужен.
По факту в Cargo просто повторили NPM со всеми его недостатками, а именно — хуёвой поддержкой сторонних средств сборки и распределённых источников сорцов (хорошо работают только если все пакеты есть в центральной репе). И лучшее, что может Cargo — это дёрнуть те же vcpkg+CMake.
Если же Rust начнёт претендовать на системный ЯП с собственным управлением внешними зависимостями, то тот же Meson внезапно напялят на Cargo, будете писать в дополнение к build.rs еще и meson.build, и рассказывать, что "лучше придумать было нельзя".
>Если не заниматься линковкой архивов/шаред объектов, зачем вообще системы модулей/пакетов в целом, если можно дёргать репозиторий с исходниками?
Я напоминаю, что Cargo не в последнюю очередь был создан для того, чтобы побороть бесконечно медленную компиляцию в Rust. Без этой хуйни можно просто скачивать сорцы с гитхабов и класть в один каталог — зачем их как-то предварительно собирать, если они на одном языке и для одного тулчейна?
Тот же Delphi/Pascal, с которого я начинал и в котором я обожаю систему сборки, может вообще собирать огромный проект без единого прекомпилированного модуля. У меня так и было: полная сборка 6 млн строк библиотек из сорцов целых 5 минут собиралось на двухъяденой машине в хуй знает каком году — нейросетка мне подсказывает, что аналогичный объем кода на расте на той же машине будет собираться 3 часа. Инкрементальная сборка не делфи где-то 20 секунд была.
>3462894
>build.rs/build.zig - це харашо, потому что это 1 система сборки на язык, а в сях их больше 1-й, ну там Autotools/Cmake/Meson
Cargo НЕ решает целого ряда задач, для которых нужны Autotools/CMake/Meson. А именно — платформоспецифичная конфигурация зоопарка библиотек и инструментов на разных ЯП. Там, где нужно это сделать — Cargo дёргает тот же vcpkg (который дёргает cmake), как я показывал выше.
>Килотонны сборочного кода это везде так, где не hello world надо собирать, тут да, просто не отделаешься, если надо писать, то придётся написать.
Если взять скрип попроще:
https://github.com/DPDK/dpdk/blob/main/meson.build
где половину кода — это просто принты, то даже тут скрипт build.rs выглядит жирнее в два раза:
https://pastebin.com/jQzw8eYv
Нужно понимать, что DSL для CMake/Meson созданы не просто так, они решают задачу, которые неудобно решать ни башем, ни питоном, ни C/C++. Я сам имел честь делать проект на SCons, и я знатно наебался с этими вашими Тьюринг полными ЯП. Но разрабы Cargo посчитали, что они самые умные и им DSL не нужен.
По факту в Cargo просто повторили NPM со всеми его недостатками, а именно — хуёвой поддержкой сторонних средств сборки и распределённых источников сорцов (хорошо работают только если все пакеты есть в центральной репе). И лучшее, что может Cargo — это дёрнуть те же vcpkg+CMake.
Если же Rust начнёт претендовать на системный ЯП с собственным управлением внешними зависимостями, то тот же Meson внезапно напялят на Cargo, будете писать в дополнение к build.rs еще и meson.build, и рассказывать, что "лучше придумать было нельзя".
систему сборки от пакетного менеджера отличить не могут и понять кто что делать должен?
>систему сборки от пакетного менеджера отличить не могут и понять кто что делать должен?
А где система сборки для Rust? Её нету.
Какие чулочки и анальные пробки вы используете при разработке?
build.rs
А какой смысл переизобретать велосипед, если есть https://crates.io/crates/petgraph ? Что тебе в петграфе не устраивает?
У вас мегасервисы и гигасервисы? Понимаю..
>A nanoservice has the ability to run as a microservice if needed. However, a nanoservice also has the ability to be compiled for use within another server.
Получается обычные микросервисы которые можно в один бинарь объединить?
Звучит прикольно конечно, оссобено если они в одном бинаре как то эффективно между собой общаться начнут, но хзы какую эту проблему решает

>Звучит прикольно конечно, оссобено если они в одном бинаре как то эффективно между собой общаться начнут, но хз какую эту проблему решает
Сам автор объяснял https://youtu.be/J94ARUzhhWI?t=924 что
был кубернетис кластер, но его сложно было тестировать на локалхосте, отслеживать http-запросы и т.д. Они тогда разделили проект на несколько воркспейсов и закатали их в один dockerfile. В итоге несколько наносервисов сидят в одном докерфайле и общаются по tcp через контракты. Получается строгая типизация, проще тестирование и нет запросов по сети.
Но не суть. Это что-то типа тоника https://docs.rs/tonic/latest/tonic/ но чуть более колхозная реализация. Мне ещё нравится курс "Rust, data engineering course". Но его можно только купить, на торрентах нет нигде.
Нулевой, вката нет. Можешь только на месте затащить в проекты, обладая достаточной экспертизой
Ах ты сука... ну ладно, был неправ, значит есть. А я за бабки его смотрел на oreilly. Но вообще я бы скачал всю серию https://www.coursera.org/specializations/rust-programming#courses Там неплохие такие курсы.

1080x1920, 0:14
>>хорошую бумажную книгу
Мне нужна одна книга, а не 4. И она нужна на русском языке, я ебал в рот изучать новую область на неродном
>Нулевой, вката нет. Можешь только на месте затащить в проекты, обладая достаточной экспертизой
Это показательно. Ещё раз повторяясь: писать код на Rust сложно, долго, и дорого. В том числе из-за пиздецки долгой компиляции. Да, нейросетки ускоряют процесс, но другие ЯП они ускоряют ещё сильнее. Итого что-то более-менее серьёзное на Rust представляет собой тупо дёргалку библиотек на C/C++ — о какой безопасности указателей мы тогда ведём речь?
>Скоро Пинус Трольвальдос свое говноподелие на Руст перепишет
Очень нескоро. Им для драйверов пришлось std раста переделывать.
>>63611
>Ебал в рот этот продукт нпмоподобный.
>>графы
>>алгоритмы
>>хуилион зависимостей
>Чёт я охуеваю.
Ну так они автоматически разрешаются Cargo, чо ты паришься? Да, в C/C++ большая часть этих зависимостей была бы в самом проекте.
> нпм
Ну до этого кала невозможно дотянуться, он задал слишком высокую планку. Я помню как-то пытался развернуть китайский кал на ноде, там 1500 зависимостей и npm где-то на 800 зависимости отъёбывает, жмёшь рестарт сборки, он доходит до 850 и опять отъёбывает, и так по 50 зависимостей, причём каждый запуск пересборки это 10 минут. Я так долго даже с крестами никогда не ебался, как с нодой. А ещё если TS есть в проекте, это вообще мрак.
>>63625
> они автоматически разрешаются Cargo
Проблема в том что время сборки улетает в космос, т.к. карга пересобирает часть зависимостей. У того же bevy каждая пересборка пересобирет 10 зависимостей из 350, в итоге поменял строчку, нажал сборку и ждёшь минуту-две в хеллоу-ворлде. Ещё и нет глобального кэша. Для примера опять тот же vcpkg можно привести, где есть нормальный глобальный кэш, зависимость собирается только один раз для всех проектов.
Алсо, почему так получилось что только на на крестах в msvc есть хот-релоад, а больше компилируемого ЯП с таким не существует? С задачей поменять строчку кода на горячую и сразу увидеть изменения справляется отлично.
потому что нет abi а значит и нет .dll\.so
>Алсо, почему так получилось что только на на крестах в msvc есть хот-релоад, а больше компилируемого ЯП с таким не существует?
Спорная фича в целом. Если мне нужно один раз изменить поведение логики, то я просто в отладчике меняю переменные. Уже на уровне оптимизации "-Og" код становится настолько хуй пойми каким, что вообще теоретическая возможность его горячей подмены становится сомнительной — слишком много вещей потенциально может поменять одна строчка кода.
Во всяких там JVM/CLR/V8 есть заранее заложенные алгоритмы JIT-оптимизации-деоптимизации, благодаря которым можно нужную функцию деоптимизировать и подменить, но в AoT компиляции такой возможности нет.
В Паскале эта проблема решалась мгновенной перекомпиляцией — я щитаю, что это намного более радикальное решение проблемы, чем горячая подмена. Я не верю в хуету плана "у меня упала БД, но мне нельзя её перезапускать, я к ней подключился отладчиком, сейчас ручками восстановлю правильный ход алгоритма, и продолжу работу БД" — это просто фантазия из какой-то методички, никакой продакшен так не работает.
Вот интерактивный REPL уже есть в отладчиках-компиляторах:
https://clang.llvm.org/docs/ClangRepl.html
Чо вам ещо надо?
> Если мне нужно один раз изменить поведение логики, то я просто в отладчике меняю переменные.
Хот-релоад тупа быстрее, если большой проект. Отладчик слишком ограниченный контроль имеет, хот-релоад же любой код может пропатчить налету.
> вообще теоретическая возможность его горячей подмены становится сомнительной — слишком много вещей потенциально может поменять одна строчка кода
В msvc хот-релоад работает с О2, главное чтобы LTO выключено было.
>хот-релоад же любой код может пропатчить налету
И нахуя? Откуда ты знаешь, что старый код не наделал сайдэффектов?
>В msvc хот-релоад работает с О2, главное чтобы LTO выключено было.
Мне нейросетка говорит, что с /O2 не работает. Уже сделали поддержку?
>И нахуя?
чтобы не перезапускать сборку после изменения пары строчек, ускоряет дебаг в разы
хзы как там в вебе это у вас, в геймдеве это мастхев
мимо пробегал
> Откуда ты знаешь
А ты откуда знаешь как код вообще работает? Это же читать надо, сложно.
> Мне нейросетка говорит
А бабки у подъезда что по этому поводу говорят?
> Уже сделали поддержку?
Всегда работало. Компилятору похуй на оптимизации, из дебаг-информации он знает всё. Дебаггер же без проблем работает с оптимизированным кодом в релизном билде, даже с LTO.
>А бабки у подъезда что по этому поводу говорят?
Офф доки говорят то же:
https://learn.microsoft.com/en-us/visualstudio/debugger/supported-code-changes-cpp?view=vs-2022
"Unsupported scenarios
Debugging native apps compiled with /Zo (Enhance Optimized Debugging)...
Debugging optimized code.
"
>Компилятору похуй на оптимизации, из дебаг-информации он знает всё. Дебаггер же без проблем работает с оптимизированным кодом в релизном билде, даже с LTO.
Разговор шел не про отладчик, а про Hot Reload — это совершенно разные функции. Похоже, что ты долбоеб, который тупее нейросетки.
>>63912
>чтобы не перезапускать сборку после изменения пары строчек, ускоряет дебаг в разы
>хзы как там в вебе это у вас, в геймдеве это мастхев
В геймдеве тесты обычно ведутся на минимальном уровне оптимизации, потому что без оптимизации игра бегает недопустимо медленно. А с оптимизацией Hot Reload не работает.
В остальном я согласен с тем, что стар игры может очень долго происходить. Возможно, стоит придумать что-то для ускорения старта игры. рукописный Hot Reload через DLL делался и без хитрых компиляторов — в таком видео его возможно выполнить даже с оптимизированным кодом.
> А с оптимизацией Hot Reload не работает
работает
> Hot Reload через DLL
а ой, я про него и говорил (думал дебаггер также это и делает)
в расте кстати вобще возможно такое запилить?

> Офф доки говорят то же
Так я тебе написал с какими оптимизациями он не работает. Мог бы уже сам проверить давно.
> это совершенно разные функции
Это ты даун. Хот-релоад в msvc делает дебаггер. Для этого надо включить дебаг-информацию для него.

> Почему
temporary lifetime extension
> Зачем
чтобы не возникало проблем в коде по типу r = &Class:new();
> константу
создается новая переменная, константа не изменяется
> создается новая переменная, константа не изменяется
Разве не смысл ссылки в том, что она ссылается на существующий объект? Я сравниваю с плюсами, так там такое бы просто не скомпилировалось без const, что логично
>на существующий объект?
он и существует, я же написал тебе переменную под капотом новую создают
а, понял. только не перменная, а объект новый создался. это не rvalue из плюсов, а больше как если бы сделали новый объект инта от параметра 92. спасибо
fn main() {
let mut r = &mut 2;
r += 1;
println!("{}", r);
r = &mut 3;
r += 1;
println!("{}", r);
}
Такой код не сработает. Почему?
>Почему в расте присваиваение зовётся биндом, а не ассайментом? В хаскеле понятно, что бинд это бинд, а расте то почему?
Самое смешное то, что в BPCL/CPL был бинд и для присваивания не использовался символ тождества, но два индуса, керниган и ритчи, нахуевертили нам фортрана, и с тех пор тождеством во многих ЯП обозначают присваивание. То есть, рандомная хуйня становится Industry Standard и Best Practice.
>>64027
>Я сравниваю с плюсами, так там такое бы просто не скомпилировалось без const, что логично
"Const" в C++ — это одна из самых ублюдочных бездарных фичей высранных за историю IT. Вот насколько нужно быть ебанатом, чтобы обозначать переменную ключевым словом "const"? Потому логично, что в новом языке неконец-то сделали адекватные константы.
>Это ты даун. Хот-релоад в msvc делает дебаггер. Для этого надо включить дебаг-информацию для него.
Его делает отладчик с компилятором. Причем, компилятор также высирает обновлённый PDB, чтобы отладчик в следующей итерации мог правильно обновить код.
>Так я тебе написал с какими оптимизациями он не работает. Мог бы уже сам проверить давно.
не мог, у меня не стоит VS. То, что я проверил, говорит однозначно, что для оптимизированного кода ни в каких версиях нельзя сделать Hot Reload.
> То, что я проверил, говорит однозначно
Там где ты проверял ничего про О2 не написано. Ты просто тупой и не понимаешь что значит оптимизации.
>чтобы обозначать переменную ключевым словом "const"
всегда обозначаю, это показатель хорошего кода.
>"Const" в C++ — это одна из самых ублюдочных бездарных фичей высранных за историю IT. Вот насколько нужно быть ебанатом, чтобы обозначать переменную ключевым словом "const"? Потому логично, что в новом языке неконец-то сделали адекватные константы.
почему? вполне нормальная штука - константная переменная. В чём проблема?
>фп стиле
>пидораст
Но это же убогая байтоёбская императивщина для либерально-педерастических js-петухов, которые ещё вчера кнопки красили в веб-параше.
Я раст учу только 2 часа, так что не могу ответить на этот вопрос. Но фп (а точнее его элементы) протекает посепенно в другие языки, в том числе в плюсы (в шаблоны в основном, хотя и на ренжах че то есть интересное). Так что скорее всего элементы кто то использует. Да даже в джаве стримы есть, что тоже отголосок фп и часто используется.

Звездочки проебались.
>всегда обозначаю, это показатель хорошего кода.
Это очень спорный подход, который так или иначе будет заканчиваться в районе const_cast. Как ты не крутись, а всё равно что-то придётся кастовать. А потом пошло friend mutable, и по сути const превращается в хинт для линтера — примерно так к нему и стоит относиться. И уж точно const не гарантирует корректности работы с памятью. То есть, да, "показатель хорошего кода" — но это всё ещё не значит, что код не говно.
При этом код либы без const будет лаконичнее, особенно если имеют место сишные интерфейсы, в которых часто забивают на const.
>>64096
>если че в расте по сути то же самое по умолчанию навешивается
Если чо — нет:
let mut x = 5;
let immut_ref = &x;
let mut_ref = &mut x; // error[E0502]: cannot borrow `x` as immutable because it is also borrowed as mutable
let mut x = 5;
let immut_ref = &x;
x = 10; // error[E0506]: cannot assign to `x` because it is borrowed
Всё то же самое спокойно работает в C++:
int x = 5;
const int immut_ref = &x;
mut_ref = &x;
mut_ref = 10;
x = 5;
immut_ref = &x;
x = 10;
Ладно, разные вещи. Но в чем проблема то конста в плюсах? Конст касты - костыль. Его нет в норм коде. Он наверное существует только, как ты заметил, из за сишных либ, где мы точно знаем, что туда можно положить конст, но оно так не помечено
Что меня в джаве бесило - нет конста, передавая объект в функцию, ты не можешь быть уверен, что функция его не поломаеи
>Конст касты - костыль. Его нет в норм коде
Я "норм кода" в жизни не видел. Если чо — по твоим же критериям libstdc++ не является норм кодом:
https://github.com/search?q=repo%3Agcc-mirror%2Fgcc+path%3A%2F^libstdc\%2B\%2B-v3\%2F%2F+const_cast&type=code
Mutable используется реже, но он всё равно есть:
https://github.com/search?q=repo%3Agcc-mirror%2Fgcc+path%3A%2F^libstdc\%2B\%2B-v3\%2F%2F+mutable&type=code
>Что меня в джаве бесило - нет конста, передавая объект в функцию, ты не можешь быть уверен, что функция его не поломаеи
Так и в C++ ты не можешь быть уверен, лол. Во-первых const_cast, во-вторых указатели-псевдонимы без const — в чём тут вообще можно быть уверенным? Уверенным можно быть только после строгого ревью каждого пул реквеста.
>который так или иначе будет заканчиваться в районе const_cast.
Мы про константные переменный или про методы? В любом случае константные методы это так же прекрасно и нужно пихать const везде где только возможно.
>А потом пошло friend mutable
Значит проблемы в архитектуре приложения. Зочем тогда насиловать Кресты если можно писать на Си где тебя ни что не ограничивает?
Пишу на Си и Крестах и хочу пояснения от чулочников итт поводу const, а не жалкие пуки через анальную пробку.
CLion?

>Python
Ок, а с JS node что не так?
Зачем тебе ебля в туза нон-стоп на ближайшее десятилетие? (теперь понятно откуда мемы про фембойчиков...)
Ещё есть Ruby
А какая такая охуенная производительность нужна для веб-параши? Если вдруг будет очень нужно производительно дробить числа - напиши дробилку на плюсах и вызывай из питухона.
потому что не идут в тред для ретардов к плюсовикам
держи
cat << EOF >config.toml
change-id = 136941
[build]
build = "x86_64-unknown-linux-gnu"
host = ["x86_64-unknown-linux-gnu"]
target = ["x86_64-unknown-linux-gnu", "mipsel-unknown-linux-gnu"]
docs = false
extended = true
tools = ["cargo", "rustfmt", "clippy"]
[rust]
codegen-units-std = 1
dist-src = false
channel = "stable"
rpath = true
lld = false
[target.mipsel-unknown-linux-gnu]
linker = "mipsel-unknown-linux-gnu-gcc"
cc = "mipsel-unknown-linux-gnu-gcc"
cxx = "mipsel-unknown-linux-gnu-g++"
ar = "mipsel-unknown-linux-gnu-ar"
ranlib = "mipsel-unknown-linux-gnu-ranlib"
crt-static = false
[target.x86_64-unknown-linux-gnu]
linker = "свой gcc"
cc = "свой gcc"
cxx = "свой g++"
ar = "свой ar"
ranlib = "свой ranlib"
crt-static = false
[install]
prefix = "куда хочешь поставить"
[llvm]
link-shared = true
download-ci-llvm = false
EOF
./x.py build
./x.py install
пользуйся
держи
cat << EOF >config.toml
change-id = 136941
[build]
build = "x86_64-unknown-linux-gnu"
host = ["x86_64-unknown-linux-gnu"]
target = ["x86_64-unknown-linux-gnu", "mipsel-unknown-linux-gnu"]
docs = false
extended = true
tools = ["cargo", "rustfmt", "clippy"]
[rust]
codegen-units-std = 1
dist-src = false
channel = "stable"
rpath = true
lld = false
[target.mipsel-unknown-linux-gnu]
linker = "mipsel-unknown-linux-gnu-gcc"
cc = "mipsel-unknown-linux-gnu-gcc"
cxx = "mipsel-unknown-linux-gnu-g++"
ar = "mipsel-unknown-linux-gnu-ar"
ranlib = "mipsel-unknown-linux-gnu-ranlib"
crt-static = false
[target.x86_64-unknown-linux-gnu]
linker = "свой gcc"
cc = "свой gcc"
cxx = "свой g++"
ar = "свой ar"
ranlib = "свой ranlib"
crt-static = false
[install]
prefix = "куда хочешь поставить"
[llvm]
link-shared = true
download-ci-llvm = false
EOF
./x.py build
./x.py install
пользуйся
Ты можешь прикрутить мутабельность у любому объекту типа.
>норм посаны так ебашут
А потом вашему const методу нужен кэш или разделяемая ссылка — и пиздец, вот тебе твой const и закончился.
....
Ну я как и думал:
https://github.com/SerenityOS/serenity/blob/d653eec65ce58fb317e0c6ae64dc00646a566395/Userland/Libraries/LibGfx/Bitmap.cpp#L578-L584
Bitmap::to_shareable_bitmap() вызывает to_bitmap_backed_by_anonymous_buffer(), и вуаля:
https://github.com/SerenityOS/serenity/blob/d653eec65ce58fb317e0c6ae64dc00646a566395/Userland/Libraries/LibGfx/Bitmap.cpp#L533-L543
return NonnullRefPtr { const_cast<Bitmap&>(*this) }
Не может быть разделяемый объект const, хоть ты тресни. То есть, чисто теоретически можно было изойти на говно, сделать несколько объектов, заставить пользователя во всех методах передавать два объекта, но разрушительность такого подхода в плане читаемости-понимаемости будет намного хуже, чем простое дублирование const/nonconst методов, как у тебя на скрине (с мостиком через const_cast, естественно).
>Зед
>>65102
>Ага, но с патчем на шрефты.
Тоже всопнился зед, но я не ебу, что на пикче. Его пытаются хайповать, мол "смотрите, на расте не только hello world можно писать". И, в принципе, за 5 лет прогресс впечатляющий, оно даже в кооперацию умеет. Но что-то как-то комьюнити не спешит никуда.
Для сравнения — VS Code делался три года, с нуля до версии 1.0.
>Node может в производительность уровня Go,
Нода может в производительность только если с ней наебаться столько времени, за которое уже можно было написать код на Rust.
нужно например:
1) создавать одно соединение и юзать его где угодно и не таскать его везде воюя с барроу чекером;
2) в одну строчку запихать вектор (или любой другой тип) в базу, без явной сериализации и прочего говна;
3) прочитать то, что запихнули в п.2
> юзать его где угодно
> не таскать его везде
что
>запихать вектор (или любой другой тип) в базу, без явной сериализации
что
да, лень расписывать
>в rust есть красивые решения для работы с SQL?
Есть. https://github.com/launchbadge/sqlx
>создавать одно соединение и юзать его где угодно и не таскать его везде воюя с барроу чекером;
https://docs.rs/sqlx/latest/sqlx/type.PgPool.html
>в одну строчку запихать вектор (или любой другой тип) в базу, без явной сериализации и прочего говна;
Используй unnest
sqlx::query(
r#"
UPDATE orders
SET strategy_id = $1
WHERE order_id IN (SELECT * FROM UNNEST($2))
"#,
)
.bind(&strategy_id)
.bind(order_ids)
.execute(&mut tx)
.await?
>unnest
тоже гавно, что и json получается
я хотел, чтобы оно мне сразу все в bytea запихала, я только derive прописал у структуры
уже смирился, что все сначала с помощью bincode в Vec<u8> захуярю, но тут выясняется, что для chrono, что в моей структуре прячется, нет импла Encode/Decode
ладно, похуй, и на том спасибо
про пулы знаю, но там же все равно его создаешь, а потом ссылку (мутабельную?) гоняешь из функцию в функцию
а мне бы хотелось бы из любого места в кода хуйнуть sql запрос без параши типа "let mut client =
Client::connect("postgresql://postgres:postgres@localhost/main", NoTls).unwrap();"
какая блядь разница между [u8; 10] и [u8; 50]??
>какая блядь разница между [u8; 10] и [u8; 50]??
Ну он говорит, что имплементация есть только для [u8, 0], [u8, 10], [u8, 11], [u8, 12]... Разработчик не запилил сериализацию для таких массивов с таким количеством повторений.
эт я прочитал, но все равно не понял
вы имеете сказать шо там для каждого [T; x] отдельная реализация?
пахнет хуйней, я бы даже сказал воняет
проиграл
>вы имеете сказать шо там для каждого [T; x] отдельная реализация?
Нуууу да. А в других библиотеках тоже самое. Допустим если библиотека линейной алгебры, то ты не можешь сделать матрицу миллиард на миллиард строк. Он тебе скорее всего скажет, что нет такой реализации. К сожалению, это обратная сторона строгих типов. Возвращаемый тип у функции должен быть заранее известен. Я не могу сделать дженерик а-ля Output<T>, чтобы он один раз возвратил Output<foo>, а в другой раз возвратил Output<bar>. Мне надо описать все возможные значения Output заранее. В принципе, можно попробовать стереть тип, конвертировать в Box<dyn Any + Send + Sync> (это что-то наподобие any в typescript), но тогда у тебя будет ёпка с downcast'ингом, когда ты будешь превращать его в конкретный тип. В твоём случае, надо было использовать не [u8, 10], а либо какой-нибудь Arc<[u8]>, либо Vec<u8>, а в самом коде делать let arr = std::array::repeat(0); тогда было бы правильно.
>Допустим если библиотека линейной алгебры, то ты не можешь сделать матрицу миллиард на миллиард строк. Он тебе скорее всего скажет, что нет такой реализации.
А чулочникам аналоги крестовых шаблонов не завезли?
Я хз про что ты говоришь. Поскольку я не программирую на С++. Но в целом, проблема не является нерешаемой. Её можно решить через какой-нибудь трейт обжект, другой вопрос - кому это нахуй надо. Это второстепенный функционал, от которого большинству не жарко ни холодно. Стараться ради додика, которому хочется посраться а-ля АЗАЗАЗА НИ МОЖИШЬ СДЕЛАТЬ. Короче просто лень.
ну как видишь в serde не написали определение для произвольного размера массива
> почему так сделали?
не ебу, не разраб serde, но кажется что то со старыми версиями раста связано
https://users.rust-lang.org/t/derive-serde-serialize-when-struct-has-array-as-one-of-its-member/81820/2
> как пофиксить
в ссылке описано
> как должно быть реализовано правильно
нужен раст 1.51 для const generics:
impl<T, const N: usize> MyTrait for [T; N]
>>66670
>аналоги крестовых шаблонов
макросы
trait Hui {}
struct Pizda<const M: usize> {}
impl<const M: usize> Hui for Pizda<M> {}
impl !Hui for Pizda<12> {}
нихуя не получается, ни через трейты, ни через ассоциативные типы никак. через макросы получилось только через процедурные и оно компилировалось очень долго, тк делал импл от usize::MIN до usize::MAX без некоторых значений, типа 12, 7, 5 и тд для примера, те оно на cargo check захлёбывалось.
хм посмотрел дамп, оказывается произошёл оом и процесс был убит нахуй, те через макросы невозможно сделать нормально.

Негатив импл из-за пикрила не работает. Я вот такое навайбкодил, но там найтли:
https://play.rust-lang.org/?version=nightly&mode=debug&edition=2024&gist=99255a8ddc16973342721f9fdbf828c7
Нахуя вы этим говном занимаетесь долбонавты? Скоро абстракные фактори в раст завезут?
Выбрали инструмент потому что любят раст - очень инженерненько, очень прагматичненько.
@
Раст вытрахал всю любовь через анальный рефакторинг и бойлерплейт.
@
Переписали все на юнити всего за 6 недель, выкинув 400% бойлерплейта (то есть за все время они топтались на месте на расте, офигенное КПД).
Почему это говно еще вывозит на своем хайпе в 2025?
>Ebitengine
Кек
>Смотрите сами - преимущества ECS и rust - скорость кода, точность, сильная типизация - это все про производительный и безопасный код
Чёт обосрался с этого долбоёба, там под капотом какой-нибудь ансейф, который пизданёт рано или поздно.
> почему выбрали для разработки раст и Bevy
> ну мне нрав просто язык, а еще сообщество нрав
> а всмысле Bevy это нихуя не продакшен реди и делается любителями для прикола
Но а виноват конечно же раст)
>Но а виноват конечно же раст)
Челики решили в гейдев на языке для вебчика в оборонке и криптонаебалова, что могло пойти не так ))
Да чел, дело в языке, а не в игровых движках
существует 2-3 движка на которых реально можно написать игру и миллион движков на которых не написано ни одной игры
Модель владения в пидорасте слишком сильно режет пространство возможных програм на этом языке. Ты решил вписаться в пидорасто движуху, потом понял, что инструмент неподходящий, потому что челики в интернете нахваливали пидораст и продали тебе, потом читаешь в интернете
>Да чел, дело в языке, а не в игровых движках
>Ты просто недостаточно хорош для пидораста
>Etc
https://loglog.games/blog/leaving-rust-gamedev/
ЯЗЫК ИДЕАЛЬНЫЙ ДЛЯ ГЕЙ ДЕВА, ПРОСТО ПРОБЛЕМА В ВАС
проиграл)
>>71611
попробуй мой пост не жопой прочитать
буквально во всей истории можно смело менять раст на с++ и окажется что и плюсы для геймдева не подходят.
Ведь челы решили использовать вместо нормально движка кустарную залупу опенсорсную, и НЕОЖИДАННО оказывается легче всё на юнити\гейм мейкере переписать
Жопочтец тут только ты, пиздуй перечитывать, любитель засовывать раст во все дырки.
> пук пук, ну ребят ну скажите что раст плохой, всмысле не в нем проблема, Я СКАЗАЛ В НЕМ, ЭТО ОН МНЕ МЕШАЕТ БЫТЬ ВЕЛИКИМ ГЕЙМДЕВЕЛОПЕРОМ

покажешь где я хотя бы примерно это писал?)

можно в один итератор сред ариф посчитать? или пик это макс что можно?
ладно, хуй с вами
думал в стд что-то есть, а от меня прячут
нашел вроде
https://docs.rs/lib_rapid/latest/lib_rapid/math/general/trait.Averages.html#tymethod.arithmetic_mean

хотя с другой стороны, хули я хотел там увидеть?
автор еще пишет:
// Averages don't work properly when implemented using generics, I don't know why.
> Почему если язык такой хороший для продакшна его практически не используют в продакшне?
Есть одна облачная базюлька где хранение и репликация написаны на пидорасте, недавно продались за 1b, но название вам я не скажу, чтобы не палить контору.
для продакшена надо максимально простой и заточенный под обезьян. В расте наоборот
зачем го когда есть жаба.
Каркас проекта из спринг-бута сформировал командой, сервисы, аннотации раскидал, и всё можно в продакшен
намана, а чего тебе еще надо-то? наворачивай спринг за обе щеки
вся трагедия в том, что большинству клиентов с деньгами ничего и не надо, кроме как быстро сделать кастомный круд. И спринг это позволяет
так это и есть продакшен.
Чем быстрее и чем дешевле - тем лучше.
Держит нагрузку в 50к rpc на 4 гигах оперативки - отлично. В коде может разобраться первый попавшийся индус или студент - замечательно.
Надо было отдать пердоликам, чтобы долго, дорого, без прав на изменение логики?
Нормальное приложение это не шедевр. Если бы другие профессии исполняли свои обязанности как эти кодеры, то люди передохли бы давно. Недолго осталось до краха кододебилов.
Истину глаголишь, но на самом деле соль в другом - кабан физически не сможет набрать толковых людей на рынке труда. Срынок он вообще заточен на такие профессии как грузчик, штукатурщик вот это все, а что такое толковый инженер/разработчик/ученый и как его получить учебник экономикс не расскажет. Поступать как в вузиках где профнепригодных на первых курсах отсеивают, работодатель не может, трудовой договор обязывает платить нельзя уволить испытательный срок 3мес тоже написан под грузчиков и не подходит разработчику, ему надо вникать в код проекта сработаться с коллегами, интеллектуальный труд на либерально-рыночные взаимоотношения не натягивается. Но тут приходит на помощь мистер фреймворк и говорит - спокойно я со всем разберусь! Не надо больше заниматься поиском подающих надежды неограненных алмазов среди студентоты и хиканов фрилансеров, обучаете толпу мартых говнокодить на мне и все в вакансии пишите ищу макаку среймворк-нейм опыт от двух лет.
>>73063
Самое забавное и комитрагичное здесь другое. То есть за столько лет айтишки накопилась достаточная кодобаза, реализован был основной функционал нужный бизнесу, а так же создано столько различных сервисов конструкторов что код писать уже и не нужно и вся эта айтишная орава внезапно стала не нужна. Необходимо лишь поддерживать эти системы у кабанцов или деплоить что-то новое, по больше части так, на это понадобится пару человек всего.
Ну и с таким огромным количеством написанного кода, который успели айтимакаки нагенерить, вылезли все эти нейроночные помощники, их можно доверху всем этим дообучить и они полностью заменят кодогенерацию в репозы.
А трагедия тут в том что хоть айтишка и не сложная профессия, но достаточно кропотливая и гейткиперная чтобы люди убили на всякого рода дрочь очень много времени. Кто то и баку-магу ради крудошлепства и фронта заканчивал и алгоритмы дрочил
Прям х3: общемировой кризис, нейросети с достаточно накопленными знаниями по программированию, алгоритмам, теории, достаточно автоматизированный бизнес которому кодеры больше не нужны.
Появись те же нейронки в том виде в каком они есть хотя бы лет 20 назад и профессия выглядела бы совсем иначе. Интересно было бы тогда послушать всяких столманов и прочих говноедов. Что бы они тогда говорили про обученный на труде миллионов людей их собственные асистенты-выпизделки
>создано столько различных сервисов конструкторов что код писать уже и не нужно
Ну, сервисы конструкторы веб сайтов так и не стали достаточно популярными. Я еще в конце нулевых годов в детстве делал сайт на конструкторе без какого либо знания php и html. Тогда вообще их много было, юкоз, народ, блогпост итд, но все равно почему-то все они сдохли, а профессия фронтендера до сих пор жива.
>>73104
>В общем все сложилось так неблагополучно и наложилось друг на друга что появилось огромное поколение (помните айти нация мем такой) которое вложило кучу финансов и времени в свою карьеру, но по итогу вышло вот такое говно
Отчасти соглашусь. Я и есть жертва этих всех неблагоприятных обстоятельств, просрал 4 года жизни в физмат школе (8-11 класс), просрал 4 года в бакалавриате, просрал 2 года в магистратуре. Получил корочки по "информатике и вычислительной технике" и "программной инженерии". 10 лет жизни потратил на то, чтобы получить айти образование.
И сейчас закрадываются мысли, что лучше бы шел учиться в ПТУ на какую-нибудь нормальную спецуху. Ну или дома сидел бы в игры играл и капчу двачевал, а не уроки учил и в институт ходил.
Другое дело, какие интеллектуальные профессии остаются, которые и в России востребованы и с которыми можно за рубеж уехать? Мне кажется таких больше не осталось. Ну можно было на инженегра пойти учиться, но там вне оборонки зп гораздо хуже чем у айтишников в кризис. Нужны люди чтобы трубу обслуживать и чтобы минимальную инфраструктуру поддерживать. Кроме трубы в России нет хороших прибыльных отраслей. Есть конечно всякие там свечные заводики, но они сейчас на грани банкротства.
Ну и всякие там медсестры за лоупрайс нужны чтобы помирающим бабкам капельницы ставить.
В целом ситуация безрадостная, айти умерло, а новых хороших профессий с достойной оплатой труда не появилось.
>просрал 4 года жизни в физмат школе (8-11 класс), просрал 4 года в бакалавриате, просрал 2 года в магистратуре
И стал вебкодомакакой, перекладчиком жидсонов.
Не самый худший исход.
Что такое девопс и круды? Ну про анал-литику в кабинете у директора можно не разжевывать, такое есть в каждой конторе даже не связаной с айти.
Угараешь чишо?
Девопс - поднятие инфраструктуры. Серваки, докеры, куберы, CI/CD и прочая залупа.
Круды - ебать, CREATE UPDATE DELETE интерфейсы, короче очередной запил говноадминки.

> Девопс - поднятие инфраструктуры. Серваки, докеры, куберы, CI/CD и прочая залупа.
Раньше это называлось сисадмин.
> Круды - ебать, CREATE UPDATE DELETE интерфейсы, короче очередной запил говноадминки.
Так это тоже сисадмин, короче из универсального сисадмина сделали двух узкоспециализированных - один устанавливает и настраивает БиДе второй на эськьюэль пишет запросы, я правильно понимаю?
сисадмин - кто сетку настраивает и витуху обжимает. И эктив директори настраивает
девопс - прокладка между программистами и железом. Программисты пишут микросервисы по тз, тестируют их у себя. А девопс всё это настраивает чтобы оно вместе работало, собирало логи, собирало мониторинг, чтобы развёртывать можно было по кнопке, чтоб репорты слало, политики хэлсчеков и количество инстансов и всё такое

как он & в первом IF интерпретирует?
& это битовый оператор AND
Первым выполняется (псевдоассемблер):
call foo
mov stackptr[2], $r1
andb $r0, $r1, $r1
cmpjneq $r1, 0x0, __if_block1
А вот почему первый блок выполняется я хз. По идее (0х00 & 0х01) == 0
>почему foo выполняется
А, извиняюсь, блок то не выполняется, все верно.
А так то вообще побитовые операции и порядок исполнения надо было освоить еще формошлепствуя на джаваскрипте https://learn.javascript.ru/bitwise-operators
https://www.w3schools.com/js/js_bitwise.asp
А вы блять базы основ не зная лезете в системное программирования считая что пидораст это как js-фреймворк, избавит от необходимости вникать в какие то такие около низкоуровневые вещи.
Ну и как к вам относится после этого?
Ну самое пиздатое это SRE, где ты по сути поддерженец и мониторыш. Максимум чилла.
Вопрос про систему владения, а не про частные случаи. Буквально следующие примеры - это реализовать красно-черное дерево, какой-нибудь граф (и нет школьный вариант с матрицей 100500 на 100500 ячеек не подходит).
Ждём ответов от гуру раста. Гуру С и С++ свои ответы выразили в книгах и многочисленных статьях. А растовики только брызжют слюной от якобы крутости своего языка, но учебных материалов не предоставляют.
С ансейфом. Так все растаны делают. Это в интернете они борцы за безопасность, а при встрече реальной задачи ансейф на ансейфе.
Ты и сам ни черта не знаешь, только в интернетах выделываться умеешь. Знатоки С и С++ дают ответы без выпендрёжа. Я и сам с 2004 помогал новичкам овладеть С на тогдашних популярных форумах. Знаю о программировании наверно поболее твоего.
Раст изобрели васяны кодеры, они не умеют писать книги и не понимают всю вот эту мультипарадигиенную морфологию. Хочешь раст от профессора который лекции в вузах читает, как страуструп - zig твой выбор.
Но то что зиг вообще появился это признак того что васяны думали в абсолютно верном направлений, я полагаю помагло им в этом четкое представление задачь которые им нужно было решать. Эти задачи это xml html css прочие библиотеки, которым раст очень хорошо подходит.
Но васяны не были бы васянами если бы как обычно не взялись все переписывать с нуля и в языке это все закрепили. Седой дед из масачусетса никогда не сделает язык который потребует немедля все переписывать и адаптировать под него. На том как обычно васяны и погорели, переписывание всегда начинается бодро и уже на трети пути выдыхается, а потом вообще замерзает с осознанием что переписать мало, нужно будет еще поддерживать и никто кроме тебя этого делать не будет особенно на экзотическом языке.
> зиг вообще появился это признак того что васяны думали в абсолютно верном направлений
Васяны при создании зига делали его в направлении максимального пердолинга.
> язык от профессора который лекции в вузах читает
Буквально антиреклама
> Как Страуструп
Только подтверждение этому
> от профессора который лекции в вузах читает
> zig
Ты видимо что-то попутал. Андрюха зумерок, я как-то смотрел его выступление, он даже не знал как выравнивание работает в сишке. И он постоянно втирает дичь про то что процедурное программирование - это топ, кроме процедур нихуя не надо. Единственная хорошая фича в зига это комптайм, остальное дерьмище, понадёрганное из других языков. Когда дёргают фичи из ГОвна - это уже редфлаг.
Так и страуструп много чего не знает и много чего не принимает в том числе в современных плюсах. И таненбауму линукс не нравится, он считает что ос надо строить не так. Конфликт прикладника с профессором-теоретиком это нормальное явление. Ты сам говоришь что смотрел лекцию этого эндрю как там его, он пишет статьи фонд создает, у него чисто академ подход и он очень заботится о совместимости с си/срр, без этого драйвер какого нибудь контроллера, который только в виде сишного исходника поставляется а то и вообще в виде библиотеки с заголовком, он это понимает а про выравнивание и прочее может вполне не знать, вспоминая код каких то институтских примеров преобразований фурье/фракталов на сишечке где все сырыми указателями утыкано блять и ни о каких оптимизациях компилятором не может быть и речи, я не удивлен такому.
Пидорастеры напротив очень много времени уделили указателям, подсчетом жизни объектов в компаил тайм, валгринд санитайзер, все из исходников собирается все, линк тайм оптимизейшн все вроде заебись (ну кроме профилировки с ней дристанули ибо не пользовались никогда) но в итоге глобально то обосрались по полной слишком сильно зациклясь на своей текущей задаче, абсолютно не думая как на другие задачи и обстоятельства это все напялится.
И теперь забавно наблюдать как пихают этот раст в приклад с гуем а ооп там нет, от него отказались потому что в построении xml/css деревьев оно приносит только гемморой с запутанными friend связями. Но приклад другое дело - сишарп с джавой, питон с джаваскриптом мимикрировалит под ооп что все таки создавать кнопку и наследоваться от базовой а не городить функциональные обертки как в старом жс. И вот так вот он везде тут не лезет там не проходит, еще и соевые окупировали.
>я как-то смотрел его выступление
>он даже не знал как выравнивание работает в сишке
Он там не про data dd случаем пиздел в красной гавайке?
>Когда дёргают фичи из ГОвна - это уже редфлаг.
Про какие именно фичи речь?
>Единственная хорошая фича в зига это комптайм
В zig heil, встроенные рантайм растопроверочки для дебага, санитайзеры, передачи аллокаторов в функции, короче, всё что я в си делаю ручками. Короче zig и раст плохо сравнивать, языки для разных задач.
Какое блять css xml, какие блять приложения с гуем
> много чего не знает
Так Страуструп и компиляторы не писал, ему можно не знать низкоуровневые тонкости платформ. А Андрюха пишет, получается так себе. Кроме него там два чела на фултайме всего занимаются Зигом, это столько же людей, сколько пилят Карбон.
> Про какие именно фичи речь?
Например система типов. Или синтаксис напизжен из ГОвна, но потому что в говне он скудный, в зиге городят пиздец из скобочек и точек. Запрет на неиспользуемые переменные как в ГОвне.
> встроенные
Лучше бы систему сборки на конфигах встроили, а не простынях кода.
А он фронтенд сам пишет? Ну эт печально тогда.
> Лучше бы систему сборки на конфигах встроили, а не простынях кода.
Система сборки на конфигах не работает, даже в npm откуда пидорастеры черпали вдохновение в плане системы сборки, конфиги в сборочных системах не пользуются популярностью, при том что там в системах сборки типа можно и так и так. Конфиги не гибкие, надо талмуд читать по опциям и потом еще в голове складывать как то что ты хочешь на это напялить. Нахуя так сделано я не знаю. Хотя нет, знаю - что бы код писать только в идешечке с борроучекером. Это еще раз говорит о том что язык создавали только с одной картинкой перед глазами - большой проект (уровня firefox) с кучей завимостей/субмодулей и конфигураций, какие скрипты сборки вы че угораете что ли.
А теперь когда раст выкинули нахуй из мозилки на мороз начались метание, ой мы в геймдев, ой да мы в драйвера щас ембедед пук среньк не выходит, надо идешечку ставить, надо 5гб объектных файлов в сборочной папке насрать что бы 500кб библиотеку собрать, надо папки по феншую расставить и конфиг по форме №3 заполнить ради компиляния двух с половиной файлов. Надо обертки для сишных библиотек писать с кодом в виде строк нахуй. Это блять шейдеры для WebGL на джаваскрипте так же пишут
Я питоном пользуюсь для ИИ, там раньше тоже были простыни setup.py, но теперь есть шикарные toml-конфиги и uv. Раньше была ебля, а теперь "uv sync" и пользуешься. Никто не мешает сделать комбайн с тысячей параметров в конфиге на все случаи жизни, оставив возможность вернуться к коду для сложных случаев. Пробежаться по докам по диагонали чтоб узнать какими параметрами задать что надо намного проще чем писать бойлерплейт сборки. И опять же если судить по питонычу, то проблем просто на порядок меньше, потому что система сборки многие моменты сама знает.

задача
1) найти все енумы одного типа (пик)
2) собрать из них числа (тут хуй, если дальше делать map, он будет писать про not covered)
3) все это в один итератор
При каком сценарии это должно работать? Тут явно нужна структура.
>он будет писать про not covered
получается, что я правильной дорогой шел
надо было дальше map хуярить и делать match с covered (ну или if let)
Ну и как в этой вашей "богоподобной" системе сборки clean делается? без полного удаления папки .cargo proton и proton-ge не собираются повторно.
Целый день проебался чистил вилкой все кэши и пытался понять в чем же дело, но как только увидел пикрелейтед, что вовремя сборки используется коряга с раком я сразу понял в чем дело и так оно и оказалось.
Ваши оправдания?
>Ну и как в этой вашей "богоподобной" системе сборки clean делается?
https://doc.rust-lang.org/cargo/commands/cargo-clean.html
> без полного удаления папки .cargo proton и proton-ge не собираются повторно.
проблемы протона
>вектор из енумов
энумы из констант состоят, а тут их инстанциируешь, это какой-то restricted type set чтоли
это буквально этим и является
только на плюсах без паттерн матчинга этой залупой будет невозможно пользоваться
Челик это буквально этим не является. Это разные вещи, что семантически, что синтаксически, что логически и мнемонически, что даже на внутреннем представлении, даже уровень вложенности другой.
Буквально блять разное нахуй
готов выслушать в чем их различия семантические, логические, мнемонические
можно прямо списком
Ты дристанул перепутав юнионы с энумами и ничего лучще не придумал как пытаться увести разговор в другую сторону какой то хуетой?

ты даун или долбоеб?
четко в следующем посте пиши в чем различие
если сам не способен хотя бы в чат гпт зайти
> увести разговор
ахаха, ты мне буквально сам про него написал
уточняю для совсем дауна, да да, тебя
>не способен хотя бы в чат гпт зайти
А, это опять ты нейро-даун.
Ты бы хоть программировать на чем то уже научился, а не ответы из нейросетки носил в которых ты нихуя не понимаешь, пидорас тупорылый.
> все еще нет ответа
хорошо чел, только больше не пиши мне и не отвечай если не знаешь о чем говорить, и даже ответить внятно не можешь
Умоляй меня объяснить
В этом вся суть спора?...
Еще что ты не можешь понять перечисли
Даунам напомнили про юнион они продолжают уперто стоять на плюсовом темплейт-классе variants

Ну так это одно и тоже, только variant запоминает какой конкретно тип внутри, как и растовский typed enum
Ты просто троллишь тупостью или тебе поговорить хочется?
юнион это просто структура, ты с компилятором договариваешься что union { int puk; uint hruk; float kukarek; } на стеке указывают на одни и те же данные которые в зависимости от поля/переменной следует по разному интерпритировать.
variants это класс/объект который выдает конкретный тип по запросу, у него там где то внутри есть юнион в приватной части, но где он и как там данные расположены тебя ебать уже не должно.
хорошо анончик, еще раз 10 напиши пустых бесмысленных постов, какой ты не тупой + во всё всем прав
>В этом вся суть спора?
Суть спора в том что приходит шизик, студент, игродел, директор какой-то игродельной конторы, который работает 5 минут в день это все по его словам, так и не сдиванонили, да и просто фантезер теоретик, который не проработал ни единого рабочего дня и срет какой-нибудь темой в треде. А остальные кормят его всем тредом. Если шизика обоссали, он никогда не принимает то что он не прав и усирается до последнего, если затопили мочой по горло, то просто перестает писать какое-то время и приходит с новой темой.
Классика треда
Что ж ты там такое сделал, что уже упёрся в медлительность питона?
Литералами "владеет" сам бинарник, на всё время жизни программы, то есть там 'static. А String позволяет новые строки аллоцировать в куче.
Он удобный. Там всякие честные блочные экспрешены, из которых что-то можно вернуть. Переименования это хорошо, язык легко узнаётся. У тебя доёб к цвету сарая для велика короче.
Взять другой ЯП. Кресты или зиг только могут в такие мелкие. В расте ниже 100 кб можно только с no_std сделать.
В первой версии ZX Spectrum было всего 16Кб ОЗУ и под него писали кучу программ, игры, системного софта вроде тех же компиляторов разных языков программирования. А теперь даже под хеллоуворлд нужно кучу ресурсов и мощный пека.
Это разделяемые ресурсы, т.е. в системе лишь один экземпляр kernel32.dll на все приложения. Если сама ОС будет легковесной, то и программы будут тянуть более легковесные dll. Тут проблемы нет.
А вот статическая компоновка - это зло. Потому что каждый бинарь содержит в себе все на свете библиотеки. И на диске и потом в ОЗУ будет многократно дублировать одинаковый код.
Ты не прав! dll (и so в линуксах) не зря придумали, а чтобы экономить память. Это рациональное инженерное решение. А статическую линковку стали массово применять ленивые веб-макаки, поэтому у нас сейчас и тормозят все программы и сайты.
>чтобы экономить память
а что уж сразу не экономить воздух
> поэтому у нас сейчас и тормозят все программы и сайты
из за памяти?)
но не из за этого у нас сайты тормозят, а из за памяти на серверах