Комментарии 6
https://doc.rust-lang.org/book/ch01-01-installation.html
https://doc.rust-lang.org/rust-by-example/
практика в написании простых программ, open source исходники и LLM-ка у которой можно попросить объяснить непонятный участок кода.
Примеры задач https://github.com/fallGamlet/simple-programming-tasks
можно еще захватить в первый обзор всю базу, помимо ветвлений, циклов, переменных, сразу match, Option/Some, почему, потомучто, чтобы написать 1 простую полную программу нужен будет доступ по индексам или по ключам, а это Option. Чтобы иногда было по-удобнее есть match.
простой кейс можно докрутить до структур и реализаций, попутно захватив модульность и подкачку в модуль по use crate.
ну и в расте есть разница оптимизаций, можно попутно докрутить кейс до cargo run --release, тут на любителя, получается база, тут и не арк и нет каналов.
сразу скажу на масштабе язык читаемее
получается самый первый простой модуль это Stack ну там действительно )
-- ниже это просто наблюдение
самое главное понять базу, личным техническим долгом лучше заниматься без подсказок, как будто не существует ИИ, потомучто после обьяснения внизу будет плашка кода(даже если не понятно, и даже если на решение задачи нужны месяцы), когда подтягивается личный технический долг, формируется базис по взаимодействию с языком необходимый
Однако одновременно для части данных может существовать только одно изменяемое заимствование, что обеспечивает эксклюзивный доступ и предотвращает скачки данных (одновременные модификации).
Обычно вместо скачек говорят о гонках, вспоминаются мне другие статьи. И вопрос - одновременно с чем? Подсказка - с неизменяемыми заимствованиями...
То, что не особо разбирающийся в теме копирайтер рекламирует курсы - это нормально, а что это так легко заметить, и не только по приведённому фрагменту - уже нет. Потому, что желание изучать Rust можно вызвать проще и честнее, хотя для этого и придётся отказаться от следования убогим западным образцам.
Один владелец за раз: В Rust у каждого фрагмента данных может быть только один владелец за раз.
Сейчас всякий побывавший ближе 10 метров от компа знает - в природе это не так. Многие даже знают про классический пример - связный список. И всё последующее воспринимают как голимую ложь, если повезёт - ложь западных маркетологов. А ведь можно сказать иначе - когда можно добиться, чтобы у данных был ровно один владелец, Rust обеспечивает много преимуществ... и далее по тексту. А когда нельзя, в Rust есть unsafe и Rust оказывается на том же уровне, что и другие языки. И множество способов эмулировать связный список через задницу.
Помимо этого, система владения Rust распространяется на параллелизм, способствуя разработке безопасных и эффективных параллельных приложений.
Мы на базаре Багдада в тот благословенный день, когда Мансур, любимый палач калифа Гаруна, в отъезде? Распространяется чтобы способствовать... К тому же, внимательный читатель уже заметил, что Rust заставляет прибегать к тому, что другие языки, будучи созданными с оглядкой на реальное железо, считают извращениями, ради безопасности многпоточности... которой нет или пока нет. Вспомнив классическую критику преждевременной оптимизации, такой читатель начинает, и уже не заканчивает, ржать над этим вашим Rust, причём с нотками презрения. И напрасно, поскольку оптимизацию всегда можно выполнить позже, а подогнать архитектуру под многопоточность - нет. Но это надо объяснять.
Мы рассмотрели основные понятия языка Rust
Вы чё, серьёзно? Нет слов.
Как по мне, продавать Rust надо иначе, не как язык системного программирования, не все пишут ОС реального времени, а как социальный феномен. На Rust переписано масса всего, от основных утилит Линукс до текстовых редакторов, и всё более-менее удачно. Люди хотят этим заниматься и у них получается. На Rust можно писать абсолютно всё - фронтенд, бэкенд, мобилки, кроссплатформу на все платформы, графические и консольные приложения, игры... и в этом смысле Rust уникален. Как по мне, следующим по широте охвата идёт Dart, в котором только что, вроде, толком не смотрел, появился 3D движок Fluorite и пока не доведенный до ума порт Bubbletea, а за ним уже всё остальное.
Остаётся объяснить, что понять что такое Rust не изучив его примерно полностью - невозможно. И народ на курсы запишется.
Из вашего комментария я понял про язык больше, чем из статьи.
Rust надо иначе, не как язык системного программирования, не все пишут ОС реального времени, а как социальный феномен
Как социальный феномен это сплошной open source и я вижу в этом больше минусов чем плюсов: мало прикладных библиотек, пусть даже и платных. А в C# их полно.
Rust отлично ложится на идеи Влашина (автор книги Domain Modelling Made Functional).
Сильные стороны Rust
Typestate Pattern (Конечные автоматы на типах). За счет move-семантики переход в новое состояние делает старое недоступным. В C# или F# старая переменная остается и может быть использована по ошибке. В Rust компилятор не даст сослаться на "потребленное" состояние.
Railway Oriented Programming (ROP). Тип Result и оператор ? делают ROP нативным. В C# для этого нужны тяжелые библиотеки (вроде CSharpFunctionalExtensions) с кучей лямбд. В Rust код выглядит как обычный линейный.
Make Invalid States Unrepresentable - MISU / Parse don't validate. Мощные enum (алгебраические типы данных) в связке с обязательным исчерпывающим match. Компилятор заставит обработать все бизнес-кейсы при добавлении нового варианта. С помощью Parse мы создаем надежные строительные блоки на входе, а с помощью MISU проектируем из них архитектуру так, чтобы детали нельзя было собрать неправильно. Ну и лично я от такого стиля получаю эстетическое удовольствие. Идеально сферическая гексагоналка даром!
RAII для доменных ресурсов. Трейт Drop закрывает транзакции, отпускает локи и рвет соединения детерминированно, без using и сборщика мусора.
Fearless Concurrency. Трейты-маркеры Send и Sync. Компилятор физически не даст передать непотокобезопасный объект в другой поток. То есть архитектурные паттерны вроде Actor Model или Producer-Consumer становятся безопасными "из коробки".
Из минусов
Нужно держать баланс между primitive obsession и type explosion. Если делать строгий тип на каждую микросущность, ядро утонет в бесконечном маппинге и распаковках значений. С непривычки можно уйти в крайности. И все же в C# попытка выжать максимум из MISU часто дает перегруз бойлерплейтом (даже с record), поэтому там приходится чаще идти на компромисс. В Rust и F# синтаксис позволяет зайти в строгую типизацию намного дальше без потери читаемости.
Первое знакомство с Rust