Я начал изучать программирование с 2005 года. За это время я использовал много языков в своей повседневной работе. C, Java, Ruby, JavaScript, Groovy, Scala.

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

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

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

Все это происходит из-за того, что компилятор просто берет на себя преобразование необработанного кода в исполняемый двоичный файл как единственную обязанность. Что, если компилятор остановит вас, когда обнаружит, что вы делаете что-то не так? Да, компилятор должен остановить вас, если во время компиляции будет обнаружено что-то неправильное, вместо того, чтобы отпустить его, и, наконец, программа выйдет из строя онлайн.

Например, все мы знаем, что обычный HashMap в Java/Scala, модифицированный многопоточностью, вызовет некоторые проблемы, но это неправильное использование происходит снова и снова и снова и снова приводит к катастрофе. В Rust такого не будет. Когда люди используют небезопасный для потоков HashMap в многопоточности, компилятор жалуется и останавливает вас, и даже больше, компилятор подскажет вам правильный путь. Команда Rust делает множество эффектов, чтобы исправить ошибку, и пытается дать несколько советов, как это сделать правильно.

С помощью компилятора Rust может гарантировать безопасность памяти и потокобезопасность, а также позволяет устранять многие классы ошибок во время компиляции.

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