Добро пожаловать в тред, посвященный гарантиям, обещаниям, владению, заимствованию и другим концепциям языка Rust! Предыдущий тред : >>3371041 (OP)
Rust — blazing fast язык для системного программирования без segfault'ов и с гарантиями потокобезопасности. Он позволяет писать безопасный и эффективный код, который легко поддерживать и масштабировать.
В этом треде мы объясняем базовые и продвинутые концепции языка, а также программирования в целом. Поможем новичкам, подскажем, что выбрать для веба, игр или, прости господи, блокчейна.
Кстати про работу: сделал тестовое, сказали что нравится и спросили желаемую зепку. Назвал 1800. Сказали мы вам перезвоним. Я охуел просить столько на джуновскую вакуху не имея почти никакого коммерческого опыта на няшном растике? Вакансия была на позицию бэкенд-макаки.
>>3407697 (OP) > Добро пожаловать в тред, посвященный гарантиям, обещаниям, владению Блять, каким обещаниям? Надо было "контрактам" написать. Ладно, в следующий раз.
Как же долго раст компилируется, это пизда. Со всеми опциями оптимизации можно я даже не знаю... сходить сготовить еду например. Реально ооооооооооооочень долго. Ждать когда он это всё высрет. Как будто код везут на слепых лошадях из Воркуты в Москву.
>>3412845 >компилируется В 2020 линковщик оче долго работал, даже была эксперементальная замена ему, продолжаю охуевать от растодебилов, прошла практически половина десятилетия, до сих пор ничего не изменилось.
>>3412845 У меня есть личный проект, где на основе пользовательской конфигурации, нужно было генерировать персональный бек и клиент, все это дело собиралось в джокере. Условно говоря, пользователь выбирает нужную функциональность, генерируется конфиг, на основе конфига билдятся бек и клиент, все это разворачивается в облаке. Так вот первым кандидатом для меня был раст, учитывая, что бек в моем случае по сути являлся обычным недопропрокси. Но из-за петушиной по длительности сборки сразу пришлось отказаться от этой затеи. По итогу выбрал Говно, которое билдится за считанные секунды и не приносит такой попаболи.
>вебговно Буквально требуется принимать бинарный пакет, парсить его и пересылать данные на клиент. Да и в чем претензия? Инструментов для вебговна на расте написано больше, чем для системной разработки и байтоебства, что довольно иронично.
>Сразу почему не выбрал, экспертизы не хватило Потому что язык без ГЦ и милипиздрическими бинарниками лучше языка с ГЦ, рантаймом и жирным бинарем? У меня почти 3 контейнера с растоверсией недопрокси весили столько же как один гошный.
>>3412884 Да он бля будет полчаса-час компилиться. У меня в облаке 4 cpu + 16 gb ram одна сборка идёт около часа (!). В принципе наверно ты правильно сделал. Я последовал совету rust guide'а, они типа пишут, мол просто добавьте workspace и всё будет чотка. Ну я добавил. Он теперь в два раза дольше компилит с воркспейсами лол. И вообще, я заметил - он иногда дублирует зависимости. Допустим берёт tokio-rustls компилирует v0.24.1 версии и v0.26.2. Дальше он компилирует tower версии v0.4.13 и версии v0.5.2. Может поэтому долго, я пока ещё этому кунгфу с зависимостями не научился.
>>3412927 Раньше я этой хуйни не замечал. То есть было в районе 100 зависимостей и он собирался быстро. Теперь по мере роста проекта, чтобы только один бинарник скомпилить - их уже штук 500. Ну и плюс, он не может больше одного ядра использовать из-за настроек оптимизации. Такие дела.
>>3413654 Напишите такой же аналоговнет на расте Замечание: 1) строка 1 - определяем рекурсивно тип 2) строка 2 - содаем циклическую структуру (сама на себя ссылается) 3) строка 8 - рекурсивно печатаем содержимое поля a
Заодно ответе на вопрос. Зачем вар боров чекер если вы не линукс хакеры? Чем вам сборщик мусора мешает в голенге? В голенге выразительности нет? Возьмите окамел. Синтаксис - руст на максималках, а ебли с боровчекерами и тамлайфами нет
>>3413681 Во первых зачем мне это делать, во вторых что ты вобще скинул, в третих какое отношение к вебу > определяем рекурсивно тип это что такое и какого она размера?
>>3413716 размер Option<x> равен размеру x + 4 байта Если ты делаешь struct x { inner Option<x>}, то она имеет бесконечный размер sizeof x = sizeof inner = sizeof x + 4
>>3413717 1) Так я попросил аналоговнет на расте потому. Свой пример я скомпилировал и запустил. Он работает из-за TCO а не вываливается в переполнение стека 2) Конкретно окамел я сам только штудирую
>>3413729 Не тоже самое. У тебя нет циклических ссылок, а только рекурсивно определеная структура. Недавно компилятор тайпскрипта переписали на голенг, а не раст, по тому что в расте трудно с циклическимими ссылками работать. Одна из причин называлась. PS я не расто хейтер если чо
>>3413739 Ну как не видишь? У тебя печататет Hello world 2 3 А у меня печатает бесконечную портяку из 1 2 3 В сишке ты тоже можешь создать три указателя на три структуры и зациклить их в круговую. Это не займет кучу памяти
>>3413768 >Потому что хачкель академический язык, а в окамле есть все, хоть и местами устаревшее. Ну как будто бы хачкель более распространен, тот же pandoc, например, или grease. А ocaml только в контексте jane steet вспоминается.
>>3413689 Никаких сложностей с борров чекером нет. Кто память руками чистил борров чекеров не боится. Проблемы только у залетевших питонистов/жсеров и прочих, которые только в расте про указатели узнали.
>>3413654 То есть то, что программы надо писать с буквально единственным явным владельцем у любого объекта - это не большая проблема? Или ты любой объект всегда клонируешь при передаче? >посмотри как веб на плюсах\си выглядит Сорян, но я не дебил, чтобы на СИСТЕМНОМ языке писать веб дерьмо.
>>3414083 >единственным явным владельцем у любого объекта сильно удивишься если узнаешь что в расте это не обязательное условие? раст бук пролистай на досуге, может хоть позориться в расто треде не будешь больше
>>3414873 Никакие списки, кроме тех, которые юзаются во всякой лок-фри хуйне, нахуй не нужны. В этом плане этот список ничем не хуже любого другого из стандартных либ.
>>3415915 Да каво ты блять спрашиваешь, он сам нихуя не знает. Он даже не пытается как-то аргументировать свой ответ. Rust для микроконтроллеров норм! Бери embassy и делай че хочешь. В смысле, что за вопрос такой "норм или не норм". Ты думаешь что проблема всегда в плохих языках, а не в кривых руках из жопы которые нихуя не умеют программировать?
> Rust does not support function overloading, which means you cannot have multiple functions with the same name that differ only in their parameter types or count.
>>3413731 >Недавно компилятор тайпскрипта переписали на голенг, а не раст, по тому что в расте трудно с циклическимими ссылками работать
немного по-другому же >Перед началом работы над проектом разработчики изучили возможность использования различных языков программирования и поэкспериментировали с прототипами на разных языках. В итоге для создания нового компилятора был выбран язык Go, как оптимальный вариант для выполнения работы по переписыванию кодовой базы старого компилятора. По сравнению с такими языками, как Rust, Go ближе к TypeScript по семантике и структуре кода, что позволяет сохранить при портировании существующие шаблоны. Использование Go упрощает перенос изменений между кодовыми базами и снижает трудоёмкость задачи по сопровождению старого и нового вариантов бок о бок.
>Язык Go обеспечивает хорошую производительность, развивается с оглядкой на многопоточное программирование и эффективную работу на многоядерных системах, имеет встроенные средства защиты от проблем при работе с памятью. Ценой безопасной работы с памятью является сборщик мусора, который может приводить к появлению задержек во время работы, но для компилятора появление таких задержек не имеет значения.
>В качестве варианта рассматривались и другие языки, такие как Rust, но они слишком сильно концептуально отличаются от TypeScript и при их использовании портирование превратилось бы в разработку компилятора с нуля, при которой было бы трудно добиться полной совместимости со старым компилятором, пришлось бы заново решать уже решённые в старой кодовой базе проблемы и проект потребовал бы значительно больше времени и ресурсов.
The TypeScript compiler's move to Go was influenced by specific technical requirements, such as the need for structural compatibility with the existing JavaScript-based codebase, ease of memory management, and the ability to handle complex graph processing efficiently. After evaluating numerous languages and making multiple prototypes — including in C# — Go emerged as the optimal choice, providing excellent ergonomics for tree traversal, ease of memory allocation, and a code structure that closely mirrors the existing compiler, enabling easier maintenance and compatibility.
>>3417329 снимаю шляпу за ссылку на источник но >>3417327 >such as the need for structural compatibility with the existing JavaScript-based codebase вот это в первую очередь вряд ли там 90% кода - обход деревьев но даже создание и обход можно было бы написать на unsafe, обернуть это в safe api и юзать без боли так что аргумент "сложна" считаю несостоятельным, а выбрали больше потому... переведу на нормальный с официально гринтекст: "ну го больше внешне на джс похож, чем другие, а компилятор уже написан на джс - кодерки будут брыкаться, а разогнать их не могу, они же и писал тс компилятор, чувствуют власть, новое учить не будут, поэтому го. Что то хуйня на сборщике мусора, что эта - горбоатого только могила исправит. Даже шарпам пытались научить, что было бы более логично, но макаки взубнтовались, им сложна, очень далеко от их джс-сиськи"
>>3417363 почему ты так считаешь, анон? почему есть проекты, которые начаты на rust? почему им уперлось? такое - это какое? разверни мысль, хотелось бы услышать не просто мнение, а обоснование
>>3413681 >>3413683 А что это за язык такой? Выглядит неплохо, но есть доеб: непрозрачно Поясню: очевидно, что тут работает через ссылки, но в коде этому нет отражения. Напомнило шарпы: экземпляр класса выделяется на куче, возвращается ссылка, работаешь дальше только со ссылкой. Но это приводит к проблемам, ведь не все объекты - экземпляры класса. Так и тут: y - это ссылка? Любой объект - это ссылка? Объекты хранятся на стеке или на куче? Если на куче, то язык к гц? Если на стеке, то нахуя создавать каждому объекту ссылку? Понимаю, что я просто не знаю язык, поэтому много вопросов, но в любом языке непрозрачность вредит. Я тут не вижу где указывается ссылка/указатель
>Напишите такой же аналоговнет на расте Нет идеального языка, где-то будет бо-бо. Либо гц надо будет создавать, либо безопасность будет держаться на плечах кожаного мешка, либо как в расте: болью создания циклических структур - оказывается нет идеального языка Но, внезапно, в ансейфе можно создавать циклические структуры, прямо как в небезопасных языках, то есть хуже, чем в небезопасных языках не будет. Но остальные части можно писать в сейф-режиме, то есть лучше, чем в небезопасных языках.
Ну и кста, если тревожник и циклическая структура используется не в хот-пути, то берем за основу вот это >>3413729, добавляем RefCell, получаем циклическую структуру на расте без unsafe
быстро дополню да, согласен, unsafe-код получился больше, чем у тебя: длиннее, по логике лишняя сущность (refcell), чуточку сложнее но 1) никто не запрещает юзать unsafe, и это в любом случае будет НЕ хуже, чем у тебя 2) мы взяли пример, где у раста слабое место. Как я говорил, идеального языка не существует, что-то уйдет в минус, но у раста прям хороший трейд-офф: вместо гц и потери безопасности в узких местах надо ввести refcell (что чуть-чуть усложнит код и введет хоть и незаметный, но оверхед), либо все же потерять гарантии безопасности, но лишь в этих самых узких местах, которые отполируют в либах взрослые дяди и отдебажат тысячи ручек
>>3417618 Плохо выразился Я к тому, что по абстрактной логике - никакого refcell быть не должно Вот типа пишешь на псевдокоде - ты не будешь писать refcell А вот когда уже кодишь на расте, ты должен учитывать, как ты называешь, внутреннюю логику и ее реализацию Поэтому да, чисто логически: refcell - лишняя сущность, но необходимая в языке с аффинными типами, которые дарят свои плюшки
>>3417618 ну и немного подушнить раст использует аффинные типы (те, которые следуют move семантике), их правильное применение гарантируется борроу чекером. Видимо, ты это имеешь в виду, когда говоришь "у раста есть внутренняя логика". Но RefCell - это не реализация этой внутренней логики. Это даже не часть языка. Это просто код, контейнер, который немного ослабляет ограничения борроу чекера для элемента этого контейнера во время компиляции и переносит эти проверки на время выполнения путем использования unsafe кода внутри.
>>3417416 >но даже создание и обход можно было бы написать на unsafe, обернуть это в safe api и юзать без боли Лол, так может сразу на сишке написать? Или лучше на зиге!
>>3417635 Правильная реализация линкед листа на педерасте - это ненаписанная реализация линкед листа, смешно видеть эти все рефцелы и прочий костыльный мусор.
>>3417907 если пытаться переобучать макак с джс - согласен но так уж получилось, что Хейлсберг в тупике: очевидно, что заменить команду он не может, ведь они писали компилятор и знаю нюансы и тонкости, а переобучать макак на что-то далекое от джс - макаки устроят бунт но если бы эта команда изначально знала раст - написали бы за тот же срок, что и на гошке
>>3417908 тут уже фак для таких как ты пытались создать даже мои посты выше давали ответ, но растхейтеры действуют по своей методичке я не хочу второй раз объяснять, просто перечитай хотя бы это >>3417533 >1) никто не запрещает юзать unsafe, и это в любом случае будет НЕ хуже, чем у тебя >2) мы взяли пример, где у раста слабое место. Как я говорил, идеального языка не существует, что-то уйдет в минус, но у раста прям хороший трейд-офф: вместо гц и потери безопасности в узких местах надо ввести refcell (что чуть-чуть усложнит код и введет хоть и незаметный, но оверхед), либо все же потерять гарантии безопасности, но лишь в этих самых узких местах, которые отполируют в либах взрослые дяди и отдебажат тысячи ручек
Да просто пиздец, ты сам выделил в гринтекст мою цитату "обернуть это в safe api и юзать", но все равно будто не видишь этого. Ты не смог разобрать ОДНО предложение и понять его смысл. Давай все же натолкну: unsafe 0,1% кода != unsafe 100% кода. Или это тоже надо как-то разъяснять?
Когда усвоишь информацию выше - можешь мне написать Если я увижу, что ты не усвоил информацию или усвоил, но все равно действуешь по своей методичке - я не хочу тратить на тебя время
>>3417912 Еще один с методичкой Реализуй линкед лист как хочешь: хочешь с рефцеллом, хочешь без, в зависимости от твоих требований
Тебе тоже относится то, что я писал анону выше в этом посте. Тоже проспись, тоже почисти зубки, поешь полезную и сбалансированную еду, сделай зарядку, приведи голову в порядок, чтоб у тебя была возможность усвоить то, что я написал (вроде ничего сложного не писал же), обработать эту информацию, а после этого мы сможем конструктивно поговорить. А то как с нпс общаюсь, одни и те же предложения, одни и те же тейки. Приводишь контраргументы, ждешь какого-то развития событий, конструктивного обсуждения, но происходут перегруз, и... "на расте ты не сделаешь циклическую структуру", "на расте невозможно реализовать линкед лист правильно". День сурка какой-то
>>3418080 >но если бы эта команда изначально знала раст - написали бы за тот же срок, что и на гошке Через 3 года любая команда, которая изначально знает раст, педерасто-сообществом выписывается в команду, которая не знала раст изначально, или неосиляторов. >растхейтеры Мимо, педераст, я хейчу вас, растомакак, язык норм для своих задач.
>>3418659 >Через 3 года любая команда, которая изначально знает раст, педерасто-сообществом выписывается в команду, которая не знала раст изначально, или неосиляторов. таблетки
>>3424660 в том, что для сборки оно в интернет лезет, зачем то хочет качать архивы раста, каиро старой версии, а затем кучу всего в директорию vendor, хотя сорцы уже скачанные лежат, зачем то накостылен bootstrap.py с неотключаемым скачиванием этого добра, несмотря на то, само добро заранее лежит на диске, понятно что можно забить и разрешить всё это, но я не хочу в сборочных чрутах давать выход в сеть, поэтому и возник вопрос, как собрать без интернета
как лучше его ставить? через пакетный менеджер или через пакетный менеджер ставить rustup или вообще не юзать пакетный менеджер и ставить через rustup, который брать с rustup.rs?
>>3407697 (OP) >игры Даже самые профессионалы своего дела обоссали Раст, заявив что в отличие от С# и, прости-господи, C++, делать игры на нем сложно и муторно, особенно на этапе прототипирования, где ебля с безопасностью и прочими unwrap'ами сжирает кучу времени, не оставляя времени на сам начальный этап разработки игры. >Веб Нахуя писать веб на Раст? Ни один большой современный бизнес не пойдет на это, для обычных продуктов возьмут C#, Go, Java, JS/TS, для каких-то совсем редких кейсов - С++ из-за обилия либ. А Раст зачем брать? Этап прототипирования веба тоже упирается в проблему из пункта 1 .
>>3432743 Единственное применение и реальный плюс Раста я вижу в эмбеддед, т.к есть реальные примеры компаний, временами пишущих на нем эмбеддед прошивки для МК и прикладного софта. Но остальное нинужно.
>>3432814 > в 30 раз более производительная Но зачем? В ИИ всегда можно пренебречь скоростью IO и обработки данных, потому что есть многопоточная обработка и сборка батчей в любое количество потоков. В бигдате всегда приоритет в удобстве, а не скорости.
>>3408035 Есть третий путь: Выучить С++ и вкатиться в НИИ на сытые 100к в месяц с БРОНЬЮ от мобки и полным соцпакетом, без страха что тебя уволят как растопидора
>>3432743 Надо быть конченным ебланом, чтобы делать игры на пидорасте. В криптонаебалове пишут на расте - понятно почему. >>3432795 >>3432848 Можно пример, где т.н. безопастность на расте во встройке как-то зарешивает? То есть реальный пример с листингом, что от раста была тут польза. >>3432814 Замена pandas на C будет ещё производительнее и напишут это быстрее, нахуй раст нужен?
>>3432953 >Можно пример, где т.н. безопастность на расте во встройке как-то зарешивает?
Эмбед как правило работает без нормальной ОС, поэтому любой сегфолт нужно дебажить мало что не вольтметром. Так что любой баг, который можно отловить на этапе компиляции - это +5 часов твоей жизни.
>>3432974 Пидоран, ещё раз, будет, что по теме сказать или тебя в школе научат чтению, то приходи. >>3432977 >сегфолт Даунитос, какие сегфолты во встройке? >любой баг, который можно отловить на этапе компиляции Какие баги ты собрался во встройке ловить? У тебя там даже аллокаций нету.
>>3432980 Хуеплет, ты сам научись сначала мышлению, ты приперся обсуждать ,что лично тебе не нужен раст? Люди уже написали на расте, а на сишке только напишут, скоро, в твоих маняфантазиях.
>>3432743 Зачем на расте писать - потому что на нем платят больше, уровень сениорности существенно выше и проекты интересней. Если интересны лоу айкью индусокод на >C#, Go, Java, JS/TS то без проблем, можно еще пхп ковырять ради ламбо которых там никогда не было. Либо турболегаси на с++ с ооп и уб. У меня с поиском работы никаких проблем нет с средним предложением в 250к в год. Для этого и дропнул упомянутые C#, Go, Java, JS/TS, C++. Хотя го еще +- норм и ТС для пулуми.
>>3432993 >Вот готовая либа на расте, испольуется в тырпайзе >Замена pandas на C будет ещё производительнее и напишут это быстрее, нахуй раст нужен? А человек паук всех победит, да...
>>3432996 >Зачем на расте писать - потому что на нем платят больше А кто будет писать игры и веб на расте, лол? Так и платить растерам не будут, если работы на нем не будет в этих областях.
>Если интересны лоу айкью индусокод Там хотя бы работа есть и платят нормально, а не 15 вакансий, где 80% это крипта или системщина
>>3433008 >А кто будет писать игры и веб на расте, лол? Так и платить растерам не будут, если работы на нем не будет в этих областях. Плевать на игры, там зарплаты низкие, хуяк-хуяк и увольнения после кранча. Игры разве что в одно лицо надо делать, а там можно на чем хочешь делать - одна из самых успешных игр была сделана на луа в прошлом году, стардью волли написан жопой (сырцы посмоти) на шарпах с ультра уебищным фреймворком от мс. >Так и платить растерам не будут, если работы на нем не будет в этих областях. Сейчас начинается бум раста как раз. Никс + раст + богатая част европы - ебейшие деньги в оборонке. Только никаких ремоутов. >Там хотя бы работа есть и платят нормально, Платят там мало и переступит 120к в год сложно, особенно сейчас. Рынок компактится, а ты советуешь идти туда где конкуренция и индусы с генерилками кода. >Там хотя бы работа есть и платят нормально, а не 15 вакансий, где 80% это крипта или системщина Что не там с криптой и системщиной? Короче, ты малой просто
>>3433022 Зверек? Ты обосрался в своем троллинге и пытаешься вот так победить? Нахуя в оборонке раст спрашивай у тех кто там это диктует. Я не имею директорской позиции в оборонке и в принципе там не работаю. Но отрытые позиции вижу и там раст зачастую с никсом причем. Вообще вот это все нытье что раст слишком сложный уже порядком надоели. Что там сложного? С raii все крестовики работали, а это считай половина борроу чекера. Что вам сложно. Реально единственная существенно херовая часть раста - асинк, там любые манипуляции с указателями сделают обрастают лайфтаймами и дженериками. Ну и циклические связи убого делать. Во всем остальном - удобно и быстро разрабатывать, не надо по сто раз тестировать то от чего защищает компилятор. Асахи лина отреверсинженерил гпу драйвера от арим макбуков на линукс, на расте и явно сказал что именно из-за всех этих борроу чекеров было проще написат, потому компилятор очень в многом помогает.
>>3433055 >Но отрытые позиции вижу и там раст зачастую с никсом причем. Пруф или уёбывай. >Что вам сложно >Вообще вот это все нытье что раст слишком сложный уже порядком надоели >удобно и быстро разрабатывать >не надо по сто раз тестировать то от чего защищает компилятор Просто пидорастодвоечка нахуй. Пиздец, ты зверёк. Сам-то поди только лабы на пидорасте пишет, иначе бы такой не писал.
>>3432902 > сытые 100к в месяц За 100к как-то работать даже не хочется. Я вот в интеграторе сижу за 100к, пинаю хуи днями на удалёнке, сегодня рабочий день к концу подходит, но реально работал я минут 15 и в рабочих чатах 30 минут советы советовал. Весь остальной день скролил двач и смотрел ютубчик. Иногда дрочильню какую-нибудь запускаю, поглядывая на втором мониторе за "работой" и чатиками.
>>3433071 Ребенок какой-то. >>3433325 Веб разве что веб3 лол. Вот там платят нормально 200к+ в год за просто синиора минимум. Выгодней чем каким-то архитектором быть на веб2 говне, потому и кинул.
>>3433328 Вот буквально недавнее Position: Protocol Engineer Salary: Up to $220k USD
Plexus has partnered with an innovative startup developing a protocol that enhances blockchain privacy by enabling encrypted data processing without exposure. This allows for smarter contracts, stronger security, and expanded Web3 use cases while remaining compatible with existing blockchain tools. They are looking for a Senior Protocol Engineer to join their team and lead the rust development for their Solana solution.
Qualifications Experience working with Rust and GoLang Experience working on an L1 or L2 (Bonus if you worked in the Solana Ecosystem) Proficient in spoken and written English Offer Competitive Salary Tokens Bonus
If this interests you, please send me an updated CV and we can arrange a call!
I have partnered with a protocol leveraging MEV infra who are hiring a remote Rust engineer.
Do you have: Protocol engineering experience. 3+ years rust experience. Familiarity with EVM. 5+ years engineering experience.
Let's chat, I can share a JD if interested.
Lee Dart Recruiter at Plexus Resource Solutions
I’m partnered with Solforge, a trailblazing company redefining Solana’s consensus ecosystem. They’re building high-performance blockchain infrastructure for institutional-grade applications and transforming internet capital markets.
They’re seeking Rust Engineers to tackle distributed systems challenges, working with Rust, Kubernetes, and Go. You’ll help build scalable, modular systems while collaborating with a top-tier engineering team.
The role is fully remote with the Founder and Co-Founder based out of the UK and paying salaries up to $250k USD ON A B2B Basis.
>>3433136 Везет тебе. Работаю за 130к в месяц, полные 8 часов в день, еще и тайминги нужно присылать типо сколько часов и минут работал над какой задачей. Проебываться не выйдет 100%, следят
>>3433055 >раст слишком сложный Раст простой не накручивай. Питон, плюсговно и сишка, вот эти языки сложные. >>3433331 Какой-то ммм. >>3433342 Какой-то 1 соевый стартап на весь мир, с каким-то ноунеймом. РЯЯ ОНЛИ РАСТ В ОБОРОНКИ
>>3434118 >-Зибята бум раста оборонка вся на расте и с никсам уии >-Где и нахуя там раст? >-<Показывает очередное попильное ИИ говно и с растом для веба> >-Нахуя ты это говно принёс, где остальная оборонка? >-АРЯЯЯ НИЩЕНКА АРЯЯЯ Лол, походу единственные, кто реально делал какие-то вещи с прошивками и лоу левел на расте это buttplug.io
Если не учитывать официального талисмана Rust — краба Ferris, то в качестве символического аниме-персонажа для языка Rust можно выбрать героиню, которая отражает его ключевые принципы: безопасность, скорость, многопоточность и отсутствие глобального сборщика мусора (GC).
### Кандидаты:
#### 1. Шаллоу (Shalltear Bloodfallen) из «Overlord» - Почему? Rust известен своей безопасностью памяти — Шаллоу буквально неуязвима в бою, пока не найдётся эксплойт (как `unsafe` в Rust). - Многопоточность: как вампир, она может действовать независимо от других NPC Назарика (асинхронность). - Скорость: мгновенная телепортация и атаки.
#### 2. Сабера (Артурия Пендрагон) из «Fate/stay night» - Нулевая стоимость абстракций: Сабера — идеальный слуга, эффективна без лишних движений. - Контроль над ресурсами: Её Экскалибур требует точного управления маной (как ручное управление памятью в Rust). - Без компромиссов: либо победа, либо смерть (как `panic!` в критических ошибках).
#### 3. Макото Ниидзима из «Persona 5» - Статический анализ: как прокурор, она строго проверяет все доказательства (аналог borrow checker’а). - Многозадачность: успевает и работать, и быть Лидером Фантомных Воров. - Нет GC: она сама разбирается с проблемами, без посторонней помощи.
#### 4. Юки Нагато из «Melancholy of Haruhi Suzumiya» - Предсказуемость: как интерфейс к данным, она работает строго по правилам (как Rust без неожиданных падений). - Высокая производительность: может обрабатывать информацию на космическом уровне. - Минимальные накладные расходы: молчалива и эффективна.
### Лучший выбор? Если нужен **жесткий, системный подход** — **Юки Нагато**. Если важна **боевая надёжность** — **Сабера**. Если важен **баланс между силой и контролем** — **Шаллоу**.
>>3434064 Он стоял, уперев руку в бок, и не отвечал. Только умудренная улыбка и неторопливые перекаты вальяжной походки, что понесли его домой. Больше они об этом случае не разговаривали.
>>3432743 > Go Для веба раст гораздо удобнее гошки, так что с ним в этой нише вполне себе может конкурировать. Одни дженерики и асинхронность дают в разы больше удобства над ctrl+c ctrl+v и горутинами с каналами, про остальное молчу.
>C# >Java Это совершенно другая ниша, обычно крупные проекты в банках, с совершенно другими взглядами на жизнь. Разработчики там привыкли к проектам, которые пилят годами и эти проекты живут десятилетия. Это больше про кровавый энтерпрайз
>JS/TS Как вариант, но не для всех проектов, нода хоть и держит дохуя rps из всей скриптопараши, но утекает по памяти и имеет свои ограничения. Но для проектов где примитивные круды какой-нибудь nestjs будет топ
>>3434380 Да, от них много хейта. Пишут какую нибудь обертку над никому не нужной библиотекой на си, а потом ноют на форумах что 20 лет писали на расте и пришли к выводу какой он говно. Плюс можно по треду и предыдущим заметить что один из представителей ЛГБТК+ никак не успокоится и постоянно срет здесь
Показатель нормального полноценного языка - проще всего решать практические задачи, например алгоритмы с Leetcode. С этим он справляется хуже всего, даже на форумах по Расту профессионалы пишут что решать на нем подобные алгоритмические задачи с Литкода это бред и максимально неэффективно, в отличие от С++.
>>3434582 "Действительно, если смотреть исключительно на скорость «прототипирования» и лаконичность кода для алгоритмических задач вроде LeetCode, C++ сейчас в большинстве случаев выглядит предпочтительнее:
1. Развитая экосистема для CP
В C++ под рукой синтаксически удобный STL: vector, deque, priority_queue, unordered_map и т.д. Писать решения буквально в несколько строк, не теряя при этом в производительности — привычная вещь.
Подавляющее большинство материалов и примеров в сети именно на C++ — так что можно быстро найти паттерны и шаблоны решения.
2. Компиляция и запуск
На онлайн‑платформах компиляция C++ обычно быстрее, чем Rust — и задержки «compile & run» в сумме меньше отвлекают.
Rust-валидатор за проверку безопасных заимствований и lifetime‑анализ иногда «тормозит» ваши итерации правок.
Но это не значит, что Rust «никому не нужен» — просто область применения у него чуть другая:
Безопасность памяти Rust гарантирует отсутствие «use-after-free», data race’ов и большинства типовых ошибок сегментации на этапе компиляции. В продакшн‑сервисах это критично, а в разовых задачах LeetCode — не очень.
Параллелизм и высоконагруженные системы Пишешь многопоточный код — и знаешь, что компилятор не даст тебе сделать гоночную ситуацию. Скорость на уровне C/C++ + безопасность.
Удобство поддержки Rust‑модули обычно проще рефакторить: чёткие ownership‑и borrowing‑контракты снижают риск регрессий.
> Если ваша основная цель — решать алгоритмические пазлы и соревноваться на LeetCode, то да, C++ («короче и привычнее») выглядит более «эффективным» инструментом. Но если вы строите сервис, где каждое падение на продакшне дорого обходится, или вам нужен безопасный высокопроизводительный код с тонкими ништяками по параллельности и скорости, Rust зачастую выигрывает.
---
Что делать?
Для соревнований и быстрого обучения алгоритмам — смело используйте C++.
Для проектов, где важна безопасность, контроль ресурсов и отказоустойчивость — берите Rust.
Если хотите прокачать навыки Rust в «алгоритмическом стиле», можно:
1. Изучить Vec::with_capacity и другие методы предвыделения памяти, чтобы снижать накладные расходы.
2. Попрактиковаться с крейтами itertools и smallvec (хотя их не всегда можно использовать на LeetCode).
3. Писать свои облегчённые «шаблоны» для деревьев и графов, чтобы не копировать из C++ STL, а иметь готовый skeleton на Rust.
В итоге выбор языка зависит от задачи и контекста. Что вам ближе сейчас — прокачка алгоритмов или надёжная разработка реальных сервисов?"
>>3434835 Зачем тогда по-твоему существует Литкод? Если бы он был не нужен, алгоритмы с Литкода не давали бы на собеседованиях в крупнейшие и самые богатейшие айти-компании мира, и он не был бы одним из самых посещаемых сайтов по айти.
Рыночек порешал и показал эффективность алгоритмов с Литкода. А Раст неэффективен для решения подобных алгоритмов. Вывод - Раст нахуй не нужен. Это просто как 2+2.
>>3434849 >Зачем тогда по-твоему существует Литкод? дрочить алгоритмические задачки
> Если бы он был не нужен, алгоритмы с Литкода не давали бы на собеседованиях в крупнейшие и самые богатейшие айти-компании мира, и он не был бы одним из самых посещаемых сайтов по айти ложное логическое следствие
> Рыночек порешал и показал эффективность алгоритмов с Литкода никакой связи между рынком и литкодом
> А Раст неэффективен для решения подобных алгоритмов чо несешь, сам то понял?
> Вывод - перестань быть ведомый идеями из интернета и начинай мыслить самостоятельно ну и я хуй знает, почитай про логику и причино следственные связи, чтоб так больше не позориться
>>3434849 >Рыночек порешал и показал эффективность алгоритмов с Литкода. А Раст неэффективен для решения подобных алгоритмов. Вывод - Раст нахуй не нужен. Это просто как 2+2. Ебать у тебя мышление настолько узкое и простое как решение задачки на литкоде по переворачиванию строк, действительно натренировался. В реальности выбор того или иного инструмента затрагивает множество аспектов, как и рабочий код в продакшене редко когда это решение примитивных алгоритмов. Когда ты там уже доучишься и первую работу найдешь?
>>3434884 Печально, а так зедчиком хотелось стать. >>3435079 >не может в решение простых алгоритмов >ААУУУВААУ ЛИТКОД НИНУЖИН КУДАХ ПРАМЫШЛИННАЯ ПРОГРАММИРОВАНИЕ Ты поди чисто джейсо-макакич.
>>3435335 Выглядит как говно. Кому вообще придёт в голову использовать реляционную базу в гейминге? Шиза с синхронизацией базы по сети - вообще пизда. Как будто они никогда не видели как неткод в играх выглядит.
>>3435144 >>3434859 >жалкие оправдания растомакаки А методичек не подвезли? Неужели USAid перестал финансировать расточмонек? Даже жалко как-то, язык то умирает...
>>3436242 >USAid В предыдущих тредах обоссали уже какого-то школьника, который с этим носился. Напомню что это политическая контора, в первую очередь рассчитана на политиков и медиа, а раст финансируют майкрософты с гуглами. Толстота не удалась и ты решил продолжить позорится
>>3436561 >пишет вебчик на пидорасте С этого я проигрываю каждый раз. Ебанутые написали свой нодежс на расте и теперь всем рассказывают, что их бекенд работает быстрее. Быстрее ждет ответа от кафки, наверное. Другие языки спокойно существуют в своих нишах, и только чулочники пытаются протолкнуть свой раст в каждую дырку.
>>3436561 >ВСЯ ОБОРОНКА пишет вебчик на пидорасте Ага, США до сих пор пишет код для оборонки на Аде и Коболе, а в РФ все еще пишут код для ракет на Си стандарта 1980 годов
>>3437745 Пишешь в build.rs println!("какая-то магия {либа нейм}") и всё работает. Только надо хедеры сконвертнуть. >мэйкфайлы завезут Вызываешь напрямую rustc и делаешь что хочешь.
>раст - оборнка с вебчиком, фирмавари для дилдаков >zig https://kristoff.it/ >A static site generator written in Zig. >The tool that generates documentation automatically for Zig >A TUI Twitch chat client designed for livecoders. >A zero-allocation Redis client for Zig that works both in blocking and async mode. Ору нахуй с этой замены сишки и плюсодерьма.
>>3439342 юзкейс раста это дать инвалидам повод доёбываться до новых проектов с вопросом "а чому не на расте?", поэтому новые проекты могут даже заранее расписывать причину "почему мы не использовали раст", чтобы исключить ебанутых.
>>3439445 >Раст для embedded хорош Дебил блять, у тебя хелоуворд растовский не влезет в половину железок просто из-за того, что весит как ядро ОС, написанное одним шизофреником. Сука блять, иногда я хочу, чтобы зздесь можно было постить только после подтверждения квалификации через гойуслуги, такую хуйню несёте.
>>3439782 Как там в 2000? Сейчас у микрухи сраного мосфета больше памяти, чем в 486. Или ты про аналоговнеты на технологиях 60х годов? Так там любой яп выше местячкового асм оверкилл.
>>3439879 >6 килобайт Для чего? Блинка светодиодом? Ну как-то жирновато. Алсо, что-то кроме пресловутого блинка не наблюдаю каких-то мега-йоб на канале этом полуживом.
>>3439813 > Так а какой эмбед сейчас кроме батплагов на пидерасте делают? Авионику может или автомобили? Памяти же дохуя. Например много Real Time OS для эмбеддед Раста уже написано
>>3440321 Какой планировщик, ты ебанутый? Так то это полноценные ОС для встроенных систем.
А вот примеры использования Раста в аэрокосмической отрасли: Lechev.space (GitHub) - Building various aerospace-related projects including a Ground station service using Rust. https://github.com/LechevSpace
Cryptosat.io (GitHub) - Building the Trust Infrastructure for Web3, using satellites, in space. https://github.com/cryptosat
Вот примеры использования Раста в реальной эмбеддед индустрии: 49nord - 49nord develops safe and secure Industrial IoT hardware and applications using Rust. https://49nord.de/rust
Calyptech - Used for high performance embedded system components as an alternative to C. http://calyptech.com/
Espressif (GitHub) - Improving performance of embedded and IoT devices with using Rust in esp products. https://github.com/esp-rs/
System76 (GitHub) - As a Linux-based computer-manufacture, much of our infrastructure and desktop Linux projects are written in Rust. https://github.com/system76
https://github.com/esp-rs/esp-hal/ Это пиздец какой-то монстр, с асинком-хуинком, с ансейфом через ансейф. Ебало дебичей, которые этим будут пользоваться.
no_std подразумевает, в том числе, отсутствие ядра операционной системы и стандартной библиотеки языка Си (что характерно для всяких микроконтроллеров/embedded). Заместо операционной системы, в окружении которой выполняется программа, в данном случае, микроконтроллер просто выполняет зашиваемую программу. При этом, так как нет ядра ОС (а только сама програмка/прошивка), то компилятор компилит прогу таким образом, что все данные и инструкции помещались в "стеке" (stack), а не в "куче" (heap) - ибо покуда нет ядра ОС, то нет и оперативки, которая выполняет роль "кучи".
>>3443162 >https://rust-gcc.github.io/ Чёт звучит как что-то годное. Короче, пидорастеры такие пидорастеры. >оборонка на пидорасте (вебчик) >криптонаебалово на пидорасте Странно, что пидорастеры не упоминают одну базюльку на расте, видимо, только лабы пишут.
>>3443162 >Есть альтернатива лучше, включенная уже в GCC (+- могет в rust версии 1.49) >https://rust-gcc.github.io/ оно может собрать rust c std в чруте, без интернета так, чтобы собранный rust был способен собрать себя из исходников?
>>3443826 Нет, ничего не тормозит, но у меня нормальный пека. Использую как IDE RustRover. Анализатор только не мгновенно работает, а после 2-3 секунд после изменения кода. >>3440879 Да, можешь загуглить Discord Go Rust. Там объяснение почему нужно писать круд на расте. >>3444670 Познакомился с концепцией trait и crate, а хочется классов?
>>3443826 >как же раст аналлизатор душит мой дрищецпу Попробуй использовать workspace, если у тебя большой проект, то раздели его на несколько crate и бери тяни зависимости из главного cargo.toml, используя workspace = true. Если у тебя жирные зависимости, замени их на что-то полегче или избавься вовсе. Опять-таки, смотря сколько у тебя зависимостей.
>>3445237 При чем тут массивы не понял? Я про целочисленное переполнение когда uint перемахивает через 0. Такая арифметика много где используется именно в системном программировании. Переполнения боятся всякие матлибы и прочее, но кто их на расте то пишет?
>>3444714 >IDE RustRover в ровере не аналлизер, там своя реализация. >>3445204 >сегфолт в рантайме сегфолт это защита ос. раст не доводит дело до ос, вызывая панику. >>3445237 раст вставляет проверку выхода за пределы для паники. >>3445267 >>3445270 действительно странно, если речь про раст, то при переполнении происходит паника, но только в дебаге.
>>3445274 > сегфолт это защита ос Чел, сегфолт - это обращение к невалидному участку памяти. Это часть аппаратной виртуальной памяти, оно не имеет никакого отношения к ОС.
>>3445278 ошибся но всё же думаю, что ос может эмулировать мму. в любом случае это механизм защиты, который не срабатывает из-за паники. >оно не имеет никакого отношения к ОС и при этом всё настраивается ос и обработка исключений тоже
>>3445274 >раст вставляет проверку выхода за пределы для паники. Есть unchecked функции, если что. В зиге тоже есть рантайм проверки в debug режиме и в одном из релиз вариантов - и это правильно. >Паника на численное переполнение ряя, системный языг какжи так В gcc есть флажок, чтобы рантайм ебанул тебе исключение на целочисленном переполнении, ну, и тестики гонять с ubsan'ом. х3 можно ли в расте их отключать без nostd. >>3445278 Но сегфолт, который ты ловишь в своём юзерспейсе - это именно сигнал от ос. Чем больше багов ловишь на тесте, тем очевидно лучше.
Внимание вопрос, к адептам пидораста, как мне написать линкед лист ПРАВИЛЬНО и без ансейфа?
>>3445748 > Но сегфолт, который ты ловишь в своём юзерспейсе - это именно сигнал от ос. Нет, сегфолт - это аппаратный эксепшен в ЦП. Его обрабатывает ядро и уже передаёт тебе.
А в чем смысл раста? Я так понимаю его идея заключается в safe подходе к написанию системного кода, но это же можно делать и на плюсах, разве нет? Просто выделив из плюсов множество, написав банальный кор гайд\стайл, выкинув или запретив например любой менеджмент памяти, как собственно сделано просто в расте
>>3446111 Это уже какой-то синдром поиска глубинного смысла. Раст - это просто лаконичный и понятный язык, всё то, что пишется на С++ можно написать на Rust в два раза короче за счёт макросов. При этом имея ту же самую производительность. С++ мне просто не нравится. Там каждая крохотулина ебёт мозги. Rust - это язык для людей. У меня всё окружение сразу настроено - я набрал в консоли cargo test оно протестировалось, набрал cargo add, он добавил зависимость, есть автоматическое форматирование. В С++ же какие-то блять мэйкфайлы, какие-то блять configure, единых тестов из коробки нету, надо ставить с каких-то сторонних сайтов. Всё это с таким вайбом, как будто я попал в 2008-ой год, какую либу не посмотришь, она обновлялась последний раз 10 лет назад и висит на каком-нибудь SVN на sourceforge. На мой личный взгляд, Страуструп слишком перемудрил с языком. Он впихнул туда слишком много абстрактной параши, которая нахуй не нужна. Все эти static_cast, uintptr_t, (uintptr_t(✸)(void ✸, uintptr_t)), хуй запомнишь. Вот например как расшифровать (const void ✸(✸)(void ✸))get_next? Нахуя нужны эти войд со звёздочками, почему допустим просто нельзя написать get_next? Стоит там хоть где-то забыть поставить звёздочку и у тебя программа наебнётся в core dump и ты будешь миллион лет гадать, что же я сделал не так. Ну и плюс, в целом С++ программисты это довольно специфический народ. Везде трёхэтажные конструкции, ноль форматирования и ноль комментариев. Будет какой-нибудь файл на 1000 строк, повсюду говнина со звёздочками, ты даже если и обращаешься к автору, он так смотрит с таким надменными видом как будто ты долбоёб полный и ещё так ответит ну типа отъебись надо же знать))))))) это база)))))))
>>3446121 Сами макросы в русте нельзя назвать простыми и лаконичными, если ты не просто используешь готовые, а сам пишешь, как ты говоришь - для сокращения кода в два раза. Генерацию кода и ковыряние в AST нельзя назвать простым и лаконичным
>>3446169 Что интересно эту хуйню из окамла перетащили в раст. Но в окамле это не часть языка, а прилеплено сбоку библиотекой ppx. А в руст эти макросы вкорячены в сам язык
>>3446171 А может и наоборот. В окамле измачально было апи для манипуляции аст программ на этапе компиляции. Но написали как независимое расширения языка в виде библитеки и внешних инструментов. Но выгдлядит все как врасте.
Зачем все в сам язык пихать? Потом ваш раст превратится в монстра С++
>>3446121 Что за хуйню ты пишешь. Раст всегда был более объёмным по количеству кода по сравнению с крестами. Там где в крестах ты просто пишешь что надо, в расте надо городить велосипеды.
>>3446191 ДА! Я утверждаю что меньше кода. Потому что: 1) можно делать вызовы по цепочке, типа s.chars().filter(|c| c.is_alphanumeric()).collect::<String>().to_lowercase(); это экономит циклы, можно сделать просто .into_iter() и не писать отдельный цикл. 2) макросы опять-таки. Я могу допустим ставить функции логи одной строчкой, метрики, знать сколько раз была вызвана функция, сколько раз с ошибкой, длительность вызова, одной строчкой перед функцией - #[measure([HitCount, Throughput])].
Если ты утверждаешь что с++ более лаконичный - докажи примерами кода, иначе это просто пук в лужу.
>>3446212 > делать вызовы по цепочке То что ты в одну строчку напихал лапши не значит что кода стало меньше. У тебя в одной строчке 15 языковых конструкций и выглядит это как нечитаемое говно. Почему бы вообще весь код в одну строчку не писать и потом говорить что можно одной строчкой сделать больше чем в питоне. Ты реально шизоид.
>>3446227 И что ты на пике притащил? Почему справа у тебя проход по массиву, а слева указатели? Не умеешь пользоваться массивами в крестах? Алсо, незнание как запринтить массив в крестах - это пока самое смешное что я видел сегодня. Я уже молчу про то что в крестах есть функционал сложения массивов без циклов.
>>3446111 > А в чем смысл раста? Перформанс + мемори безопасность + удобство. > но это же можно делать и на плюсах, разве нет? Нет. Струструпп предложил ещё лет 5 назад концепцию профилей для С++, вот прям как ты описал дальше > Просто выделив из плюсов множество, написав банальный кор гайд\стайл, выкинув или запретив например любой менеджмент памяти и эта идея никуда не пошла. Нет ни одного компилятора, который бы поддерживал профили. Сами профили были обоссаны несколько раз, что хорошо звучат только в теории, а на практике потребуют заново написать С++ с нуля.
>>3445881 >Его обрабатывает ядро и уже передаёт тебе. В том посте так и написано >Но сегфолт, который ты ловишь в своём юзерспейсе - это именно сигнал от ос. >>3445881 >Нинужно Почему тогда он есть в стандартной библиотеке?
>>3446414 > Rust's (powerful) low-level focus didn't always lend itself to a flexible high-level scripting style needed for rapid prototyping within our specific gameplay architecture.
> Bevy is young and changes quickly. Each update brought with it incredible features, but also a substantial amount of API thrash.
Вторую статью читаю от раст игроделов и одинаковые проблемы. Прототипирование на расте не работает, на нем лучше писать библиотеки, а не игры требующие быстрого тестирования каких-то фичей, которые придётся после теста выкинуть из проекта.
>>3446121 Проблема в том что зачем учить одну и ту же технологию дважды? Системные языки нихуя не простые, на них заскоком формошлепом не запрыгнешь, надо ботать и учиться писать код.
Так что тут не синдром, а прямой вопрос а не хуйней ли мы сейчас занимаемся? Пока что единственный плюс раста, который я вижу и ты привел это его экосистема со сборкой, тесты, зависимости, все приятно писать, тут да, базара зиро.
Но в целом чуть чуть подрочив того же самого можно и достигнуть на симейке + конане. Выглядеть это будет пиздец хуево, но двигаемся дальше. У тебя в твоих примерах описаны не плюсы, а приплюснутая сишка, что уже говно и кринж в мире плюсов. На 20\23 плюсах писать пиздецки как ахуенно, а главное перспективно, в будущий стандарт уже есть пропозалы на экзекуторы от нвидии и либы корутин от фейсбука, тянуть в проекты уже можно прямо сейчас, их добавят как было с либой ренжей. И писать на таких плюсах пиздецки как ахуенно. Можно со спокойной душой катиться на них в хайлод и бекенд и занимать нишу куда претендует раст, кстати как системный язык
>>3446441 >на нем лучше писать библиотеки Я, блядь, вам с самого первого пидорасто-треда это говорю, но веб-макаки начали раст засовывать туда, где раст будет всегда плохим инструментом. Но мне больше всего обидно за линукс кернел, пидорастерам БОЛЬШЕ ВСЕХ надо было и им оче быстро завезли поддержку пидораста, но как мы видим, никаких полезный модулей/драйверов на пидорасте нет в мейнлайне. Ёбаные животные нахуй.
>>3446450 Нахуя ты сидишь в треде если ты ненавидишь раст и осеорблчешт тех кто на нем пишет? Иди нахуй своей дорогой путник в С++ тред или откуда ты там вылез.
>>3446445 >Проблема в том что зачем учить одну и ту же технологию дважды? У каждого свой взгляд на мир. Кому-то не понравились существующие языки, он решил запилить свой собственный язык. Почему должен быть один язык, один народ, один фюрер? Разных языков не может чтоли быть?
>Системные языки Про системность никто ничего не говорил, раст можно использовать почти везде - хоть в вебе, хоть в крипте, хоть в эмбеддед. Он скорее универсальный, чем системный.
>а прямой вопрос а не хуйней ли мы сейчас занимаемся? Я нет, а ты не знаю. Лично я пишу свои проекты на расте, а ты какой-то демагогией занимаешься.
>На 20\23 плюсах писать пиздецки как ахуенно, а главное перспективно Ну пиши, тебе же никто не запрещает.
>главное перспективно, в будущий стандарт уже есть пропозалы на экзекуторы от нвидии и либы корутин от фейсбука Похуй если честно. Кто там что тянет, меня не касается, я просто захожу на гитхаб и смотрю библиотеки/фреймворки по факту. Если зайти допустим на сайты издательств, по с++ книги почти не выпускаются в последнее время (я имею ввиду последние 3-5 лет), потому что никому он не интересен. Это уже прошлый век.
>И писать на таких плюсах пиздецки как ахуенно. Можно со спокойной душой катиться на них в хайлод и бекенд и занимать нишу куда претендует раст, кстати как системный язык САМНИТЕЛЬНА НО ОКЭЙ (с) Олежа Тиньков
>>3446504 >ненавидишь раст Пидораст, раст - хороший язык для своих задач, а вот ваше трапокомьюнити - говно. >>3446539 >Ну пиши, тебе же никто не запрещает. Пидорастеры и маркетолухи запрещают ему писать.
>>3446539 Бротишка, пойми. Если ты что то мало мальски конструктивное отвечаешь или говоришь, накидываешь или хотя бы пытаешься. То не надо потом сливаться нууу эт меня не касается, самнительно но окей. Ну раз тебя не касается, так и иди нахуй просто отсюда. Че ты хуйню пишешь какую то? Не надо ничего отвечать просто. Ты что зумер даун дислексивный? Нахуя мне твое лично я, ты не знаю, я нет, чем я занимаюсь. Какая нахуй демагогия? Тебе прямые вопросы задали которые ты сам выставил на обсуждение
>>3446613 Сам иди нахуй. Вы доебали уже. Скатили тред в бессмысленный токсичный срач. Весь тред - никакой пользы, один и тот вопрос "зачем нужен раст". Да какая вам разница, я наверное единственный из всего треда кто не пиздит, а реально делает крупные проекты на расте. Всё остальные только и выясняют почему "Х лучше Y". Зачем нам знать про другие языки, это тред раста. Какие-то залетные приходят и командуют, кому куда идти и как себя вести. Этот тред вообще не для вас, он для междусобойчика растеров.
>>3446690 Возможно. Мне просто работу предложили на расте. Я оцениваю перспективы языка и свитча стека. А почему собственно и нет? А срач наверное и правда заебный учитывая местный контингент. Но тебе то че, тред живет и бампается
Салют. Подскажите, пожалуйста, насколько сейчас живое rust-wasm и можно ли уже новый код на фронте писать не на js/ts, а на rust, имея при этом возможность удобно использовать существующие либы js?
Мне одному кажется что официальная документация-книга очень хуевая? Мало того что для восприятия всех её принципов нужно хорошо знать C/C++ и ОС, так еще и создается такое впечатление что в попытке объяснить хоть что-то сложнее базовых типов данных авторы сами нихуя не понимают че сказать то хотят
>>3446704 >Я оцениваю перспективы языка Говорю же, язык приятный, быстрый, продвинутое окружение, есть плагины, есть крутые библиотеки, что тебе ещё собака надо? Это же не от нас зависит, что выберет работодатель. Также можно спросить какие перспективы у тайской кухни в России? Или наберет ли молекурная кухня популярность? Это всё вкусовщина. Мы никак не влияем на процесс, язык остаётся нишевым. Ожидаю ли я, что завтра ломанется толпа народа переписывать легаси с пхп на раст микросервисы? Скорее нет, чем да. Но это даже хорошо, что он не становится мейнстримом. Язык держится на идейных людях, а не на тех додиках которые спрашивают "куда можно вкатиться". Здесь случайных людей нету, люди которые выбирают раст делают это осознанно. А не по совету знакомого васяна, который пиздит типа вкатись и зарабатывай 300к в наносек изи.
>>3446810 > Мне одному кажется что официальная документация-книга очень хуевая? Ну, не идеальная, да. Я в основном ллмки использую если что-то не понятно.
>>3446842 Тогда это говно а не язык. Я пердюльки на нем писать не собираюсь сидя в будке сутками. Я жить хочу и деньги зарабатывать. Языки программирования и программирование в целом -- главным образом именно для этого и нужны. Проебывать свое время на хуйню, которая никому не нужна это бред
>>3447139 >Тогда это говно а не язык >Я жить хочу и деньги зарабатывать Да, а что ты ожидал? Что у тебя хуй на 30 сантиметров отрастёт? Зарплата на 300% повыситься? Ты станешь альфачом и все бабы начнут давать? Язык - это просто инструмент. Неадекватно ожидать, что от смены языка, качество жизни повыситься. Если ты до этого был успешным программистом, то ты им и останешься. Проблема в твоих ожиданиях, у языков нет "магического свойства" давать охуенно жить. Если абстрагироваться от всех зарплат, вакансий, работодателей, и так далее, а судить с чисто технической точки зрения то это просто приятный быстрый язык и всё.
>>3446842 >язык приятный Нет. >быстрый Нет. >продвинутое окружение Нет. >есть плагины, есть крутые библиотеки Нет, не нужны, потому что говно версии 0.0. >Аналогия с едой Додик ёбаный. >Здесь случайных людей нету, люди которые выбирают раст делают это осознанно. 99% выбрали раст, потому что маркетолухи и общественное мнение, которое разгоняется в нужную сторону. >>3447139 Зачем тратить своё время, рассказывая, что ты НЕ СОБИРАЕШЬСЯ там чего-то делать, лол?
>>3447228 У тебя какие то странные представления об успешности. Программисты все время развиваются, ищут стеки и технологии. Если ты этого делать не будешь то ты окажешься позади. Нужно все время стремиться туда где меньше конкуренция, где меньше людей, где больше денег и не хватает экспертности. Это неотъемлемая часть нашей профессии, нужно постоянно переоценивать рынок, вакансии и самого себя. А иначе рискуешь например оказаться на какой нибудь помойной должности никому нахуй не нужной вроде питон бекендера
>>3447257 И зачем ты мне это написал? Мне это даже никак не прокомментировать, или какой ты реакции ждал? Что у тебя в голове было когда ты свои сосиски к клавиатуре тянул?
>>3447285 Так а что именно крыть? Я вообще открыт к критике. Но ты же буквально не написал ничего, какой то гринтекст и все. Или я должен сам за тебя придумать условный аргумент и с ним поспорить? На что мне отвечать то?
>>3447248 Причём здесь экспертность и rust, я нифига не понял. Как это вообще связано. Раст может либо подходить под задачу, либо нет. Ты какую-то хуйню понёс про рынок... Что ты знаешь вообще про рынок... я щас на ocaml'е напишу финансового бота и заработаю дохера денег. Где тогда твой бог будет.
>>3407697 (OP) > Поможем новичкам, подскажем, что выбрать для веба, игр или, прости господи, блокчейна И че он во всё это может нормально? То есть я на нём и имиджборду свою смогу сделать и игру запилить?
Я понимаю, что const fn это аналог constexpr из C++, а значит, вроде как смысл есть пытаться с самого начала делать всё через const. Но при этом в const есть ограничение на использование for цикла, что сразу делает код менее понятным так как приходиться через while делать обход массива.
>>3448607 Любые const либо static const требуют либо литерал, либо константное выражение, либо константную функцию. Ты не можешь сделать массив размера "запрос GET по адресу malyezalupki.ru"
Я что-то в этой жизни не понимаю видимо. Как такое возможно, что для С++ в 14 раз больше вакансий чем для раста. Как вообще возможно в 2025 году продолжать писать на крестах. У меня горит.
>>3448771 Знаешь фразу "для каждой задачи свой инструмент"? Так вот для задачи писать низкоуровневый код используют кресты, а для задачи получать ЛГБТ-гранты и долбиться в очко - раст.
>>3448771 Там их и 90 нет. В большей части вакансии просто бекенд языки перечислены и накидали ключевых слов чтобы в поиске выдавало. Сами эти компании днища а вакансии не могут закрыть годами. Но к слову на растущке сейчас гораздо больше дефолт бекенд вакансий и он потихоньку на чьей то инициативе начинает замещать те вещи что на плюсах писались или жабе, и что то можно залететь писать в банк или какой-нибудь маркетплейс просто с улицы
>>3448918 > на Solana Anchor. А там тоже очко. Документации нихуя нет, разработка под солану тоже в среднем в хуй никому не упала. Буквально раз в год запрос появляется, раз в 2 года в разработку что-то берём. мимо криптогалера
>>3449067 А надо ли в крипту? Я напротив отсюда срыгнуть хочу, ибо не очень актуальный для переезда в другую страну опыт.
Смарт-контракты под EVM на Solidity хуярятся. Под не EVMки разработки мало. Solana преимущественно для запуска шиткоинов юзается, при любой попытке разработать что-то хоть более серьезное упираешься в незрелость экосистемы. Мне казалось, что ТОН должен был взлететь за счёт TWA в телеге, но пока его не видно. Остальное скорее мёртво.
Бэк на проектах, где я участвовал, преимущественно на ноде, либо ГОвне был. Педераст реже, но тоже есть.
>>3449271 В расте, как и везде, придется ебаться с блокировками. Многопоточка без ебли есть только в голанге, его специально таким придумали. Для асинхронности есть токио, код выглядит почти как на нодежс.
>>3449308 Понял >>3449321 > И что там в интернете опять говорят? Да вчера смотрел видос какой-то от ThePrimeTime и он там говорил, что пока вам не нужна многопоточка, то раст кажется очень простым. А когда нужна мноопточка, то сложность обучения улетает на Луну.
>>3449271 >Кто писал многопоточку на рамте: правда так всё плохо как говорят в Интернетах? Ну блять, опять одна бабка сказала. Меня лично всё устраивает. Использовать не сильно сложнее чем в typescript. Есть governor https://crates.io/crates/governor он позволяет лимитировать запросы, допустим не более 10 запросов в секунду. Там сложность не столько в самом tokio/futures, сколько в блокировках и атомарностях. У меня есть целая книга по блокировкам. Иногда возникают ошибки по типу "вы пытаетесь запустить tokio runtime внутри tokio runtime". Но в целом, не конец света.
У пидорастеров делающих офф доку такая философия и подход к программированию писать и объяснять неработающий код, а потом остальную часть статьи посвящать как это все пофиксить. Или это просто какое то функциональное поражение мозга?
>>3449828 Сейчас бы сравнивать рандомные фреймворки и говорить что протестил скорость ЯП, лол. На крестах надо хотя бы литий брать, а не дракона. Алсо, если взять какой-нибудь vertx и сравнить с растом, то может оказаться что джава быстрее раста, по логике того говноблогера.
>>3450156 Была бы в С хотя бы доля того удобного менеджмента зависимостей как у раста и если бы там на каждой строчке не могли затаиться по UB и сегфолту - так бы оно и было.
>>3450197 > хотя бы доля того удобного менеджмента зависимостей как у раста vcpkg удобнее раста. Зачем до уровня пердолинга раста опускаться? > если бы там на каждой строчке не могли затаиться по UB и сегфолту От тупости ничего не спасёт.
>>3450592 >работает из коробки из какой блять коробки он у тебя работает > просто пишешь имя зависимости в конфиге и пользуешься ей > Ничего дополнительно не надо делать. а система сборки у тебя этот конфиг каким образом подхватит?)
я уж не говорю о том то чтобы распостранять нормально этот код, люди буквально тебе локально на комп vcpkg ставят
>>3450409 >Борроу чекер спасает. GC спасает. Ошибки компиляции спасают. Можно конечно прыгать без парашюта, но я предпочту прыгать с ним чем без него. Я на LOR устраивал жесткие срачи по этой теме, и тема неоднозначная, на самом деле "не только лишь все понимают, мало кто понимает". На C/C++ есть статические анализаторы, есть анализаторы рантаймовые, В расте нет GC, а костыльное GC гугл прикручивал к хрому (временное хранилище для освобождённых указателей).
Больше всего суть ситуации описал один чел с хакернью, кратко пересказывая его слова: лучшие проекты написаны на C/C++, потому что над ними работали лучшие программисты. Именно в этом заключается проблема C/C++ — на нём можно писать хорошо, но 99% макак хорошо писать не смогут. Над ними нужно ставить надзирателей с плётками: линтеры, тесты, кодревью, etc. Rust — это и есть тот фреймворк, где плёточники поставляются из коробки, где небезопасные операции явно отмечены, где целенаправленно замести проблему под ковёр намного сложнее (сравните с C/C++, где часто мимо проблемы проходят даже не обращая на неё внимание). Чтобы писать хороший код на C/C++ я выработал в себе дисциплину: "не бывает несёрьёзных ошибок", "если что-то может упасть — пусть оно упадёт", не использовать сложных неявных конструкций аля сложные деструкторы или копирующие конструкторы, и так далее. Также я из паскаля перенёс привычку ассертить всё на свете, каждый ебаный int, небо и аллаха (эта фишка частично есть в раста). В книжках обычно такому не учат, и даже учат наоборот. Google — это одна из немногих крупных компаний, которая использует похожий на мой стиль и опубликовала его. Например, там за Boost пиздят ногами, за исключением нескольких легковесных модулей, которых почему-то нет в std.
Но давайте поговорим про более важные вещи — это время компиляции и неоправданная переусложнённость. Это актуально и для Rust, и для C++. Даже не зная, кто сделал Rust, я бы мог вслепую сказать, что это сделали крестовики. Потому что такой сложный и медленный пиздец могут терпеть только крестовики. Они на полном серьёзе считают, что два часа компиляции — это нормально, что спецификация языка на 600 страниц — это нормально, спецификация стандартной либы на 1000 страниц — это ок. И это новый язык, никакого legacy. Rc<RefCell<Box<dyn Trait>>> откушать не желаете?
Всё ебаную историю простота была преимуществом ЯП, но с приходом раст это свойство стало устаревшим. Теперь чем ебанутее ЯП, тем он лучше. Я серьёзно не понимаю, кто те долбоебы, которым нравится Rust. Не "приходится работать с Rust", а реально "нравится работать"?
>>3450328 >> хотя бы доля того удобного менеджмента зависимостей как у раста >vcpkg удобнее раста. Зачем до уровня пердолинга раста опускаться? У раста нихуя нет, чтобы там нужно было с какими-то зависимостями разбираться, язык несколько лет назад возник только. Вот когда оно обрастёт legacy и несколькими конкурирующими пакетными менеджерами — тогда поговорим про удобство менеджера зависимостей. Например, чо там у нас с зависимостями от библиотек, написанны не на Rust, а на C/C++ или даже Fortran?
>>3450608 > а система сборки у тебя этот конфиг каким образом подхватит? Таким же как и исходники, лол? Поддержка vcpkg во все современные системы сборки встроена уже.
>>3450708 > "не бывает несёрьёзных ошибок", "если что-то может упасть — пусть оно упадёт" Это всё сорта говна. В хорошем коде уменьшают количество мест, где может возникнуть ошибка, а не выдумывают как эти ошибки получше размазать по жопе. Это в расте выдумали каждый вызов функции обмазывать в Result/Option, т.е. каждый вызов может зафейлиться и ты обязан думать об этом. В геймдеве, например, хорошая практика делать так чтобы невалидный объект просто делал ничего, а не вызывал ошибки.
>>3450708 > привычка ассертить Хорошая привычка. Некоторые умные бли из NASA советуют ассертить не только инпут, но ещё и оутпут прямо внутри функции. Не рофл если что, сам иногда когда не лень так делаю. > Но давайте поговорим про более важные вещи — это время компиляции Просто купите новый компуктер. > и неоправданная переусложнённость. Не согласен. Раст очень простой язык, прям подозрительно простой. Про аминхронщину не знаю, я пока в один поток пишу программу. > Rc<RefCell<Box<dyn Trait>>> откушать не желаете? Ну вот это единственное, что меня беспокоит в языке. Сколько видосов про него не посмотрел в каждом матерят канкаренси в расте. > Не "приходится работать с Rust", а реально "нравится работать"? Чел, я не знаю как после плюсов можно не любить раст. Мой опыт работы с плюсами один в один как твой. Постоянное ощущение, что я где-то мог накосячить и поэтому нужно всё перепроверить 10 раз. В расте же я просто и расслабленно пишу код потому что борроу чекер, компилятор и строгий линтер мне скажут если я где-то ошибся.
Мне кажется, что все языки "не оч" потому что они все имеют в себе ключевую ошибку. Они пытаются быть стабильными в нестабильном мире. Если сказать, что обратная совместимость никогда не будет поддерживаться и что в любой момент создатели языка имеют право взять и поломать апи, потому что так надо, то проблемы с Rc<RefCell<Box<dyn Trait>>> синтаксисом скорее всего можно было бы избежать.
Подобное убило бы любой язык. Писать на чем-то, что постоянно ломается невозможно с практической точки зрения. Но я предлагаю другую концепцию. Да, мы ломаем обратную совместимость 10 раз на дню, но в сам язык изначально вшит механизм миграции от версии X.0.0 к версии (X+1).0.0. Обратная совместимость сломана, но мы вам поможем сделать перход на следующую версию максимально безболезненным.
Не знаю насколько такое возможно на практике, но мне кажется, что это единственный способ для языка не превратиться в легаси на каком-то моменте своего развития.
>>3450799 Так это настройки системы сборки, лол. Это же не раст, где в конфигах ковыряться надо и писать простыни в build.rs. А тут больше и нечего показывать, потому что ничего нет, система сборки просто подтягивает зависимости и всё.
>>3450804 Блять, агуша, хватит позориться Буквально нихуя в вопросе не понимаешь, просто в ide три кнопочки нажал и думает что это ИЗ ПОД КОРОБКИ всё само работает, даже не понимает что его vcpkg не сама система сборки запускает
>>3449854 блядь, мне тоже интересно зачем покупать бумажные книги на русском?? чтобы опечатки и неточности перевода считать на полях? это же пиздец по-моему
>>3450798 >простыни в build.rs Посмотрел на сборку в systemd, там ебать какая простыня для мезона, потом вспомнил какую простыню ебашит зиг для дефолтового проекта в build.zig, потом вспомнил, какая у меня ебала в cmake (простыня + куча модулей). И ещё миллион других систем для сборки и конфигурации с тьюринг полными язычками.
>>3450833 >зачем покупать бумажные книги на русском?? Потому что в рф русский язык - священная корова, на игнрише хуй ты где купишь книги. Если начать продавать нужные книги на игрише рюсский язык ждёт участь какого-нибудь к примеру беларусского языка.
>>3450863 >амазон >китай Це не росiя. В рф только переводные продаются, ещё раз. >бумага Почему люди предпочитают бумажные книги тебя ебать не должно, дегенерат.
>>3450859 Держи. У cmake в комплекте есть скрипт для автоустановки зависимостей vcpkg, просто говоришь ему использовать его и всё. Но зачем использовать cmake, когда есть msbuild.
>>3450876 > У cmake в комплекте есть скрипт для автоустановки зависимостей vcpkg Прекрасно, я как понимаю пресет тебе тоже в комплекте идёт? надеюсь никому больше пресеты не понадобятся, и можно полностью его vcpkg отдавать, ну или кастомить свои Теперь по прошу к вниманию, добавление кастомных скриптов, добавление кастомных пресетов это ИЗ ПОД КОРОБКИ, не перепутайте
>зачем использовать cmake, когда есть msbuild потому что в отличии от msbuild, cmake это стандарт индустрии
ладно, с месоном и остальным я тебя мучить уже не буду, если не совсем тупой уже на cmake должен был понять что не прав
>>3450910 А cmake кроссплатформенный? В крестах не существует кроссплатформенности, что-то сложнее лаб всегда имеет куски под конкретную платформу, как и сборка со спецификой под неё. Открой любой "кроссплатформенный" проект на cmake и посмотри на скрипт сборки. А на msbuild собирается весь виндовый софт, никто в здравом уме не будет использовать cmake для сборки под виндой, особенно когда cmake сам генерирует проект под msbuild, а не собирает.
>>3450917 Ну уже слишком жирно, даже студентота такой бы бредик не написала Если уж реально хочешь по этому поводу поспорить то хотя бы иди в плюсо тред
>>3450917 > В крестах не существует кроссплатформенности, что-то сложнее лаб всегда имеет куски под конкретную платформу, как и сборка со спецификой под неё. Ну, если так судить, то кроссплатформенных тулзов вообще не существует если только они не сложнее лаб. Я понимаю под кроссплатформенностью то, что 90 % сборочного скрипта будет одинаковой между платформами. мимо
>>3450769 >В хорошем коде уменьшают количество мест, где может возникнуть ошибка, а не выдумывают как эти ошибки получше размазать по жопе... >В геймдеве, например, хорошая практика делать так чтобы невалидный объект просто делал ничего, а не вызывал ошибки. Да, я совсем забыл упомянуть важный момент: в геймдеве раст не нужен, потому что падение по ассерту и падение по сегфолту по результатам не отличаются. То есть, геймдеву раст вообще нихуя не даёт. Собственно, ты прав по поводу "лучше чтобы ошибки нельзя было совершить" — потому геймдев довольно активно уходит от C/C++ и прочей низкоуровневины в сторону того же C#, по крайней мере на уровне логики.
>>3450773 >Просто купите новый компуктер. 12 цпу и 32 Гб оперативы уже впритык — я правильно понел?
>Раст очень простой язык, прям подозрительно простой. Про аминхронщину не знаю, я пока в один поток пишу программу Нахуй нужен раст в скриптах аля питон? Я их на питоне и напишу, LOL. А где нужна производительность — там асинхронность и потоки.
>В расте же я просто и расслабленно пишу код потому что борроу чекер, компилятор и строгий линтер мне скажут если я где-то ошибся Ты не поверишь, но именно этого я ждал от раста — просто пишешь код, а он тебе автоматом выводит типы и проверяет заимствования в этой новой парадигме "move by default". Пока не увидел, какой пиздец нужен, если ты хочешь переслать объект из потока в поток: Ехал Rc через RefCell Видит Rc — в RefCell Trait Сунул Rc dyn Trait в RefCell Rc<RefCell<Box<dyn Trait>>> Потому что если ты хочешь сложные динамические объекты, то тебе НУЖЕН сборщик мусора. Как в Golang. Это не значит, что теперь GC будет ходить по каждому int в стэке — он будет лишь проходить по объектам из глобальной кучи. Про это Йося Крейнин ещё лет 10 назад писал в великом Frequently Questioned Answers. Причём, я подчеркну, что счётчик ссылок — это весьма неэффективный способ организации общего доступа, да ещё и со своими проблемами. Например, если ссылка на объект со счётчиком ссылок лежит в глобальной переменной, то эту переменную нужно будет менять под блокировкой (счётчик защищает объект, но не ссылку на него) — в общем, ебатории там столько, что возникают мысли "да ну его нахуй этот раст, пойду голанг учить". Или, например, дёрнуть туда-сюда счётчик — это грязная кэш линия, а потому нихуя не zero-cost. В частности, в CPython прямо катастрофа для желающих форкнуть процесс и получить read-only представление, поскольку их ебучий GC сделан на счётчиках ссылок (язык изначально делался вообще без GC), и при цикле сборки он дрочит счётчики, делая страницы грязными и нивелируя всё преимущество форка.
>>3451018 Ну, ты прав, всё так. Вообще создатели раста собираются что-то делать с асинхронщиной в языке? Я где-то видел разбор, что они забили болт и сказали, чтобы сообщество само придумало решение.
>>3451018 >то тебе НУЖЕН сборщик мусора Ты не обязан использовать стандартные контейнеры. Сборка мусора не обязана быть черным ящиком, а может быть встроена в алгоритм по построению. Даже в плюсах, но всем насрали в голову с RAII.
>>3450930 >Ну уже слишком жирно, даже студентота такой бы бредик не написала >Если уж реально хочешь по этому поводу поспорить то хотя бы иди в плюсо тред В крестах есть больше одного компилятора. Я ещё раз повторяю, что в расте никаких проблем нет потому ,что в нём нихуя нет: единственный компилятор, крошечный набор библиотек, половина которых просто биндилнги к внешним либам. Окружения для сборки под винду и под никсы радикально отличаются. Да, есть подвижки к унификации, но всё равно разница большая до сих пор. Да, cmake умеет собирать под винду, но сборка под винду сильно отличается, и потому если проект не писался специально для поддержки винды и это не hello world, то ни на какой винде он не соберётся (без позитксовых эмуляторов аля cygwin, которые создают больше проблем, чем решают).
Короче говоря, сравнивать один из старейших ЯП с желторотой новоделкой несерьёзно вообще, это разные категории.
>>3451089 Ну да, в этом и суть. Сегодня либа поддерживается, завтра не поддерживается. Либа не может изменить существующий семантику/синтаксис языка. Либа не может изменить вообще ничего в языке, она находится в состоянии "я всё это хаваю, у меня нет выбора". Опенсоурсная либа не должна заменять ожидаемую базовую функциональность языка, это просто неправильно.
>>3451098 Это уже общая проблема всей современной разработки, вместо того чтобы сделать и вылизывать 1 единственный универсальный ЯП для всего и инфраструктуру под него же продолжают пилиться всё новые и новые никому не нужные.
>>3451244 принять по http джон, сохранить в бд и пукнуть в кафку.
Так, 10 лет стажа на жабе, заинтересовал этот ваш раст. Дошёл до 7 главы учебника. Думаю дай-ка напишу свой стек для практики. И ОБОСРАЛСЯ. Чот депрессия накатила от сложности и стоит ли дальше пытаться. В учебнике как будто за ручку ведут по узкой тропинке, а вокруг ебучий варп. А ведь в реальной жизни этой тропинки не будет. Возможно ли в struct обознать массив с неизвестной длиной?
>>3451257 > Так, 10 лет стажа на жабе, заинтересовал этот ваш раст. Привет, брат жабист. > Чот депрессия накатила от сложности и стоит ли дальше пытаться. Чатгопота в помощь. Я наоборот поражаюсь простоте языка. Но я его сравниваю с плюсами, на которых пишу hot-paths жабовской библиотеке, а не с жабой. > Возможно ли в struct обознать массив с неизвестной длиной? Vec<i32>
>>3451272 помню в 2007 прочитал книгу по плюсам от шильда. Потом случайно узнать про жабу и прочитал книгу по ней, и прям на контрасте наслаждался простотой и что разработано для дураков. С тех пор жаба кормит
>>3451257 Вот тебе промт для копилота: write stack in rust. do not use vec. use array of various size, pass size in constructor. DO NOT USE Vec::with_capacity
>>3451276 У меня такая же история. В вузике работал лаборантом и программировал на С++. Потом устроился на завод и понял, что надо перекатываться в настоящее айти. За год выучил жабу и стал андроид разраб. После плюсов жаба училась очень легко.
>>3451278 Дурак твой копайлот. >>3451257 Коротко: нет, “чистый” массив неизвестной длины внутриstruct вRust объявить нельзя – язык требует, чтобы каждый полностью‑значимый (Sized) тип знал свой размер на этапе компиляции. Но есть три практичных обходных пути, каждый подходит под разные сценарии.
---
1. Vec<T>— динамический вектор
struct Packet { id: u32, payload: Vec<u8>, }
Хранит длину и данные в одной кучевой аллокации.
Дешёвое создание (Vec::new()), гибкое пополнение, срезы через &payload[..].
Самый «жабовый» вариант (аналог ArrayList, только без лишней синхронизации).
2. Box<[T]>или Arc<[T]>— «фиксированный после создания» срез
struct Packet { id: u32, payload: Box<[u8]>, // или Arc<[u8]> если нужно share‑ить }
Выделяете ровно столько байт, сколько нужно, а потом структура становится иммутабельной.
Нет лишнего capacity, нет метода push, зато меньше памяти и кеш‑френдли.
Хорошо ложится на паттерн «прочёл из сети → положил, не меняешь».
3. “Кастомный DST” (dynamically‑sized type) ― когда нужна C‑подобная «структура‑с‑хвостом»
impl PacketHeader { // Чтение id/len безопасно, но сами экземпляры живут ТОЛЬКО за указателем }
Разрешён только у последнего поля, и такой PacketHeader нельзя хранить как значение — его можно держать лишь через Box<PacketHeader>, &PacketHeader, Arc<PacketHeader> и т.п.
Создаётся «ручной» аллокацией + копированием данных, либо через crates вроде thin-vec / ouroboros.
Делают так в низкоуровневом коде (парсер бинарных протоколов, FFI‑обвязка).
В стабильном Rust 1.76+ уже можно безопасно “расширять” Box<PacketHeader<[u8; N]>> → Box<PacketHeader> через unsizing coercion .
---
Почему нельзя просто [T]?
Обычный struct в Rust имплементирует Sized по умолчанию.
[T] (срез) — unsized: у него нет компиляционной длины, поэтому он не может лежать «прямо» внутри значения фиксированного размера. Именно поэтому компилятор потребует обёртку‑указатель.
Начните с Vec – это буквально два слова кода, а под капотом делает всё нужное.
Когда понадобится убрать overhead, замените Vec на Box<[T]>.
А уж если полезете в zero‑copy/FFI, тогда и достанете тяжёлую артиллерию с DST.
Rust действительно сначала ведёт «за ручку», но по мере роста задач открывается всё больше голых проводов. Спокойно, шаг за шагом: сначала удобство, потом оптимизация, потом unsafe‑магия. Ты же 10лет на Java пережил— с Rust тоже справишься 🙂
>>3451339 Так он реально хорош. Мне нужно рассчитать алгоритм где генерируется дерево с миллионами узлов, а потом ещё миллионами раз нужно его пройти обновляя веса нод.
Питон думаешь с таким справиться? А может жаба? Или скала? Или свифт? Не, с таким справятся три языка: С, С++, Rust. И из них самый пиздатый это раст.
>>3451067 >тебя никак не смущает что ты от VCPKG ВСЁ ИЗ ПОД КОРОБКИ >пришел к тому что ПРОЯВИТЕ ПОНИМАНИЕ, КРОССПЛАТФОРМЕНОСТИ НЕТ ИЗ ПОД КОРОБКИ Ты кому отвечаешь? Vcpkg — это удобная windows-only параша. Всё. Под виндой ты не можешь просто поставить Rust на комп и сразу компилировать бинари — тебе нужно либо MSVC, либо MinGW. Далее, сам софт на Rust будет кроссплатформенным только если ты его сделаешь таким. То есть, даже в рамках Cargo + Rust на нескольких платформах ситуация не такая простая, как некоторым кажется. В C/C++ просто ещё больше платформ, ещё больше компиляторов, и ещё больше разных систем сборки-пакетизации.
Я под линупсом использую vcpkg из коробки В vcpkg из коробки есть тулчейн для симейка Просто указываешь cmake -DCMAKE_TOOLCHAIN_FILE=/путь/к/vcpkg/vcpkg.cmake
>>3451018 >дёрнуть туда-сюда счётчик >zero-cost Это про другое, еблан, зеро-кост -- это, когда предоставленная тебе хуитка из каропки, будет недороже твоего собственного лисапеда. Пример из жизни классеги из плюсоговна. >Ехал Rc через RefCell У пидораста один плюс для анальников - это нескучные обои синтаксис, потому что можно ебануть всё через свои аллокаторы/статически аллоцированые вещи, и твой баран чекер как бы уже и не нужен.
>>3451708 Да, но если не будет финансирования, то всё это такое себе. Рисковать переписыванием всего кода на С++ потому что поддержку раст-куды прекратят не хочется.
>>3451747 Когда там уже 1.0 будет? И вообще zig это какой-то аналог сишки, а не крестов/раста, слишком мало сахара. После крестов выглядит неочень, на простейшие действия надо лепить бойлерплейт, а нормальные абстракции не написать. Когда привыкаешь в крестах изобретать велосипеды на ходу, хочется везде иметь такую возможность. Я вот недавно начал в стрелочки лямбды пихать, нравится.
>>3451814 >слишком мало сахара В этом и суть. >метахуйня Челибос зиг не для писания библиотек. >нормальные абстракции не написать >нормальные Сорокина читни.
>>3451579 >Под виндой ты не можешь просто поставить Rust на комп и сразу компилировать бинари — тебе нужно либо MSVC Для того чтобы запустить программу под ОС, нужно слиноковать системную либу этой ОС, какой кошмар.
>>3451863 >Для того чтобы запустить программу под ОС, нужно слиноковать системную либу этой ОС, какой кошмар. Держу на связи: Golang и FPC компилируют бинари без внешних тулзов. Здесь прикол скорее в том, что у них собственные заголовки для системы, а си-подобные языки пытаются напрямую использовать системные заголовки, типа чтобы всегда видеть актуальные заголовки. Эта хуйня с Unix повелась, где было модно системный API специфицировать строго в форме заголовочных файлов для C, но для винды и Linux это не актуально, потому что у этих осей есть свой стабильный бинарный интерфейс. Также, и Golang, и FPC изначально строились как системонезависимые высокоуровневые ЯП, а Си-подобные ЯП обычно подразумеваются как жёстко зависящие от системы и низкоуровневые. Если ты не изолируешься от платформы, то ты становишься от неё зависимым — что и требовалось доказать. А мы о чём-то спорим?
>>3451985 >Тогда зачем, по-твоему, для у тебя стоит десять MSVC Redistributables разных версий? Там по большей части изменения, касающиеся C++.
>Да и в Линуксе бинарь, собранный под новый libc, не запустится со старой версией. Последняя смена мажорной версии libc была 28 лет назад, лол. Зависимость от минорных версий libc — это уже следствия забития болта на бинарную совместимость интерфейса libc, её просто никто даж не пытается поддерживать. Поддерживают только зависимость по API заголовков и ABI ядра Linux.
>>3451855 Зачем мне читать. Абстракции не только про удобство, но и про производительность. Сишка очень сосёт в ООП-задачах например деревья, когда ты не можешь нормально объяснить компилятору что ты хочешь, вместо этого вываливая кучу процедурных костылей и сидя потом каждую строчку дроча в ассемблере, пытаясь сделать быстро. В то время как в крестах это хуяк-хуяк из классов и оптимизатор за тебя всё делает. > зиг не для писания библиотек Любой ЯП с невыразительным синтаксисом выразительность - это когда минимум повторений одинаковых конструкций языка, у раста например постоянно то лапша монад, то однотипные паттернматчинги только для либ и годится. Зачем писать в 3 раза больше кода, когда можно не писать. Поэтому раст так много где не взлетает, например в геймдеве. И зиг туда же, сидя примерно с таким же уровнем мусорности бойлерплейтного кода.
>>3451985 В винде их 3 штуки, а в пердоликсе даже libc не всегда есть, какой-нибудь musl встречаешь и пошёл нахуй. Пересборка софта каждый раз под новые зависимости - это только у пердоликса. Что уж тут говорить, когда даже финский нацик признавал какое говно дистрибуция софта в линуксе по сравнению с виндой/маком. Каждый дистр - это несовместимая хуйня.
>>3452047 >когда даже финский нацик признавал какое говно дистрибуция софта в линуксе по сравнению с виндой/маком А то что жалкое подобие Миникса монструозное говно он не сказал? Ща Раст в ядро затянет и можно закапывать.
>>3452027 >Там по большей части изменения, касающиеся C++. > И вызовы WinAPI. Под Линуксом Го еще дергает системные вызовы напрямую, но на Винду всем похуй, он точно также линкуется с майковским рантаймом. Как и любой другой язык.
>>3452039 >Абстракции >производительность Выбери что-то одно >деревья Ненужны. Понимаю, для ньюфагов кажется что деревья решают любые проблемы и без деревьев нельзя жить. Но деревья. Ненужны. > Любой ЯП с невыразительным синтаксисо Zig это когда ты берёшь и пишешь свой генератор и выражаешь любое возможное и невозможное дерьмище. Деревья в зиге нужно писать компайлтайм, чтобы все все ссылки были захардкоржены в этом дереве и не было никаких проходов дерева во время исполнения.
>>3452109 > Но деревья. Ненужны. Нужны. > Деревья в зиге нужно писать компайлтайм, чтобы все все ссылки были захардкоржены в этом дереве и не было никаких проходов дерева во время исполнения. Лол, удачи в построении дерева на миллиарды нод в компайлтайме.
>>3452109 Почему же тогда в репе зига активность в 20 раз ниже чем у раста? И всего в два раза выше чем у Карбона. Когда Карбон выйдет в состояние рабочего компилятора, про зиг все забудут как про страшный сон.
>>3452228 Не остановимся. Судя по репе активность весь 2024 увеличивалась. В этом году допилят дизайн безопасной памяти. На конец 2026 планы выкатить 0.1 версию компилятора.
>>3452156 >Нужны. Нет. Деревья для пидоров. >Лол, удачи в построении дерева на миллиарды нод в компайлтайме. Тут ты прав, но деревья всё равно не нужны.
>>3452217 > Почему же тогда в репе зига активность в 20 раз ниже чем у раста? Потому что пидоров меньше, белая раssa угнетена чулочниками и соевыми выблядками. Ничего, дух предков ещё не пал, не сломлено наше божество. >про зиг все забудут как про страшный сон. Зачем мне забывать про божественный компайлтайм в котором я строю деревья с захордкорженными индексами?
блин парни с вами так весело обсуждать какой язык лучше а какой хуже, вот бы для этого отдельный тред был... людей которые не собираются писать на расте, а пришли сюда посмотрев о нем пару видосов на ютубе, и решивших спросить зачем он нужен, прошу остаться
неосиляторы, студентота, шизы - вам всем тут рады, спрашивайте глупые вопросы, сритесь не вникая в суть, вобщем веселитесь
>>3452065 >И вызовы WinAPI. Под Линуксом Го еще дергает системные вызовы напрямую, но на Винду всем похуй, он точно также линкуется с майковским рантаймом. Как и любой другой язык. Там даже в mvcc давно уже Unified CRT и никакой API не меняется. А по поводу Go можно у нейросеточки было спросить, а не хуйню в инетах языком молоть: https://www.virustotal.com/gui/file/aa119482ff9c1873781a92da74b8af2a6f292c2e9a8f46dadb868e3327cd0ec3/details единственная зависимость у него — это kernel32.dll, ему твой visual C++ runtime не нужен. Visual C++ райнтайм — это райнтайм для ихнего компилятора и его бинарей, он никому другому, по-хорошему, не нужен, это не системные интерфейсы.
>>3452422 Сиплюшечка родненькая ебашет всю пидорастическую лгбтшную мразотину. Юл невер би а вумен. Раст никогда не станет полноценным языком. TND. TKD.
>>3452468 >Сиплюшечка родненькая ебашет всю пидорастическую лгбтшную мразотину Жалко конечно что Фурифокс на Раст с Крестов свичканулся, не думаю что будет много желающи движок на нем поддерживать
>>3452509 >Фурифокс на Раст с Крестов свичканулся И сразу превратился в тоталитарную парашу с радужной гомосятиной вместо интерфейса. Идеально отражает менталитет чулочников-пидорастеров.
>>3452551 Почти, с растанов. У него какая-то постироничная рубрика, где он берёт статью и разбирает по частям, пытаясь подъебнуть каждое слово. В том видосе он кекал с сишника, который перешёл на раст.
>>3452468 >Сиплюшечка родненькая ебашет всю пидорастическую лгбтшную мразотину. Юл невер би а вумен. Раст никогда не станет полноценным языком. TND. TKD. Держу в курсе: муриканское правительство выпустило рекомендацию, по которой новые критические проекты с 2026 писать на memory unsafe ЯП, а для старых нужно демонстрировать соответствие бюрократическим аббревиатурам. Мой предыдущий проект ещё попадав в категорию legacy, а вот все новые уже всё. Да, legacy ещё дохуя будет, но тенденция будет ускоряться. С одной стороны, наконец-то в софте станет меньше уязвимостейй, с другой стороны, хуже C++ может быть только Rust.
Я обычно озвучиваю этот тезис во всех срачах про раст, но тут что-то затупил. Надо было раньше сказать.
Основная проблема и C++, и Rust, которая приводит к переусложнённости — это подход "в каждой бочке затычка". То есть, мы делаем для написания performance-critical хуйни и драйверов ОС, и при этом мы пишем на том же ЯП бизнес-логику доставки пирожков, не имея ни GC, ни перспективы его заиметь. Проблема в том, что архитектура классических тьюринговых ЦП фундаментально ненадёжна, оно рассыпается от малейшей ошибки в алгиритме. Например, указатель стэка случайно сдвинулся на 8 — всё, пиздец, программа пошла выполнять случайный код. На таком фундаменте ничего дельного вы не построите, в том числе поэтому LLM со своими ошибками выглядят не так плохо на фоне ненадёжной работы тьюринг-алгоритмов.
Причём, ещё раз повторяясь, безопасность доступа к паммяти не гарантирует надёжности логики. От того, что у вас программа управления ракетой остановится прямо на взлёте ракеты, у вас ракета всё равно разобъется, с безопасным доступом к памяти и без него, итог не изменится. И именно в плане надёжности писания логики архитекторы Rust вообще ничего даже не начинали делать, я совсем никак не помогает писать надёжнее логику.
>>3452680 >и при этом мы пишем на том же ЯП бизнес-логику доставки пирожков, не имея ни GC, ни перспективы его заиметь. Ты ни JS ни Питухон ни Java не используешь для такого сорта приложений? Ну что сказать...
>>3434601 >Пишешь многопоточный код — и знаешь, что компилятор не даст тебе сделать гоночную ситуацию. Скорость на уровне C/C++ + безопасность. Rust никак не проверяет высокоуровневую логику. То есть, если ты сложил коровы с километрами — оно тупо сложит, ему похуй. Далее, в фундаменте многопоточности Rust лежит ублюдочный механизм координации через блокировки и счётчики ссылки, работают только для медленной межпотоковой коммуникации какой-то GUI параши, вроде нажатия кнопочки. Когда у тебя потоки возаимодействуют через какие-нибудь ring buffer-а, или, хуже того, перекидываются сложными динамическими структурами данных, то ты охуеешь по двести блокировок и счётчиков дёргать на каждый вызов функции. Самый простой пример корневой глобальной переменной: static GLOBAL_VAR: Mutex<Option<Arc<Rec>>> = Mutex::new(Some(Arc::new(Rec()))); Если кому не понятно — это безопасный эквивалент сишного: Rec *GLOBAL_VAR; При каждом чтении безопасной растовой хуйни вы должны брать мутекс, увеличивать счётчик ссылок, копировать Arc, отпускать мутекс. Если это нужно делать раз в секунду — похуй вообще. Если у вас тысяча потоков делает это тысячу раз в секунду — они уже будут половину времени сидеть в блокировках по мутексу.
По этой причине создатели Go целенаправленно избавились от счётчиков ссылок, вместо этого предпочитая накладные расходы от lock-free барьеров записи (хуйня, которая сигнализирует сборщику мусора об изменении указателя). Самый главный профит от такой реализации Go заключается в том, что при простом чтении вам вообще ничего не нужно делать, ровно как и при изменении не-указателей. У вас даже GC не запускается, если нет выделений-высвобождений памяти.
Это рвёт шаблоны мамкиным оптимизаторам, которые рассказывают, что только на C/C++ может быть быстрый код. Ну то есть как бы да, но на написание корректного и быстрого многопоточного кода нужно въебать настолько много времени, за которое можно десять раз написать парашу на mutex+shared_ptr. А большинству просто похуй, они читают-пишут переменные без блокировок с гонками, а когда раз в месяц падает тестовый стенд под нагрузкой, то говорят "да это кароч менеджер памяти глючит, вон же ж стэк на него указывает".
>>3452685 >> в софте станет меньше уязвимостейй >а ты смешной Объективно, порядка 60% уязвимостей в коде C/C++ — это некорректная работа с памятью. Высокоуровневые ошибки в логике это не отменит, но уязвимостей станет меньше.
>>3452687 >Ты ни JS ни Питухон ни Java не используешь для такого сорта приложений? Ну что сказать... При чём тут я? Я вообще ебал в рот Rust и его толерантных инклюзивных разработчиков. Мой основной стэк — это C/C++ и Python.
>>3452047 >Что уж тут говорить, когда даже финский нацик признавал какое говно дистрибуция софта в линуксе по сравнению с виндой/маком. Каждый дистр - это несовместимая хуйня. Это уже давно неактуально и решено. Даже в 2014, когда Торвальдс это говорил, он также озвучивал факт стабильности ABI ядра. Уже тогда я запускал статически слинкованные бинари и они работали, хоть и были пиздец какими большими. Другое дело, что статически линкованному бинарю может понадобиться интегрироваться с остальной системой, вроде запросов к dbus или pulseaudio, а это уже не ядерные интерфейсы и к ним доступ возможен только через разделяемые библиотеки (SO). Плюс есть куски дерьма вроде Python и Perl, для которых деплоё ещё более всратый и они всегда ведут себя так, будто являются единственным ПО на машине — такой софт нужно изолировать в собственное окружение (chroot или контейнера), но при этом появляется новая проблема взаимодействия изолированных окружений.
Как раз за год до речи Торвальдса уже был выпущен Docker, и Flatpak был в ранней разработке, но стабильные Overlay FS, которые на базе read-only пакетов и copy-on-write строили виртуальную файловую систему, появились даже позже, а без них эффективное пакетирование в изолированное пространство реализовать было нельзя.
Сейчас инструменты пакетизации ещё более развиты, есть стандартизированные интерфейсы X Desktop Group, к которым можно обращаться по стабильному ABI с любыми библиотеками и статически линкованными бинарями.
Пиздец блять, мало того, что в треде орудием шиз, которого в детстве выебал раст и теперь каждое четвёртое сообщение в треде от него, в котором он кричит "растопидары" и "чулночники", так ещё этот же пидорас создаёт тред, с картинками на которых раст превращается в пидор и трапов.
Я ливаю с этой помойки. Модерация нихуя не работает. Оставайтесь сами с ебанутыми.
>>3452677 Они выпустили рекомендацию, а не регламент. Пользуйся каким хочешь языком, какая разница? Там вообще ни слова про языки. Тем более кто коммерции что скажет? Петушиное правительство спросить забыли на каком языке писать нужно
>>3452743 >>3452971 Пиздец вы конечно неженки, токсики их оскорбляют в треде, плак-плак. В девочек мутируете?
Вы конечно могли бы волевым
> годный тред Хоть одну продолжительную дискуссию относительно алгоритмов/технологий назови. Упс.... Нету... Оказывается в этом треде такие же джуны как и во всех других.