На каком движке rust 2021

Обновлено: 07.07.2024

Сочетание зомби, создания предметов и выживания популярно далеко не первый год. У Rust, «тезки» одной из популярных сетевых карт для Call of Duty: Modern Warfare 2, есть сразу несколько источников вдохновения — помимо очевидной DayZ, это чуть менее явные Minecraft и S.T.A.L.K.E.R. Rust позаимствовала по несколько кусочков у каждой из трех культовых игр.

Из DayZ сюда пришли паранойя, буйные мертвецы и охота на животных, из Minecraft — строительство и создание предметов, необходимых для выживания в глуши, а также возможность отстраивать персональную крепость с колючими заборами. У серии STALKER, в свою очередь, позаимствованы радиация, вечная осень, романтика спальных мешков и встреч у костра. Только водки для постядерного антуража не хватает, но зато здесь можно отведать консервированных бобов, тунца из банки или куриной грудки, которую придется лично добыть с трупа забитой свиньи. Разработчики так нежно любят шутку про то, как в Rust из свинины получается курятина, что даже посвятили ей одну из коллекционных «стимовских» карточек игры.

Rust

При всех заимствованиях Rust — самодостаточная игра со своим узнаваемым обликом. Симулятор выживания скрещен с классическим deathmatch. Ареной для драк служит большой остров, созданный разработчиками. Каждый игрок, впервые попавший на новый для себя сервер, начинает голым аборигеном. В руках — только крупный булыжник, которым можно добывать древесину, стуча по деревьям, и другие ценные материалы, дробя камни.

Камень служит инструментом, оружием и вашим единственным другом. Булыжником можно попытаться кого-нибудь пристукнуть, но штука это медлительная, и убить ею можно лишь спящих персонажей да беззащитных оленей и свинок. Против движущейся и агрессивной цели булыжник слабоват. Именно поэтому любой выживающий просто обязан собрать себе оружие получше — например, каменный топор и лук, — а затем возвести хибару и организовать в ней спальный мешок, сундук и костер для жарки мяса. С первых же секунд появления на сервере все остальные игроки будут мешать комфортному развитию — особенно неприятно встретиться с теми, кто уже сделал себе огнестрельное оружие и выплавил для него патроны.

В особой цене здесь металлические детали, из которых собираются самые дорогие предметы: от амбарных замков и железных дверей до винтовки М4. По качеству предметы можно условно разделить на деревянные, каменные и железные. Материалы добываются просто: древесину можно собрать со специальных поленниц или рубя деревья, камни отламываются от больших валунов, а металл придется плавить в печи, расходуя низкокачественное, сваренное на коленке топливо.

Rust

Основная задача игрока — выжить любой ценой, поддерживая на приемлемом уровне три ключевых параметра: здоровье, сытость и дозу полученной радиации. Здоровье соответствует «живучести» героя и теряется от выстрелов, укусов, ударов и падений даже с небольшой высоты. С сытостью чуть интереснее. Показатель неумолимо падает со временем, но в комфортных условиях (например, у разведенного костра) снижается медленно, а холодной ночью или во время активного бега от врагов — значительно быстрее. В игре встречаются радиационные зоны, в которых опасно задерживаться надолго. От радиации взгляд мутнеет, изображение расплывается на пиксели, а счетчик Гейгера шуршит, указывая на смертельную опасность и рост лучевой дозы в организме.

Но самую большую опасность представляют другие игроки. Эти негодяи обожают издеваться над новичками — просто потому, что способов полно. В Rust можно запереть игрока в его же жилище, заставить его раздеться и бегать голышом, сверкая причинным местом, или же посадить на специальную диету из сырого мяса. Апогей веселья показан в ролике, посвященном созданию братства Penis Brotherhood. И именно это привлекает множество игроков — море возможностей для глумления над остальными и так называемого «грифинга». В этом смысле Rust даст фору и DayZ, и Dota 2, и другим «неприветливым» играм.

Выживать в Rust считается немодным. Игроки предпочитают поскорее разжиться материалами для изготовления взрывчатки и огнестрельного оружия, а затем, сбившись в банду, терроризировать остальное население сервера. Даже на официальных серверах администрация смотрит на такие бандформирования сквозь пальцы, поэтому начинающим игрокам приходится или заискивать перед ОПГ с надеждой попасть в «бригаду», или прятаться по горам и окрестным лесам в надежде, что постоянное сафари на аборигенов обойдет их стороной. Вернее, даст время на то, чтобы сделать допотопные средства самообороны.

На самых популярных серверах играет по 150—170 игроков, и зачастую там творится натуральный беспредел — ни дать ни взять, «смертельный матч» ветеранов с автоматическими дробовиками и MP5 против тех, кто только-только собрал каменный топор и надеялся достроить стены в шалаше. С поведением игроков сложились реальные проблемы, поэтому играть в удовольствие проблематично. Выживать приходится в условиях вечных издевок, насмешек и постоянного риска потерять за секунду все, что копил сутками.

Rust

Первая смерть. Начало игры, официальный сервер. Через две минуты после старта отошел от компьютера ответить на телефонный звонок. Персонажа оставил на месте, под деревом. Паузы нет. Возвращаюсь и обнаруживаю, что его убил персонаж по имени SisyastayaTvar.

Урок №1: не оставляйте героя без присмотра!

Rust

Вторая смерть. Вышел на охоту за хряком. Долго бегал за ним, пока не раздались выстрелы. Пришлось прятаться за ближайшим амбаром. Из ниоткуда выскочил волк и загрыз меня в два укуса.

Урок №2: в случае опасности не стойте на месте!

Третья смерть. Нашел огромное блочное общежитие. Запрыгнул в жилище без крыши, обокрал спящего хозяина, расправился с ним, но выйти из комнаты не смог — дверь и стены сломать было нечем. Полчаса ждал голодной смерти, но тут в жилище вломился еще один мерзавец и убил меня выстрелом в голову.

Урок №3: не лезьте туда, откуда не сможете выбраться!

Rust

Четвертая смерть. Столкнулся с голым человеком, вооруженным железным топором. Он меня ударил, началось сильное кровотечение. Перевязать было нечем. Попытался скрыться от него в радиоактивной зоне. Человек переключился на лук и добил меня метким выстрелом.

Урок №4: далеко не все сторонятся радиоактивных зон!

Пятая смерть. Ушел в горы и построил там лачугу. В знак протеста против охоты на начинающих игроков (на местном жаргоне — «кепки») написал послание в общий чат и обрек себя на голодовку. На сервере было людно, но в горы никто не пришел. Голодовка длилась много часов и закончилась мучительной смертью.

Урок №5: если хотите выразить свою позицию, поищите лучше чертеж дробовика.

Шестая смерть. Приютил ночью около костра двух аборигенов. Поделился с одним из них мясом. Он отблагодарил в голосовом чате: «Братиш, спасибо за угощение!» Погасил костер. Оба босяка, включая накормленного, стали гоняться за мной и в итоге забили камнями насмерть.

Урок №6: даже если помочь кому-то выжить, нет гарантий, что он станет с вами дружить.

Rust

Выглядит Rust до изумления неказисто, потому что создается на движке Unity и в основном использует стандартные библиотечные модели и текстуры. Но, несмотря на это, Rust для Гарри Ньюмена — золотая жила. Игра пользуется огромным спросом в Steam и в своей нише уступает по популярности только DayZ. Широкие возможности по мастерению всего и вся позволяют создать массу интересных штук: от кирки и отмычки до фонарика, гранат F1 и противорадиационных таблеток. И охотиться за другими обладателями мощной экипировки, нажитой тяжким трудом, — особое удовольствие.

Мы рады объявить третью редакцию языка Rust — Rust 2021, которая выйдет в октябре. Rust 2021 содержит несколько небольших изменений, которые, тем не менее, значительно улучшат удобство использования Rust.

Что такое Редакция?

Релиз Rust 1.0 установил "стабильность без застоя" как основное правило Rust. Начиная с релиза 1.0, это правило звучало так: выпустив функцию в стабильной версии, мы обязуемся поддерживать её во всех будущих выпусках.

Однако есть случаи, когда возможность вносить небольшие изменения в язык бывает полезной — даже если у них нет обратной совместимости. Самый очевидный пример — введение нового ключевого слова, которое делает недействительными переменные с тем же именем. Например, в первой версии Rust не было ключевых слов async и await . Внезапное изменение этих слов на ключевые слова в более поздних версиях привело бы к тому, что, например код let async = 1; перестал работать.

Редакции — механизм, который мы используем для решения этой проблемы. Когда мы хотим выпустить функцию без обратной совместимости, мы делаем её частью новой редакции Rust. Редакции опциональны и должны прописываться явно, поэтому существующие пакеты не видят эти изменения, пока явно не перейдут на новую версию. Это означает, что даже последняя версия Rust по-прежнему не будет рассматривать async как ключевое слово, если не будет выбрана версия 2018 или более поздняя. Этот выбор делается для каждого пакета как части Cargo.toml . Новые пакеты, созданные cargo new , всегда настроены на использование последней стабильной редакции.

Редакции не разделяют экосистему

Самое важное правило для редакций: пакеты одной редакции должны бесшовно взаимодействовать с пакетами другой. Это гарантирует, что миграция на новую редакцию будет частной для одного пакета и не затронет другие.

Требование функциональной совместимости подразумевает ограничения на типы изменений, которые мы можем внести в редакцию. В целом изменения, которые происходят в редакции, имеют тенденцию быть "поверхностными". Весь код Rust, независимо от редакции, компилируется в одно и то же внутреннее представление в компиляторе.

Миграция редакций проста и в значительной степени автоматизирована

Автоматические миграции не всегда идеальны: в некоторых критических случаях требуются и ручные изменения. Инструменты изо всех сил пытаются избежать изменений семантики, которые могут повлиять на правильность или производительность кода.

В дополнение к инструментам мы также поддерживаем руководство по миграции, в котором описаны произошедшие в редакции изменения. В этом руководстве описаны все изменения, а также даны ссылки, где о них можно узнать больше. Кроме того, оно охватывает все важные детали, которые нужно иметь в виду при миграции. Таким образом, руководство служит как обзором редакции, так и справочником по быстрому устранению неполадок, которые могут возникнуть при использовании автоматизированных инструментов.

Какие изменения запланированы в Rust 2021?

За последние несколько месяцев рабочая группа Rust 2021 рассмотрела ряд предложений, что именно включить в новую редакцию. Мы рады объявить окончательный список изменений. Чтобы попасть в этот список, каждая функция должна соответствовать двум критериям. Во-первых, она должна быть одобрена соответствующей командой(ами) Rust. Во-вторых, для её реализации должно быть достаточно времени, чтобы мы могли быть уверены в том, что все этапы будут завершены вовремя.

Дополнения к прелюдии

Прелюдия стандартной библиотеки — это модуль, содержащий всё, что автоматически импортируется в каждый модуль. Она содержит часто используемые элементы, такие как Option , Vec , drop и Clone .

Компилятор Rust отдаёт приоритет любым элементам, импортированным вручную, перед элементами из прелюдии. Так мы уверены, что дополнения к прелюдии не нарушают какой-либо существующий код. Например, если у вас есть пакет или модуль с именем example , содержащий pub struct Option; , то use example::*; заставит Option однозначно ссылаться на example не из стандартной библиотеки.

Однако добавление типажа к прелюдии может незаметно сломать существующий код. Вызов x.try_into() с использованием MyTryInto может стать неоднозначным и не скомпилироваться, если TryInto из std также импортирован, поскольку он предоставляет метод с тем же именем. По этой причине мы пока не добавили TryInto в прелюдию — потому что много кода может сломаться.

В качестве решения Rust 2021 будет использовать новую прелюдию. Она идентична текущей, за исключением трёх новых дополнений:

Распознаватель функций Cargo по умолчанию

Начиная с Rust 1.51.0, Cargo поддерживает новый распознаватель функций который можно активировать с помощью resolver = "2" в Cargo.toml .

В Rust 2021 и всех дальнейших выпусках это будет значением по умолчанию. То есть запись edition = "2021" в Cargo.toml будет означать resolver = "2" .

Новый распознаватель функций больше не объединяет все запрошенные функции для пакетов, от которых есть несколько зависимостей. Подробности смотрите в анонсе Rust 1.51.

IntoIterator для массивов

До Rust 1.53 только ссылки на массивы реализовывали IntoIterator . Иными словами, вы могли выполнять итерацию по &[1, 2, 3] и &mut [1, 2, 3] , но не по [1, 2, 3] напрямую.

Это давняя проблема, но решение не такое простое, как кажется. Просто добавление реализации типажа нарушит существующий код. Сейчас array.into_iter() компилируется, потому что он неявно вызывает (&array).into_iter() из-за особенностей синтаксиса вызова метода. Добавление реализации типажа изменит смысл.

Обычно мы классифицируем этот тип изменений (добавление реализации типажа) как "незначительный" и приемлемый. Но в этом случае оно может сломать слишком много кода.

Много раз предлагалось "реализовать IntoIterator только для массивов в Rust 2021". Однако это попросту невозможно: у вас не может быть реализации типажа в одной редакции и не быть в другой, поскольку редакции могут быть смешанными.

Вместо этого мы решили добавить реализацию типажа во все редакции, начиная с Rust 1.53.0. В этом нам помог небольшой приём, чтобы избежать значительных изменений вплоть до Rust 2021. В коде Rust 2015 и 2018 компилятор по-прежнему будет преобразовывать array.into_iter() в (&array).into_iter() , будто реализации типажа не существует. Это относится только к синтаксису вызова метода .into_iter() и не влияет на другие синтаксисы, такие как for e in [1, 2, 3] , iter.zip([1, 2, 3]) . Они начнут работать во всех редакциях.

Нам жаль, что такое решение потребовало небольшой хитрости во избежание поломки, но мы очень довольны тем, как оно сводит разницу между редакциями к абсолютному минимуму. Поскольку этот хак присутствует только в старых версиях, в новой редакции нет никаких дополнительных сложностей.

Непересекающийся захват в замыканиях

Замыкания автоматически захватывают все, на что вы ссылаетесь из их тела. Например, || a + 1 автоматически захватывает ссылку на a из окружающего контекста.

В настоящее время это относится ко всем структурам, даже если используется только одно поле. К примеру, || a.x + 1 заимствует ссылку на a а не только на a.x . В некоторых ситуациях это будет проблемой. Когда поле структуры уже заимствовано (изменяемо) или перемещено из неё, другие поля больше не могут использоваться в замыкании, так как замыкание будет пытаться захватить всю структуру, которая больше не доступна.

Начиная с Rust 2021, замыкания будут захватывать только те поля, которые они используют. Приведённый выше пример отлично скомпилируется в Rust 2021.

Это поведение активируется только в новой редакции, поскольку оно может изменить порядок, в котором удаляются поля. Что же касается всех изменений редакций — для них доступна автоматическая миграция. Она обновит ваши замыкания, для которых это будет необходимо. Она может вставлять let _ = &a; внутрь замыкания, чтобы захватить всю структуру, как раньше.

Согласованность макросов паники

panic!() — один из самых известных макросов Rust. Однако в нем есть несколько тонких моментов, которые мы не можем просто взять и изменить — снова из-за обратной совместимости.

Макрос panic!() использует форматирование строки только тогда, когда вызывается с более чем одним аргументом. С одним аргументом он на него просто не смотрит.

(Он даже принимает нестроковые аргументы, такие как panic!(123) , что, впрочем, редко бывает полезно).

Особенно это будет проблемой после стабилизации неявных аргументов форматной строки. Эта функция сделает println!("hello ") сокращением для println!("hello <>", name) . Однако panic!("hello ") не будет работать должным образом, поскольку panic!() не обрабатывает единственный аргумент как строку.

Чтобы выйти из этой запутанной ситуации, в Rust 2021 есть более последовательный макрос — panic!() . Новый panic!() больше не принимает произвольные выражения в качестве единственного аргумента. Он — как и println!() — всегда обрабатывает первый аргумент как строку. Поскольку panic!() больше не будет принимать произвольные аргументы, panic_any() будет единственным способом вызвать панику с чем-то кроме форматированной строки.

Зарезервированный синтаксис

Это критическое изменение, поскольку в настоящее время макросы могут принимать hello"world" , которое они будут видеть как два отдельных токена: hello и "world" . Хотя исправление (автоматическое) очень простое — просто вставьте пробел: hello "world" .

Помимо превращения в ошибку токенизации, RFC пока не придаёт значения никакому префиксу. Присвоение значения конкретным префиксам остаётся на усмотрение будущих предложений, которые — благодаря резервированию этих префиксов сейчас — не повлекут за собой критических изменений.

Вот некоторые новые префиксы, которые вы увидите в будущем:

Повышение двух предупреждений до серьёзных ошибок

Две существующие статические проверки станут серьёзными ошибками в Rust 2021. В старых версиях они останутся предупреждениями.

  • bare-trait-objects — использование ключевого слова dyn для идентификации типаж-объектов станет обязательным в Rust 2021.
  • ellipsis-inclusive-range-patterns — устаревший синтаксис . для включающих диапазонов больше не поддерживается в Rust 2021. Он был заменён на ..= , что согласуется с выражениями.

Шаблоны "или" в macro_rules

Начиная с Rust 1.53.0 паттерны расширены для поддержки | , которые могут быть вложены в шаблоне где угодно. Это позволяет писать Some(1 | 2) вместо Some(1) | Some(2) . Поскольку раньше это было просто недопустимо, это не критическое изменение.

Однако это изменение также влияет на макросы macro_rules . Такие макросы могут принимать шаблоны с использованием спецификатора фрагмента :pat . В настоящее время :pat не соответствует | , поскольку до Rust 1.53 не все шаблоны (на всех вложенных уровнях) могли содержать | . Макросы, которые принимают шаблоны типа A | B , такие как matches!() , используют что-то вроде $($_:pat)|+ . Поскольку мы не хотим нарушать макросы, которые уже существуют, мы не изменили значение :pat в Rust 1.53.0, чтобы включить | .

Вместо этого мы внесём это изменение как часть Rust 2021. В новой редакции спецификатор фрагмента :pat будет соответствовать A | B

Поскольку бывают случаи, когда кто-то всё ещё желает сопоставить один вариант шаблона без | , мы добавили спецификатор фрагмента :pat_param для сохранения старого поведения. Название относится к его основному варианту использования: шаблон в параметре замыкания.

Что будет дальше?

Мы планируем объединить и полностью протестировать эти изменения к сентябрю, чтобы убедиться в том, что редакция 2021 года войдёт в Rust версии 1.56.0. Затем Rust 1.56.0 будет находиться в стадии бета-тестирования в течение шести недель, после чего он будет выпущен как стабильный релиз 21 октября.

Однако обратите внимание, что Rust — это проект, движимый волонтёрами. Мы ставим личное благополучие каждого, кто работает над Rust, выше любых сроков и ожиданий, которые мы могли бы установить. Это может означать задержку выпуска версии, если это будет необходимо, или отказ от функции, которая оказывается слишком сложной для завершения к релизу.

Тем не менее, мы идём по графику, и многие сложные проблемы уже решены. Спасибо всем, кто внёс свой вклад в Rust 2021!

Очередного анонса новой редакции можно ожидать в июле. На этом этапе мы ожидаем, что все изменения и автоматические миграции будут реализованы и готовы к общедоступному тестированию.

Мы будем публиковать более подробную информацию о процессе и об отклонённых предложениях в блоге "Inside Rust".

Если вы не можете ждать, то многие фичи уже доступны в Nightly, просто добавьте флаги -Zunstable-options --edition=2021 .

От переводчиков

С любыми вопросами по языку Rust вам смогут помочь в русскоязычном Телеграм-чате или же в аналогичном чате для новичковых вопросов. Если у вас есть вопросы по переводам или хотите помогать с ними, то обращайтесь в чат переводчиков.
Также можете поддержать нас на OpenCollective.

Данную статью совместными усилиями перевели fan-tom, blandger, Belanchuk, TelegaOvoshey и andreevlex.

Чего не стоит делать в Rust, если начали играть в 2021 году

Rust – это необычный симулятор выживания, который привлек к себе внимание огромное количество геймеров. При этом новички часто думают, что в этом проекте нет ничего сложного, и уже с самого начала делают все то, что и в других играх с элементами выживания.

К сожалению, Rust не отличается особым гостеприимством по отношению к новым игрокам, поэтому стартовать бывает довольно сложно. Перед вами подборка главных ошибок, которые делают новички, решившие поиграть в Rust в 2021 году.

Одному будет тяжело

Чего не стоит делать в Rust, если начали играть в 2021 году

Rust – далеко не самая лучшая многопользовательская игра для одного человека. Здесь есть несколько этапов развития, и добраться до каждого из них можно только за счет продолжительного гринда. Если играть в команде со своими друзьями, то вы гораздо быстрее достигните цели, чем в одиночку.

Также стоит отметить, что 99% других игроков не дадут вам мирно существовать в виртуальном мире игры. Вам постоянно придется отбиваться от обезумивших «дикарей», которые захотят отобрать ваши вещи и ресурсы. Естественно, ни у одного новичка не получится защитить себя от оравы более опытных игроков, поэтому лучше изначально залетать в Rust хотя бы с парой друзей.

Никому нельзя верить

Чего не стоит делать в Rust, если начали играть в 2021 году

Этот пункт частично противоречит предыдущему, но при этом он еще более важен. Прежде всего вам стоит забыть о том, что взаимодействие с другими игроками в многопользовательских проектах – это норма. Rust вообще не та игра, где нужно объединяться с незнакомыми людьми, чтобы вместе получить больше лута или ресурсов. Здесь вы можете рассчитывать только на себя, и если начнете доверять первому встречному игроку, то очень скоро поймете, почему этого нельзя делать. Особенно это касается товарищей с хорошей экипировкой, которых вы встретите на своем пути.

Дело в том, что в Rust каждый играет сам за себя, а опытные игроки очень часто обманывают новичков самыми разными способами. Незнакомец, который предложит побегать с ним по виртуальному миру и при этом будет носить броню заметно лучше вашей, скорей всего грифер. Это такой игрок, который при первой же удобной возможности просто вас убьет и заберет все вещи. Так что, начиная играть в Rust, никому не доверяйте!

В гости на новогодних праздниках нынче ходят не только с контейнерами недоеденного оливье и настольными играми, но и ради дружеских посиделок у.

Курс юного строителя

Чего не стоит делать в Rust, если начали играть в 2021 году

Если вы вдруг не знали, то в Rust есть строительство, и здесь оно играет довольно важную роль. При этом данная механика имеет ряд особенностей, которые придется изучить в самом начале знакомства с игрой, иначе ваши архитектурные «шедевры» будут попросту разваливаться, а вы впустую потратите ценные ресурсы.

Прежде всего стоит отметить, что у каждого строительного блока есть мягкая и твердая сторона. Во время строительства блок всегда нужно устанавливать таким образом, чтобы твердая сторона находилась снаружи будущего здания. Если не соблюдать это правило и размещать материалы как попало, то вашу постройку сможет развалить первый попавшийся игрок, причем с помощью обычного топора или кирки. Согласитесь, будет не очень приятно наблюдать за тем, как несколько часов ваших трудов кто-то разбирает по кирпичикам за считаные минуты.

Все вещи в одном месте

Чего не стоит делать в Rust, если начали играть в 2021 году

Огромное количество игроков в Rust вообще не уделяют время крафту. Они считают, что гораздо проще украсть готовые предметы у других пользователей, чем стоять у станка и пытаться что-то сделать. Именно поэтому в этой игре противопоказано хранить все свои вещи в одном месте.

Ни в коем случае не размещайте абсолютно все запасы на единственной базе, да еще и в конкретном помещении. В таком случае после случайного налета кучки любителей халявы вы потеряете абсолютно все. Конечно, вряд ли у новичка хватит ресурсов, чтобы построить себе 4-5 домов и правильно распределить по ним ценные предметы, но хотя бы попробуйте сделать что-то подобное. Неплохим решением будет на территории одной базы построить несколько «нычек» и распределить по ним ресурсы и предметы.

Не забывайте про аптечки

Когда новички видят огромное количество доступных видов оружия в Rust, то они моментально забывают обо всем и начинают крафтить себе стволы. Сделать приспособления для самообороны это, конечно, хорошее решение, но не стоит на этом зацикливаться. Вы должны помнить, что Rust – прежде всего «выживалка» и здесь более важно иметь под рукой как можно больше аптечек, а не пушек.

Если вы решите, что аптечки вам не нужны и со своим крутым автоматом вы сможете одолеть кого угодно, то Rust очень быстро вас разочарует. Здесь очень просто погибнуть, и иногда вы даже не будете понимать, почему это вообще произошло. В результате игрок, у которого было полно аптечек, просто завалит вас рандомной палкой и заберет тот самый крутой автомат.

Многие из нас получают большое удовольствие, пробуя себя в играх жанра Survival – играх на выживание. Мы собрали лучшее: самое напряженное.

Поставьте себе домофон

Чего не стоит делать в Rust, если начали играть в 2021 году

В Rust вы можете защитить свой дом с помощью обычного замка, который закрывается на ключ или использовать более продвинутый – кодовый. Если речь идет о вашем жилище и там хранится куча всякого добра, то замок с ключом – не самая лучшая идея. Вас могут легко убить, забрать себе ключ и потом без проблем обшарить ваши владения в надежде найти что-то ценное. А вот с кодовым замком ваши вещи точно будете в безопасности.

Если же вы не можете сделать кодовый замок или уже поставили везде обычные двери, то не делайте ключ. Пускай доступ к зданию будет только у вас. Отсутствие ключа гарантировано защитит ваши владения, даже если вы внезапно погибнете.

Не используйте факел

Чего не стоит делать в Rust, если начали играть в 2021 году

Каждая игровая сессия в Rust начинается с того, что вы практически голый оказываетесь на каком-то острове без еды и воды. Вам нужно как можно быстрее раздобыть себе пищу, одежду и какой-то ночлег. Избавиться от чувства абсолютной беспомощности частично помогает факел, но я настоятельно не рекомендую зажигать его в первые минуты игры.

Дело в том, что свет от факела моментально привлечет к вам внимание других игроков. Часть из них будет гриферами, которые быстро прибегут на ваш «сигнал» и просто убьют. На этом ваш многообещающий забег в Rust просто закончится и придется начинать все сначала. Первое время лучше бегайте без факела и пытайтесь ориентироваться на карте с помощью своего зрения.

Вы всегда в опасности

Чего не стоит делать в Rust, если начали играть в 2021 году

Многие новички ошибочно думают, что после того, как они построят себе укрытие и обзаведутся хоть какой-то экипировкой, можно просто расслабиться и наслаждаться игровым процессом Rust. Этот проект не об этом, вы всегда будете под прицелом у других игроков! Причем если у вас вдруг все слишком хорошо и на это обратят внимание остальные пользователи игровой сессии, то очень скоро вас ждет набег незваных гостей.

В Rust невозможно комфортно играть, потому что здесь игроки постоянно борются за свое «место под Солнцем». Проект построен на прерывной конкуренции, и даже если у вас есть крутое оружие, с которым вы засядете в своем укрепленном форте, то это не значит, что через пару часов его не начнет штурмовать пачка игроков, которой не удалось обзавестись тем, что есть у вас. Никогда не расслабляйтесь!

Перестрелка – не самая лучшая идея

Чего не стоит делать в Rust, если начали играть в 2021 году

Некоторые новички в Rust почему-то считают, что это экшен-шутер, в котором прямо-таки необходимо ввязываться в перестрелки и каждую минуту показывать, кто здесь круче. На самом деле проект про выживание, и я вам гарантирую, что ваша беготня с автоматом закончится очень быстро, если вы вдруг решите, что можете держать всю карту в страхе.

В Rust полно игроков и, как говорится, «на каждого бойца найдется боец покруче». Эта фраза максимально точно характеризирует игровой процесс, потому что, даже если вам удастся настрелять десяток новичков, то в какой-то момент за вашей головой придут более опытные игроки и вы потеряете все. Используйте оружие только для самообороны и тогда точно сможете прожить в Rust гораздо дольше!

Топ 8 - Кооперативные шутеры на 2-4 игроков. Небанальная подборка Собрали самые достойные кооперативные шутеры из тех, что не наделали шуму и прошли незаметно для большинства геймеров.

Вот такие советы мы решили дать новичкам, которые только надумали залететь в Rust! Делая все эти вещи, вы гарантировано проживете в виртуальном мире игры чуточку дольше и при этом гораздо лучше узнаете все тонкости проекта. Главное, не забывайте всегда быть начеку, здесь нет зоны комфорта.

Рабочая группа Rust 2021 Edition рада сообщить, что следующая редакция Rust — Rust 2021 — запланирована на этот год. Пока что формально описывающий её RFC остаётся открытым, но мы ожидаем, что в скором времени он будет принят. Планирование и подготовка уже начались, и мы идём по графику!

Если вам интересно, какие новшества появятся в Rust 2021 или когда эта редакция выйдет в стабильной версии, — читайте нашу статью!

Что входит в эту редакцию?

Конечный список нововведений, которые войдут в Rust 2021, ещё не определён до конца. В целом мы планируем, что выпуск Rust 2021 будет намного меньше, чем Rust 2018, по следующим причинам:

  • Ритм выпусков стал регулярным Это значит, что мы будем активно использовать плюсы "цепочечной" модели на уровне редакций Rust.
  • Редакция Rust 2018 выбилась из модели "минимального стресса" выпусков.
  • Сейчас просто нужно меньше фундаментальных изменений, чтобы язык продолжал развиваться.

Более подробно о развитии концепции редакций вы можете почитать в RFC.

Решение, войдёт ли та или иная функциональность в Rust 2021, является частью процесса RFC — поэтому список ожидаемых функций может и будет меняться. Это будет происходить до самого момента выпуска, но тем не менее, уже сейчас мы можем рассмотреть список функций, которые, скорее всего, в неё войдут.

Изменения в прелюдии

В то время как типы и свободные функции могут быть добавлены в прелюдию без привязки к редакции, с трейтами всё иначе. Добавление трейта в прелюдию может вызвать проблемы совместимости — например, вызов метода с именем, совпадающим с именем метода нового трейта в области видимости, может привести к двусмысленности.

Сейчас в редакцию Rust 2021 предложено включить следующие трейты:

RFC с этими изменениями можно найти тут. Обратите внимание, что RFC ещё не принят — состав новой прелюдии активно обсуждается.

Новые правила захвата

RFC 2229 предлагает, когда это возможно, захватывать замыканиями отдельные поля, а не всю структуру целиком. Этот RFC уже принят. В некоторых случаях такое изменение может заставить деструкторы запускаться в другом месте, нежели сейчас, — из-за чего оно должно быть привязано к редакции. Миграция анализаторов должна свести к минимум изменения в семантике уже существующего кода.

Новый распознаватель функциональности в Cargo по умолчанию

В Rust 2021 этот распознаватель будет включён по умолчанию, но его можно использовать и в старых версиях, просто выбрав вручную.

Прочие изменения

Другие предложенные изменения включают унификацию работы panic в std и core и обновление уровня некоторых проверок с предупреждений до ошибок.

Полный список обсуждаемых функций вы можете найти здесь.

Если вы знаете о функциях, которых нет в этом списке, но они всё ещё обсуждаются для включения в Rust 2021, — пожалуйста, дайте нам знать. Несмотря на то, что мы всегда рады слышать о дополнительных функциях, которые ещё не планируются для включения в Rust, у нас, скорее всего, не будет возможности их обсудить, пока редакция Rust 2021 не будет готова.

Примерный график

Итак, когда же мы планируем выпустить новую редакцию? Вот график основных этапов, к которому мы стремимся:

  • 1 апреля — все релевантные редакции RFC или приняты, или в хорошем состоянии (т. е. все основные вопросы решены, и принятие RFC произойдёт в ближайшие недели).
  • 1 мая — все нововведения, включённые в Rust 2021, находятся в Nightly с соответствующими feature-флагами.
  • 1 июня — все проверки добавлены в Nightly.
  • 1 сентября — редакция стабилизирована в Nightly.
  • 21 октября — редакция полностью стабилизирована.

По мере приближения к этим срокам мы будем сужать список предлагаемых изменений до тех, что будут продвигаться активнее.

Приглашаем к участию

Если вы хотите помочь в выпуске редакции Rust 2021 — пожалуйста, свяжитесь с нами. Помимо работы над функциональностью и планированием выпуска, будет ещё очень много других важных дел. Вот только часть того, что необходимо для успешного выпуска:

От переводчиков

С любыми вопросами по языку Rust вам смогут помочь в русскоязычном Телеграм-чате или же в аналогичном чате для новичковых вопросов. Если у вас есть вопросы по переводам или хотите помогать с ними, то обращайтесь в чат переводчиков.
Также можете поддержать нас на OpenCollective.

Данную статью совместными усилиями перевели blandger, TelegaOvoshey, funkill и andreevlex.

Читайте также: