Как увеличить fps в rust
Содержание:
- Настройка Rust для слабого ПК
- Дверь из листового металла из ржавчины
- Система скинов на модифицированных серверах
- Как узнать, что у игрока есть оружие
- При этом Rust не панацея
- Способы повысить FPS
- Меню взаимодействия с персонажем
- Настройки игры и разбор их влияния на FPS
- Как узнать, использует ли игрок alt
- Как мне запереть мою дверь?
- Как правильно лутать военный вертолёт?
- Типы данных
- Основные общие команды
- По каким причинам нельзя изменить пол и расу моего персонажа?
- В Rust нет бардака с библиотеками
- У Rust настоящая zero-cost abstraction
Настройка Rust для слабого ПК
1. Обновите драйвера на видеокарту. Банальный совет, но нередко помогает. Драйвера AMD Radeon ищите здесь, а Nvidia GeForce — здесь.
2. Сделайте дефрагментацию жесткого диска. Это может очень помочь на старых или ноутбучных HDD. Для запуска дефрагментации зайдите в свойства диска C: (или того, где установлена игра) и перейдите во вкладку «Сервис». После этого запустите соответствующую службу из списка.
3. Отключите скины. Для этого удалите папку steamapps/workshop/content/252490 и после запуска введите через консоль (клавиша «
») graphics.itemskins 0. После выхода из игры скины снова включатся — пункт придется повторять каждый раз. Эффект от отключения скинов может быть ощутимый, так что не ленитесь.
4. Отключите службу обновления Windows. Чтобы это сделать в Windows 7, надо открыть «Панель управления» и ввести слово «обновление» в строку поиска в правом верхнем углу окна. В результатах появится «Центр обновления Windows» — откройте его. В нем отключите автоматические обновления операционной системы. Что касается Windows 10, то здесь нужно нажать кнопку «Пуск», нажать шестеренку слева, открыть раздел «Обновление и безопасность», нажать «Дополнительные параметры» и в открывшемся разделе включить опцию «Приостановить обновления».
5. Настройте параметры запуска в Steam («Свойства» —> «Общие» —> «Установить параметры запуска»): -force-d3d11-no-singlethreaded -force-gfx-direct -сpuCount=2 -exThreads=4 -maxmem=2048
Важно! Все параметры вводятся одной строкой через пробелы. Последние три подбирайте, исходя из количества ядер вашего процессора, количества потоков и размера оперативной памяти (в мегабайтах)
6. Понизьте требовательные параметры графики (во вкладке Performance): Max Gibs (детализация разрушений), Terrain Quality (качество ландшафта), Shadows (тени), Draw Distance (дальность прорисовки) и Object Quality (качество трехмерных объектов).
7. Отключите траву через внутриигровую консоль (вводите по очереди):
grass.on falsegrass.shadowcast falsegrass.shadowreceive false
Дверь из листового металла из ржавчины
Последний шаг, который необходимо решить, — это наша деревянная дверь, которую можно легко сломать. Чтобы улучшить нашу дверь, мы можем перейти с основного деревянного материала на более прочный и непроницаемый листовой металл.
Вам нужно будет собирать металлическую руду, чтобы построить эти стальные стены.
Металлическую руду можно найти в породах более красноватого цвета или с оттенком «ржавчины».
Эти камни могут выглядеть неровными с темными бороздками вдоль них.
Прежде чем вы сможете создать что-либо из металла, вам нужно сначала создать печь, чтобы переплавить нашу металлическую руду.
Система скинов на модифицированных серверах
На большинстве модифицированных проектов присутствует система бесплатных скинов. Благодаря данной системе даже игрок без лишних купюр в кошельке может порадовать глаз красивым пикселям на оружии и нагибать врагов.
Открывается меню вводом команды /skins в чат, после чего последует открытие меню, похожее на открытие большого сундука. В первый слот перетащите нужный Вам предмет. Начнут появляться доступные скины на сервере. Что бы выбрать скин, наведите на нужный и просто перетащите себе в инвентарь.
На каждом проекте плагины разные, но суть примерно остается той же.
Заметьте, что список доступных скинов зависит от того, сколько скинов загрузили создатели сервера. Так же возьмите на заметку, что есть сервера, где функция /skins — платная и/или может идти вместе с полноценной привилегией.
Как узнать, что у игрока есть оружие
На персонаже в игре Rust отображается не только одежда и его внешний вид. Помимо этого, на игроках можно заметить и их вооружение, даже если они не взяли его в руки. Вооружение может отображаться в трёх местах, а именно на поясе (справа и слева), а также на спине. Гранаты, взрывчатки и небольшое оружие ближнего боя будет отображаться под левой рукой персонажа, пистолеты под правой рукой, а всё остальное вооружение будет на спине.
Таким образом можно понять, что у игрока есть какое-то определённое оружие в инвентаре. Однако, есть 1 нюанс – будет отображаться лишь 1 оружие к каждому вышеупомянутому слоту. То есть если у игрока в инвентаре будет не одно оружие, отображаемое, к примеру, на спине, будет отображаться лишь 1 из них.
При этом Rust не панацея
Тех, кто только планирует погрузиться в Rust, предупреждаю: это не панацея от всех болячек C++. Он защищает вас от гонки данных через проверку borrow checker, но пропускает дедлоки. Защищает от use-after-free, но только в safe-подмножестве. Если же работаете с unsafe — у вас, по сути, будет тот же С++, только с более продвинутой стандартной библиотекой.
Изображение: Альберто Блинчиков для Skillbox Media. Источник
Хотя и здесь не всё так однозначно. Многие важные фичи, например для разработки драйверов или встроенного ПО, остаются нестабильными, а значит, писать на Rust серьёзные проекты пока рискованно. По этой причине от Rust часто отказываются в пользу C++, где всё давно stable и unsafe.
Способы повысить FPS
Если у вас маленький FPS, сопровождающийся фризами, то для начала вам стоит обратить внимание на скины! Да, вы можете играть без скинов, но другие игроки их могут использовать, а это так же будет нагружать процессор. Скины потребляют много мощности вашего ПК, не оставляя её на другие задачи
Отключить отображение скинов очень просто:
- Заходим в локальные файлы Rust;
- Открываем папку cfg;
- Открываем client.cfg;
- Вписываем graphics.itemskins «False».
После этих действий скины в игре будут отключены, но есть один побочный эффект: если вам нужно будет поменять настройки графики , вы не сможете этого сделать, это связано с тем, что при отключении скинов происходит баг при котором игра не даёт менять настройки графики. Чтобы их поменять, вам придётся вернуть параметры отображения скинов до исходных, то есть прописать в graphic.itemskins «True» из client.cfg, запустить игру, поменять настройки графики, а потом уже вновь отключить отображение скинов.
Если вы давно (никогда) не чистили видеопамять, то самое время это сделать, ведь это поднимет FPS в любой игре! Для этого вам потребуется:
- Нажать «F1».
- Прописать туда команду gc.collect.
*Эти действия можно проделывать каждый раз, при понижении FPS, так же можно сделать «бинд» данной команды, для этого потребуется:
- Нажать F1.
- Прописать bind gc.collect .
*Пример: «bind j gc.collect» – каждый раз при нажатии «j» будет происходить очистка видеопамяти.
Также можно играть не в полном экране, а в оконном режиме. это также повышает FPS.
Помочь в повышении FPS может также и изменение параметров файла подкачки.
Делайте все верно, чтобы не вышло такой фигни:
Чтобы изменить параметры файла подкачки: Переходим в свойства системы (Правой кнопкой мыши по ярлыку «Мой компьютер» >>> Свойства) >>> Дополнительные параметры системы >>> Во вкладке «Быстродействие» переходим в параметры >>> Дополнительно >>> Во вкладке «Виртуальная память» кликаем на «Изменить» >>> Вручную выставляем Исходный и максимальный размер, если у вас 8 Гб оперативной памяти, то исходный размер ставим 8192 (В гигабайте 1024 мегабайта), а максимальный 16384, если у вас 4 Гб оперативной памяти, то соответственно ставим исходный размер 4096, а максимальный 8196.
Меню взаимодействия с персонажем
Характеристики
Здоровье
Здоровье – ключевой показатель. Опускать его до критических значений вообще нельзя, так как при достижении отметки в 0 единиц здоровья персонаж или перейдёт в положение «Повален, но не убит», или отправится в меню возрождения.
Эффективнее всего восстанавливается большой аптечкой, ягодами (ежевика и черника) и медицинскими шприцами.
Здоровье можно увеличить до 120 единиц при помощи чая на максимальное здоровье.
Данный параметр тоже не следует опускать до нуля, так как при полном обезвоживании персонаж теряет возможность бега, то есть передвигаться придётся исключительно шагом. Опасной становится отметка в 40 единиц жажды. Уже на этом этапе игра настаивает на том, чтобы вы нашли какой-нибудь водоём, из которого можно попить воды, или утолить жажду любым другим способом. На отметке в 10 единиц очень заметно начинает убавляться здоровье. Советуем следить за данным показателем, а при возможности и вовсе рекомендуем держать его на максимальном уровне, перед началом вылазок уж точно.
Голод
Последний показатель персонажа. Никаких дебаффов он не даёт, даже если опустить голод до нуля. Однако, при критическом уровне голода, как и в случае с водой, начинает отбавляться здоровье. Поэтому не забывайте время от времени устраивать перекусы. Также хотим напомнить о том, что практически вся еда восстанавливает и воду, что может выручить, когда оба показателя на низком уровне.
Быстрые слоты
Быстрые слоты – один из важнейших элементов интерфейса в Rust. Такие слоты позволяют нажатием всего на 1 кнопку поменять оружие на инструмент для добычи ресурсов, или на что-нибудь ещё. Всего таких слотов 6, и все они всегда отображаются на экране (если не отключён весь интерфейс). Не советуем хранить ресурсы в данных слотах, а использовать их исключительно для самых необходимых предметов.
Слоты одежды для персонажа
Слоты одежды предназначены для элементов одежды и брони вашего персонажа. Туда же помещаются и упомянутые в данном материале усы и борода Санта-Клауса
Об одежде и броне мы рассказывали в отдельных материалах, поэтому не будем заострять на них внимание, а лишь напомним, что не все элементы одежды и брони совместимы между собой. Вариаций костюмов можно придумать огромное множество, но более 7 элементов экипировать, увы, не получится
Характеристики от одежды
Каждый элемент одежды или брони даёт те или иные баффы к показателям. Повышение характеристик мы подробно расписывали в соответствующих материалах. Сейчас же мы лишь расскажем, каким образом рассчитывается защита головы, туловища и ног, а также общих показателей.
Защита отдельных частей тела определяется путём сложения абсолютно всех показателей брони и одежды, помещаемых на определённую часть тела. В характеристиках каждого предмета написано, защиту какой части тела он даёт. Сюда попадают лишь 2 характеристики: защита от огнестрела и от оружия ближнего боя.
Общие показатели же определяются путём сложения абсолютно всех оставшихся показателей, а именно: холод, радиация, укус, взрывоустойчивость.
Настройки игры и разбор их влияния на FPS
Вкладка Options
Field of view (угол обзора) – этот параметр изменяет угол обзора и влияет на FPS довольно сильно, поэтому, если вам нужно больше FPS, то ставьте его на минимум. Остальные параметры во вкладке «Options» не влияют на FPS!
Graphics
Depth of field (глубина резкости) – это параметр, который создаёт фокусировку камеры, очень багованый, часто неправильно работает, поэтому его стоит выключить.
Ambient occlusion (глобальное затемнение) – параметр, который добавляет больше теней, забирает много FPS, хотя при его включении игра становится значительно красивее. Всё же игрокам, у которых низкий FPS, я бы посоветовал его отключить.
Anti aliasing (сглаживание) – потребляет мало FPS, да и качество почти не меняется при смене уровней параметра, поэтому можно смело ставить FXAA.
High quality bloom (высококачественные блики солнца) – делает солнце более красивым, потребляет мало FPS.
Lens dirt (грязные линзы) – добавляет атмосферности, потребляет мало FPS.
Motion blur (размытие движений) – параметр, который добавит размытие по краям экрана во время движения игрока, игра выглядит намного красивее с ним и движения игрока становятся более плавные.
Sun shafts (солнечные лучи) – параметр добавляет лучи солнца, добавляя атмосферности, потребляет мало FPS.
Sharpen (резкость) – параметр, который добавляет чёткость изображению, потребляет мало FPS.
Vighet (виньетка) – параметр добавляет затенения по углам экрана, добавляет атмосферности, потребляет мало FPS.
Graphics quality (качество графики) – изменяет прорисовку почти всего в игре. Важный параметр, его стоит отключать в последнюю очередь, т.к. без хорошей картинки играть будет некомфортно и неудобно.
Grass displacement (движение травы) – мнёт траву под ногами, помогает искать предметы в траве. Мало потребляет FPS, добавляет атмосферности.
Shadow quality (качество теней) – меняет качество теней, очень малое потребление FPS.
Grass shadow (тени травы) – параметр, который добавляет тени от травы, влияние на FPS малое, оно и незаметно.
Contact shadows (контактные тени) – добавляет ещё больше теней, влияние на FPS очень маленькое, но есть.
Shadow cascades (каскады теней) – параметр влияющий на тени, работает странно, так как больший прирост FPS наблюдается, когда вы ставите параметр на 2, а не на 0. Сильно влияет на тени, потребляет много FPS.
Water quality (качество воды) – потребляет много FPS, разница при смене параметра сильно ощутима.
Water reflections (отражения на воде) – потребляет много FPS, но без этого параметра вода выглядит не очень.
World reflections (отражения мира) – изменений в графике почти нет, они даже не заметны, да и на FPS он не влияет.
Max shadow light (максимальное кол-во теней от света) – стоит отключить, в графику изменений не приносит, зато потребляет FPS, хотя совсем немного.
Shader level (уровень шейдеров) – много потребляет FPS, но и влияние на графику оказывает большое, особенно на графику земли.
Draw distance (дальность прорисовки) – влияет на прорисовку, сильно влияет на FPS.
Shadow distance (дистанция теней) – потребляет много FPS, сильно влияет на графику.
Anisotropic filtering (анизотропная фильтрация) – малое потребление FPS, сильное влияние на графику. Влияет на графику объектов, на которые вы смотрите под углом.
Parallax mapping (параллактическое отображение) – самый ненужный параметр, потребляет много FPS, графику не меняет, в любом случае его стоит отключить.
Performance
Max gibs (количество частей, на которые распадаются объекты) – потребляет очень много FPS, при чём на ПК любой мощности, параметр стоит поставить на минимум.
Particle quality (качество частиц) – малое потребление FPS, зато большое влияние на графику.
Object quality (качество объектов) – параметр влияет на прорисовку построек, потребление FPS зависит от выставленного числа. Больше число-больше забирает FPS.
Tree quality (качество деревьев) – до числа 80 FPS мало меняется, а при увеличении числа в настройках, начинает потреблять много FPS.
Terrain quality (качество земли) – изменения в графике едва заметны, изменения FPS тоже малы, параметр можно выключать.
Grass quality (качество травы) – влияет на прорисовку травы, потребление FPS относительно выставленного числа. Больше число-меньше FPS!
Decor quality (качество декораций) – влияния на графику практически нет, на FPS тоже, параметр можно отключить.
Как узнать, использует ли игрок alt
Теперь если игрок будет осматриваться с зажатой клавишей alt, голова его персонажа будет вращаться.
Развёрнутая голова
«Уженских ничего такого пока нет по причине отсутствия в игре женских персонажей. Но судя по свежему дневнику начальника разработки Гарри Ньюмена (Garry Newman), появление прекрасных половин уже дело самого ближайшего будущего. И тогда выживание в Rust станет еще более рандомным, чем даже в случае с мужскими достоинствами.Потому что (дословная цитата) «чтобы всем было понятно, когда женские модели появятся, вы не сможете выбирать между мужским и женским полом для персонажей; мы не лишаем вас выбора – у вас его просто никогда не было и не будет». В принципе, все как в жизни, в ней ведь мы тоже не можем выбирать свой пол… Вернее, уже можем, но это совсем другая история.»
Да, покупать заново и на новой учетке стима. И то не факт, что снова не выпадет женщина.
«Уженских ничего такого пока нет по причине отсутствия в игре женских персонажей. Но судя по свежему дневнику начальника разработки Гарри Ньюмена (Garry Newman), появление прекрасных половин уже дело самого ближайшего будущего. И тогда выживание в Rust станет еще более рандомным, чем даже в случае с мужскими достоинствами.Потому что (дословная цитата) «чтобы всем было понятно, когда женские модели появятся, вы не сможете выбирать между мужским и женским полом для персонажей; мы не лишаем вас выбора – у вас его просто никогда не было и не будет». В принципе, все как в жизни, в ней ведь мы тоже не можем выбирать свой пол… Вернее, уже можем, но это совсем другая история.»
Да, покупать заново и на новой учетке стима. И то не факт, что снова не выпадет женщина.
1,519 | уникальных посетителей |
8 | добавили в избранное |
По разным причинам некоторых игроков интересует, можно ли, и если да, то как создать персонажа в Rust? Буду краток. Это решительно невозможно сделать. Смонтировать внешность героя по принципу как в Fallout или Mass Effect у Вас не получится. Функционал игры не предусматривает такой возможности. По крайней мере, таково положение вещей на момент сентября 2020 года.
Быть может, в будущем разработчики внедрят в Rust конструктор внешности героя. Если же вы читаете эту статью, значит, конструктор ещё не внедрён. То есть, внешность персонажа каждого игрока определяется абсолютно случайным образом, и выдаётся ему в момент, когда игра запускается в первый раз после покупки.
Однако ни всё так безысходно, как может показаться на первый взгляд. Оспаривать рандомайзер раста, определяющего наружный вид игрока, всё-таки можно, хоть это и весьма геморройно. То есть, если вам, например, присвоили в игре женское тело, это поправимо. Стать мужиком с одной или нескольких попыток проделывания нижеописанного алгоритма реально.
Зарегистрируйте несколько (максимум – 5) новых аккаунтов в Steam. Если такие уже есть, вспомните от них пароли, чтобы в них авторизоваться.
Далее в настройках учетной записи, где куплен Rust, необходимо активировать «Семейный доступ». Делается это установкой галочки в разделе настроек «Семья». Это позволит скачивать игру с других аккаунтов на текущем компьютере.
Повторяйте этот алгоритм до тех пор, пока не достигнете желаемого результата. Возможно, это ни то, что вы искали, но, увы, по-другому внешний вид персонажа на момент 2021 года не меняется.
Благодарю вас за прочтение этого руководства!Кому помог — нажмите лайк и если не жалко наградите <3
Как мне запереть мою дверь?
Ответ:
- Постройте дверной проем (Wooden Doorway) и деревянную дверь (Wooden Door).
- Сделайте замок (Lock) и положите себе на пояс в меню быстрого доступа.
- Выберите слот с замком и прицельтесь на дверь. Затем нажмите левую кнопку мыши.
- Вы увидите зеленый коробок на двери. Это означает, что ваша дверь имеет замок, но не заперта.
- Нажмите E и выберите сделать ключ (Make A Key). Имейте ввиду, что у вас должно быть в наличии 50 дерева (Wood).
- Теперь дождитесь, пока ключ сделается. Затем посмотрите на дверь, нажмите E и выберите запереть (Lock).
- Теперь коробок на двери должен стать красным. Дверь заперта.
Как правильно лутать военный вертолёт?
Rust. Гайд для новичков
Обыскивать военный вертолёт, как какой-нибудь ящик, не получится. Обязательно необходимо придерживаться тактики, а она строго зависит от того, сколько игроков у вас в команде. Если у вас большая группа (клан), тогда всё просто:
Первым делом важно несколько игроков оставить на крыше постройки. Если группу маленькая, но способная, тогда можно оставить одного самого меткого и опытного игрока на крыше, чтобы он прикрывал остальных
Если же группа большая, тогда можно оставить 2-3 человек. Все эти игроки должны контролировать ситуацию внизу, попутно отстреливая врагов с болтов или калашей;
Остальные игроки должны отправиться к сбитому вертолёту и дождаться около него того момента, когда он потухнет, чтобы залутать все ящики (как правило, всего выпадает четыре вертолётных сундука);
Игроки внизу должны при этом обязательно потушить огонь вокруг. Потушить горящие ящики – невозможно. Можно лишь дождаться момента, когда они все перестанут гореть (этот процесс занимает 2-3 минуты);
Лутать сундуки следует обязательно через ПКМ (правую кнопку мыши). Почему? Таким образом, застаканные патроны вместе с ракетами остаются в одном слоте, чего нельзя сказать об обычным способе лутания;
И будьте внимательными. Звуки взрывов и вообще вся перестрелка с вертолётом будут раздаваться на весь сервер, поэтому многие игроки придут в надежде забрать лут. Они могут выскочить из-за камней, кустов и т.п.
Типы данных
Пока что мы видели, что значения переменных задаются либо с помощью фраз (называемых строками), либо целых чисел. Эти переменные представляют собой различные типы данных, которые обозначают, какой вид имеют содержащиеся в них значения и какие операции они выполняют.
В Rust имеется такая функциональная особенность, как определение типа. Она позволяет компилятору предположить, какой тип данных должен быть у той или иной переменной, даже в отсутствие четкого указания. Так экономится время при написании объявлений переменных с очевидными типами, например для строки .
Указав между именем переменной и ее значением , мы явно определим тип для этой переменной.
В этом случае наш пример с объявлением будет переписан следующим образом:
let my_name = "Ryan"; // с явно определенным типомlet my_name: &str = "Ryan"; // с явно определенным типом
Явная типизация позволяет соответствующим образом определять тип переменной и избегать ошибок в тех случаях, когда тип переменной неочевиден. Rust сделает наиболее правильное с его точки зрения предположение, но это может привести к неожиданному поведению.
Допустим, имеется переменная , которая записывает ответ пользователя в форму.
let answer = "true";
Rust неявно определит строковый тип для этой переменной, так как она приводится в кавычках. Тогда как переменная наверняка булева, что подразумевает выбор между двумя вариантами: и .
Во избежание недопонимания со стороны других разработчиков и для недопущения синтаксической ошибки поменяем объявление следующим образом:
let answer: bool = true;
Основные типы на Rust:
- Integer: целочисленный (целые числа).
- Float: числа с плавающей запятой (с десятичными знаками).
- Boolean: логический (булев) с выбором между двумя вариантами ( или ).
- String: строковый (набор символов, заключенных в кавычки).
- Char: скалярное значение Юникод, представляющее конкретный символ.
- Never: тип без значения (обозначается как ).
Основные общие команды
Это небольшой список команд, который не требует особых прав. Представленные команды могут быть использованы любыми игроками.
Команда | Тип | Значение по умолчанию | Описание |
---|---|---|---|
client.connect connect | C | Команда для подключения игрового клиента к серверу. Обязательно указывается IP-адрес и порт сервера. | |
client.disconnect disconnect | C | Команда для отключения клиента от сервера. | |
chat.say | C | Выводит сообщение в чат. | |
clperf global.clperf perf global.perf | C | Выводит данные о производительности клиента. | |
findglobal.find | C, S | Показывает список всех доступных консольных команд и их описание. Имейте в виду, некоторые из них имеют администраторский статус, поэтому вам будут недоступны. | |
quit global.quit | C | Закрывает клиент игры. | |
sleep global.sleep | C | Кладёт игрового персонажа спать. | |
wakeup global.wakeup | C | Команда поможет игроку проснуться. |
По каким причинам нельзя изменить пол и расу моего персонажа?
Короче говоря, потому что это не приоритет изменить пол персонажа. Rust нацелен на обеспечение превосходного опыта выживания, который уже включает в себя бесконечное количество аспектов при работе в многопользовательском открытом мире. Это означает массу работы для команды разработчиков., который будет только увеличиваться за счет добавления параметров настройки.
Кроме того, в отличие от материальных аспектов, таких как поиск ресурсов, исследование карты и взаимодействие между игроками, внешний вид аватара не играет практической роли, это просто эстетическая особенность; поэтому очевидно, что это не главный аспект для работы Rust.
Будь лучшим с этими советы по игре Rust
С другой стороны, это увеличивает реалистичность игры, сохраняя случайный выбор аспекта, придавая каждому персонажу уникальную и неповторимую индивидуальность которым вы не могли владеть с ограниченными возможностями интерфейса настройки внешнего вида. Таким образом, эта функция улучшает качество игры, а не снижает ее.
В Rust нет бардака с библиотеками
У С++ всегда было две проблемы: недостаточная квалификация разработчиков и отсутствие нормальных пакетных менеджеров.
Раньше приходилось гуглить, копировать и компилировать исходники библиотек — та ещё головная боль. Бывало, найдёшь исходники, а компилятор не подходит, потому что он слишком старый, хедеры протухшие или версии зависимостей не совпадают. Тогда вместо готового решения придумывали своё — и это своё всегда заканчивалось кучей багов.
Изображение: Public Domain
Например, я видел реализации std::optional, которые не вызывают деструктор, даже если тип нетривиально деструктурируемый. Тогда как стандартная реализация — это куча boilerplate-кода, который даже командой из трёх-четырёх человек невозможно отладить.
Получается полный бардак. Часть кода покрывают тестами, она кое-как работает, а когда начинаешь детально тестировать — тут дедлок, там use-after-free и так далее. В Rust эти заботы можно частично переложить на плечи компилятора, но с ним иногда приходится бороться: богатая система типов требует более педантичной работы.
У Rust настоящая zero-cost abstraction
Помимо Rust, я присматривался и к другим языкам. Три года назад, когда впервые сменил работу, думал погрузиться в светлый мир JVM и написать что-нибудь на Kotlin. Но языки вроде Scala, Java и Kotlin можно применять далеко не везде. Виртуальные машины создают дополнительную нагрузку и для встраиваемого ПО в микрокомпьютерах не подходят. В таких системах пишут на чистом С, С++ или совсем страшных штуках вроде MISRA C.
У Rust, скомпилированного в native, нет дополнительного рантайма. RAII, деструкторы, конструкторы как в «плюсах». Только у Rust линейные типы и zero-cost с ними настоящий, а у C++ — нетривиальный деструктор у типа, и хоть убейтесь, но не получится передать его значение через регистры.
Ещё есть Zig — он очень похож на Rust. Там, например, тоже есть проверка lifetime, но организована она иначе, и то, как это сделано в Rust, мне нравится больше. Других языков с проверкой lifetime я не знаю, а в языках со сборщиками мусора она не нужна: если есть ссылка на объект, значит, он точно живой.
В Go механизм похожий, но там есть сборщик мусора. Мне предлагали перейти на него четыре года назад. Я попробовал, и синтаксис меня рассмешил. Стоит автоформатеру неправильно перенести строки, и программа не скомпилируется. А всё из-за неявной расстановки точек с запятой.