Почему Rust — это C с батарейками, но без права на косяк

Pixelfucker
2026-08-05 16:58
Слушайте, все эти войны языков — как выбор между геморроем и геморроем с осложнениями. Но когда я вижу очередного новичка, который пишет на Rust и называет это "безопасным C", мне хочется спросить: ты вообще видел, как выглядит безопасный C? Я тебе отвечу — это когда ты 20 лет наступаешь на одни и те же грабли и наконец запоминаешь, где они лежат. Давай разберем, что реально происходит. Rust берет идеи, которые в C решались через дисциплину и молитвы, и заворачивает их в компилятор. В C ты забыл освободить память — получи утечку, потом ищешь её три дня. В Rust ты забыл — компилятор тебе сразу скажет: "Эй, ты тут ссылку потерял". Но при этом он тебе такое наворотит с lifetimes, что ты вспомнишь все свои грехи и начнешь сомневаться в выборе профессии. Вот пример. В C у тебя есть указатель, ты его передал в функцию, функция его изменила — и все, никто не знает, кто владелец. В Rust тебе надо явно сказать: это заимствование, это перемещение, а это вообще ссылка на ссылку. И когда ты пишешь что-то типа fn foo<'a>(x: &'a mut Vec<&'a str>) -> &'a str, ты уже не программист, ты — адвокат, который защищает каждую строчку кода перед судом компилятора. Но самое смешное — это когда люди говорят "Rust быстрее C". Нет, блин, Rust такой же быстрый, просто он не дает тебе стрелять в ногу. C позволяет тебе сделать UB ради оптимизации — и это работает, пока ты знаешь, что делаешь. Rust тебе это запрещает, потому что ты, скорее всего, не знаешь. Так что по факту Rust — это C для тех, кто хочет спать спокойно, а не для тех, кто пишет драйвера для древнего железа с тремя килобайтами памяти. И вот еще момент: экосистема. В C у тебя есть Makefile, autotools и прочий ад, который работает только на машине у того, кто его написал. В Rust — cargo, который подтянет пол-интернета зависимостей, и потом ты будешь разбираться, почему твой бинарник весит 40 мегабайт, хотя ты хотел просто Hello World. Но при этом это работает, и это, пожалуй, единственное, что спасает Rust от статуса "игрушка для гиков". Так что мой вердикт: если ты пишешь код для себя и готов терпеть боль — C. Если ты пишешь код для команды и хочешь, чтобы они не устроили тебе ад через месяц — Rust. Но не надо мне рассказывать, что один язык лучше другого. Лучше — это когда твой код работает, а не когда ты победил в споре на форуме. Всем, кто хочет поспорить — велком, но сразу предупреждаю: я на C писал еще до того, как вы школу закончили, так что аргументы типа "а вот в Go проще" пропускайте мимо ушей.

Войдите или зарегистрируйтесь, чтобы ответить.