Предыдущий тред : >>3371041 (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
*постить
Поможем, расскажем.
> ряяяя MEMORY SAFE
Мы вас растодебилов уже обоссали в пхп треде, больше не суйтесь к нам со своими картиночками, опущи.
Как наиграешься, не забудь на плюсы обратно переписать
Смотря в какая компания.
Я так понимаю из гейропы, поэтому не очень то и жирно
Если в РФ нашел ваку, то очень может быть
> Добро пожаловать в тред, посвященный гарантиям, обещаниям, владению
Блять, каким обещаниям? Надо было "контрактам" написать. Ладно, в следующий раз.

Тейлор Свифт

>компилируется
В 2020 линковщик оче долго работал, даже была эксперементальная замена ему, продолжаю охуевать от растодебилов, прошла практически половина десятилетия, до сих пор ничего не изменилось.
У меня есть личный проект, где на основе пользовательской конфигурации, нужно было генерировать персональный бек и клиент, все это дело собиралось в джокере. Условно говоря, пользователь выбирает нужную функциональность, генерируется конфиг, на основе конфига билдятся бек и клиент, все это разворачивается в облаке.
Так вот первым кандидатом для меня был раст, учитывая, что бек в моем случае по сути являлся обычным недопропрокси. Но из-за петушиной по длительности сборки сразу пришлось отказаться от этой затеи. По итогу выбрал Говно, которое билдится за считанные секунды и не приносит такой попаболи.
>вебговно
>кандидатом для меня был раст
Ебать даун.
>По итогу выбрал говно
Сразу почему не выбрал, экспертизы не хватило, даун?
Причина тряски?
>вебговно
Буквально требуется принимать бинарный пакет, парсить его и пересылать данные на клиент. Да и в чем претензия? Инструментов для вебговна на расте написано больше, чем для системной разработки и байтоебства, что довольно иронично.
>Сразу почему не выбрал, экспертизы не хватило
Потому что язык без ГЦ и милипиздрическими бинарниками лучше языка с ГЦ, рантаймом и жирным бинарем? У меня почти 3 контейнера с растоверсией недопрокси весили столько же как один гошный.
>вебговна на расте написано больше, чем для системной разработки и байтоебства
потому что вебговно намного большая сфера чем байтоёбство
на плюсах и на си было бы точно также, если бы на них хоть кто то был бы готов веб писать
Да он бля будет полчаса-час компилиться. У меня в облаке 4 cpu + 16 gb ram одна сборка идёт около часа (!). В принципе наверно ты правильно сделал. Я последовал совету rust guide'а, они типа пишут, мол просто добавьте workspace и всё будет чотка. Ну я добавил. Он теперь в два раза дольше компилит с воркспейсами лол. И вообще, я заметил - он иногда дублирует зависимости. Допустим берёт tokio-rustls компилирует v0.24.1 версии и v0.26.2. Дальше он компилирует tower версии v0.4.13 и версии v0.5.2. Может поэтому долго, я пока ещё этому кунгфу с зависимостями не научился.
>>12927
Раньше я этой хуйни не замечал. То есть было в районе 100 зависимостей и он собирался быстро. Теперь по мере роста проекта, чтобы только один бинарник скомпилить - их уже штук 500. Ну и плюс, он не может больше одного ядра использовать из-за настроек оптимизации. Такие дела.

Будь проклят тот день, когда ты сел за бараку этого пылесоса.
>потому что вебговно намного большая сфера чем байтоёбство
Только один вопрос, зачем так мучить жопу?
Алсо, где тред арийского языка Zig?
> зачем так мучить жопу?
пока из мучений только время компиляции, что далека не такая большая проблема
к примеру посмотри как веб на плюсах\си выглядит, вот там уже реальный треш начинается с userver

Напишите такой же аналоговнет на расте
Замечание:
1) строка 1 - определяем рекурсивно тип
2) строка 2 - содаем циклическую структуру (сама на себя ссылается)
3) строка 8 - рекурсивно печатаем содержимое поля a
Во первых зачем мне это делать, во вторых что ты вобще скинул, в третих какое отношение к вебу
> определяем рекурсивно тип
это что такое и какого она размера?
>какого она размера?
А тебе зачем? Для микроконтроллеров пишешь? Вопрос был для вебмакак, которые тут пишут покер солверы всякие
Даже в сишке можно через указатели создать циклическую ссылку. Но в сишке легко наебать самого себя, а в окамлах нет.
да, но указатель это не структура, мне самому гадать что у тебя option в твоем яп делает?
размер Option<x> равен размеру x + 4 байта
Если ты делаешь struct x { inner Option<x>}, то она имеет бесконечный размер sizeof x = sizeof inner = sizeof x + 4
1) Так я попросил аналоговнет на расте потому. Свой пример я скомпилировал и запустил. Он работает из-за TCO а не вываливается в переполнение стека
2) Конкретно окамел я сам только штудирую
Не тоже самое. У тебя нет циклических ссылок, а только рекурсивно определеная структура. Недавно компилятор тайпскрипта переписали на голенг, а не раст, по тому что в расте трудно с циклическимими ссылками работать. Одна из причин называлась.
PS я не расто хейтер если чо
> циклических ссылок, а только рекурсивно определеная структура
не вижу разницы а этих определениях
Ну как не видишь?
У тебя печататет
Hello world
2
3
А у меня печатает бесконечную портяку из 1 2 3
В сишке ты тоже можешь создать три указателя на три структуры и зациклить их в круговую. Это не займет кучу памяти
Потому что хачкель академический язык, а в окамле есть все, хоть и местами устаревшее. Монады через монады ебать тоже не комфортно.
>Потому что хачкель академический язык, а в окамле есть все, хоть и местами устаревшее.
Ну как будто бы хачкель более распространен, тот же pandoc, например, или grease. А ocaml только в контексте jane steet вспоминается.
ансейфа цепляешь к последней ноде голову и наслаждаешься
если впадлу ансейф - Rc
ни функция ни структура от этого не поменяется
Никаких сложностей с борров чекером нет. Кто память руками чистил борров чекеров не боится. Проблемы только у залетевших питонистов/жсеров и прочих, которые только в расте про указатели узнали.
То есть то, что программы надо писать с буквально единственным явным владельцем у любого объекта - это не большая проблема? Или ты любой объект всегда клонируешь при передаче?
>посмотри как веб на плюсах\си выглядит
Сорян, но я не дебил, чтобы на СИСТЕМНОМ языке писать веб дерьмо.
Мы уже выяснили, что раст для веб дерьма, а не байтослесарии.
>единственным явным владельцем у любого объекта
сильно удивишься если узнаешь что в расте это не обязательное условие?
раст бук пролистай на досуге, может хоть позориться в расто треде не будешь больше
> не осилил раст бук
> не осилил прочитать ответ на свой вопрос
что ты в расто треде вобще забыл?
Потрогай траву, чел.
Что это за человек на шебмке?
https://play.rust-lang.org/?version=stable&mode=debug&edition=2024&gist=4f0bb708094b4289629f5627b2283c30
Создать можно. Его потом обойти нельзя, но так IRL этого и так никто не делает.
Показываю.
https://github.com/torvalds/linux/blob/master/include/linux/list.h
>>14597
Это хуевый код.
если анон не подает признаки того что хотя бы прочитал раст бук, то о чем с ним вобще говорить в расто треде?
труп страуса говорил, что лучше юзать не списки
Никакие списки, кроме тех, которые юзаются во всякой лок-фри хуйне, нахуй не нужны. В этом плане этот список ничем не хуже любого другого из стандартных либ.
Это бы сработало, если бы у системщики не были стабильно на параше в плане зарплат по сравнению с примерно со всеми остальными.
Трудно представить ебало программиста не знающего си
Да каво ты блять спрашиваешь, он сам нихуя не знает. Он даже не пытается как-то аргументировать свой ответ. Rust для микроконтроллеров норм! Бери embassy и делай че хочешь. В смысле, что за вопрос такой "норм или не норм". Ты думаешь что проблема всегда в плохих языках, а не в кривых руках из жопы которые нихуя не умеют программировать?
> In Rust, you don't have classes in the same way as languages like Java or Kotlin.
Хахахахахахахахахахаха. Без комментариев.
Прошивки для батлплагов погроммировать на расте, да.
> 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.
Это какой-то C уровень.
https://users.rust-lang.org/t/why-rust-doesnt-have-function-overloading/80416
> C уровень
в си разве нет перегрузки фунекций?
Нет, в Цэ с этим всё верно сделано, как и в пидорасте.
Трейты заменяют 90% юзкейсов, билдеры еще 9%. В одном проценте написать лишнее слово руки не отвалятся.
>Недавно компилятор тайпскрипта переписали на голенг, а не раст, по тому что в расте трудно с циклическимими ссылками работать
немного по-другому же
>Перед началом работы над проектом разработчики изучили возможность использования различных языков программирования и поэкспериментировали с прототипами на разных языках. В итоге для создания нового компилятора был выбран язык 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.
Да ёб вашу ж мать, понятно же, что на расте такое начинать нахуй не уперлось никому.
снимаю шляпу за ссылку на источник
но
>>17327
>such as the need for structural compatibility with the existing JavaScript-based codebase
вот это в первую очередь
вряд ли там 90% кода - обход деревьев
но даже создание и обход можно было бы написать на unsafe, обернуть это в safe api и юзать без боли
так что аргумент "сложна" считаю несостоятельным, а выбрали больше потому... переведу на нормальный с официально гринтекст: "ну го больше внешне на джс похож, чем другие, а компилятор уже написан на джс - кодерки будут брыкаться, а разогнать их не могу, они же и писал тс компилятор, чувствуют власть, новое учить не будут, поэтому го. Что то хуйня на сборщике мусора, что эта - горбоатого только могила исправит. Даже шарпам пытались научить, что было бы более логично, но макаки взубнтовались, им сложна, очень далеко от их джс-сиськи"
почему ты так считаешь, анон?
почему есть проекты, которые начаты на rust? почему им уперлось? такое - это какое?
разверни мысль, хотелось бы услышать не просто мнение, а обоснование
>>13683
А что это за язык такой?
Выглядит неплохо, но есть доеб: непрозрачно
Поясню: очевидно, что тут работает через ссылки, но в коде этому нет отражения. Напомнило шарпы: экземпляр класса выделяется на куче, возвращается ссылка, работаешь дальше только со ссылкой. Но это приводит к проблемам, ведь не все объекты - экземпляры класса. Так и тут: y - это ссылка? Любой объект - это ссылка? Объекты хранятся на стеке или на куче? Если на куче, то язык к гц? Если на стеке, то нахуя создавать каждому объекту ссылку?
Понимаю, что я просто не знаю язык, поэтому много вопросов, но в любом языке непрозрачность вредит. Я тут не вижу где указывается ссылка/указатель
>Напишите такой же аналоговнет на расте
Нет идеального языка, где-то будет бо-бо. Либо гц надо будет создавать, либо безопасность будет держаться на плечах кожаного мешка, либо как в расте: болью создания циклических структур - оказывается нет идеального языка
Но, внезапно, в ансейфе можно создавать циклические структуры, прямо как в небезопасных языках, то есть хуже, чем в небезопасных языках не будет. Но остальные части можно писать в сейф-режиме, то есть лучше, чем в небезопасных языках.
Ну и кста, если тревожник и циклическая структура используется не в хот-пути, то берем за основу вот это >>13729, добавляем RefCell, получаем циклическую структуру на расте без unsafe
https://play.rust-lang.org/?version=stable&mode=debug&edition=2024&gist=91b432f9cb912aee761cb8177e115ef4
>>13683
быстро дополню
да, согласен, unsafe-код получился больше, чем у тебя: длиннее, по логике лишняя сущность (refcell), чуточку сложнее
но
1) никто не запрещает юзать unsafe, и это в любом случае будет НЕ хуже, чем у тебя
2) мы взяли пример, где у раста слабое место. Как я говорил, идеального языка не существует, что-то уйдет в минус, но у раста прям хороший трейд-офф: вместо гц и потери безопасности в узких местах надо ввести refcell (что чуть-чуть усложнит код и введет хоть и незаметный, но оверхед), либо все же потерять гарантии безопасности, но лишь в этих самых узких местах, которые отполируют в либах взрослые дяди и отдебажат тысячи ручек
>>17533
> по логике лишняя сущность (refcell)
У раста есть внутренняя логика (заимствований), и RefCell - её реализация. Нахуя так обобщать?
Плохо выразился
Я к тому, что по абстрактной логике - никакого refcell быть не должно
Вот типа пишешь на псевдокоде - ты не будешь писать refcell
А вот когда уже кодишь на расте, ты должен учитывать, как ты называешь, внутреннюю логику и ее реализацию
Поэтому да, чисто логически: refcell - лишняя сущность, но необходимая в языке с аффинными типами, которые дарят свои плюшки
ну и немного подушнить
раст использует аффинные типы (те, которые следуют move семантике), их правильное применение гарантируется борроу чекером. Видимо, ты это имеешь в виду, когда говоришь "у раста есть внутренняя логика". Но RefCell - это не реализация этой внутренней логики. Это даже не часть языка. Это просто код, контейнер, который немного ослабляет ограничения борроу чекера для элемента этого контейнера во время компиляции и переносит эти проверки на время выполнения путем использования unsafe кода внутри.
>педеRUST
Им надо не через 5 или 10 лет выдать конпелятор, а через год. Раст для этого не подходит очевидно.
>но даже создание и обход можно было бы написать на unsafe, обернуть это в safe api и юзать без боли
Лол, так может сразу на сишке написать? Или лучше на зиге!
Правильная реализация линкед листа на педерасте - это ненаписанная реализация линкед листа, смешно видеть эти все рефцелы и прочий костыльный мусор.
У тебя буквально весь софт на си написан, а другая маленькая часть на плюсодерьме. Ты ебобо?
Этот педераст перегрелся, несите нового?
если тебе лучше можешь даже и на ассемблере написать
если пытаться переобучать макак с джс - согласен
но так уж получилось, что Хейлсберг в тупике: очевидно, что заменить команду он не может, ведь они писали компилятор и знаю нюансы и тонкости, а переобучать макак на что-то далекое от джс - макаки устроят бунт
но если бы эта команда изначально знала раст - написали бы за тот же срок, что и на гошке
>>17908
тут уже фак для таких как ты пытались создать
даже мои посты выше давали ответ, но растхейтеры действуют по своей методичке
я не хочу второй раз объяснять, просто перечитай хотя бы это
>>17533
>1) никто не запрещает юзать unsafe, и это в любом случае будет НЕ хуже, чем у тебя
>2) мы взяли пример, где у раста слабое место. Как я говорил, идеального языка не существует, что-то уйдет в минус, но у раста прям хороший трейд-офф: вместо гц и потери безопасности в узких местах надо ввести refcell (что чуть-чуть усложнит код и введет хоть и незаметный, но оверхед), либо все же потерять гарантии безопасности, но лишь в этих самых узких местах, которые отполируют в либах взрослые дяди и отдебажат тысячи ручек
Да просто пиздец, ты сам выделил в гринтекст мою цитату "обернуть это в safe api и юзать", но все равно будто не видишь этого. Ты не смог разобрать ОДНО предложение и понять его смысл. Давай все же натолкну: unsafe 0,1% кода != unsafe 100% кода. Или это тоже надо как-то разъяснять?
Когда усвоишь информацию выше - можешь мне написать
Если я увижу, что ты не усвоил информацию или усвоил, но все равно действуешь по своей методичке - я не хочу тратить на тебя время
>>17912
Еще один с методичкой
Реализуй линкед лист как хочешь: хочешь с рефцеллом, хочешь без, в зависимости от твоих требований
Тебе тоже относится то, что я писал анону выше в этом посте. Тоже проспись, тоже почисти зубки, поешь полезную и сбалансированную еду, сделай зарядку, приведи голову в порядок, чтоб у тебя была возможность усвоить то, что я написал (вроде ничего сложного не писал же), обработать эту информацию, а после этого мы сможем конструктивно поговорить. А то как с нпс общаюсь, одни и те же предложения, одни и те же тейки. Приводишь контраргументы, ждешь какого-то развития событий, конструктивного обсуждения, но происходут перегруз, и... "на расте ты не сделаешь циклическую структуру", "на расте невозможно реализовать линкед лист правильно". День сурка какой-то
если пытаться переобучать макак с джс - согласен
но так уж получилось, что Хейлсберг в тупике: очевидно, что заменить команду он не может, ведь они писали компилятор и знаю нюансы и тонкости, а переобучать макак на что-то далекое от джс - макаки устроят бунт
но если бы эта команда изначально знала раст - написали бы за тот же срок, что и на гошке
>>17908
тут уже фак для таких как ты пытались создать
даже мои посты выше давали ответ, но растхейтеры действуют по своей методичке
я не хочу второй раз объяснять, просто перечитай хотя бы это
>>17533
>1) никто не запрещает юзать unsafe, и это в любом случае будет НЕ хуже, чем у тебя
>2) мы взяли пример, где у раста слабое место. Как я говорил, идеального языка не существует, что-то уйдет в минус, но у раста прям хороший трейд-офф: вместо гц и потери безопасности в узких местах надо ввести refcell (что чуть-чуть усложнит код и введет хоть и незаметный, но оверхед), либо все же потерять гарантии безопасности, но лишь в этих самых узких местах, которые отполируют в либах взрослые дяди и отдебажат тысячи ручек
Да просто пиздец, ты сам выделил в гринтекст мою цитату "обернуть это в safe api и юзать", но все равно будто не видишь этого. Ты не смог разобрать ОДНО предложение и понять его смысл. Давай все же натолкну: unsafe 0,1% кода != unsafe 100% кода. Или это тоже надо как-то разъяснять?
Когда усвоишь информацию выше - можешь мне написать
Если я увижу, что ты не усвоил информацию или усвоил, но все равно действуешь по своей методичке - я не хочу тратить на тебя время
>>17912
Еще один с методичкой
Реализуй линкед лист как хочешь: хочешь с рефцеллом, хочешь без, в зависимости от твоих требований
Тебе тоже относится то, что я писал анону выше в этом посте. Тоже проспись, тоже почисти зубки, поешь полезную и сбалансированную еду, сделай зарядку, приведи голову в порядок, чтоб у тебя была возможность усвоить то, что я написал (вроде ничего сложного не писал же), обработать эту информацию, а после этого мы сможем конструктивно поговорить. А то как с нпс общаюсь, одни и те же предложения, одни и те же тейки. Приводишь контраргументы, ждешь какого-то развития событий, конструктивного обсуждения, но происходут перегруз, и... "на расте ты не сделаешь циклическую структуру", "на расте невозможно реализовать линкед лист правильно". День сурка какой-то
>но если бы эта команда изначально знала раст - написали бы за тот же срок, что и на гошке
Через 3 года любая команда, которая изначально знает раст, педерасто-сообществом выписывается в команду, которая не знала раст изначально, или неосиляторов.
>растхейтеры
Мимо, педераст, я хейчу вас, растомакак, язык норм для своих задач.
>Через 3 года любая команда, которая изначально знает раст, педерасто-сообществом выписывается в команду, которая не знала раст изначально, или неосиляторов.
таблетки