ядро языкаcore language

Язык RustThe Rust language

Ownership, borrowing, lifetimes, трейты, обобщённое программирование, обработка ошибок, конкурентность и unsafe — то, что делает Rust языком, а не просто ещё одной обёрткой над LLVM. 20 фич, каждая — отдельная страница; фичи с меткой "собеседование" — самые частые темы на технических интервью.Ownership, borrowing, lifetimes, traits, generic programming, error handling, concurrency, and unsafe — what makes Rust a language rather than just another LLVM wrapper. 20 features, each its own page; features tagged "interview" are the most common technical-interview topics.

Модель владенияThe ownership model

фундамент безопасности памятиthe foundation of memory safety

Типы и трейтыTypes and traits

полиморфизм без наследования классовpolymorphism without class inheritance
05

Structs & Enums

Алгебраические типы данных — enum как настоящий sum-тип, а не просто именованные константы.Algebraic data types — enum as a genuine sum type, not just named constants.

06
собеседованиеinterview

Traits

Интерфейсы Rust — общее поведение для разных типов, с default-методами и trait bounds вместо наследования.Rust's interfaces — shared behavior across types, with default methods and trait bounds instead of inheritance.

07
собеседованиеinterview

dyn Trait

Динамическая диспетчеризация через vtable — рантайм-полиморфизм, аналог виртуальных функций C++.Dynamic dispatch via a vtable — runtime polymorphism, the analogue of C++ virtual functions.

08
собеседованиеinterview

Generics

Мономорфизация на этапе компиляции — нулевая цена абстракции, аналог шаблонов C++.Compile-time monomorphization — zero-cost abstraction, the analogue of C++ templates.

09

Ассоциированные типыAssociated types

Type-level выход трейта — когда у типа-реализации ровно один "естественный" связанный тип, а не параметр.A trait's type-level output — when an implementing type has exactly one "natural" associated type rather than a parameter.

10

Const genericsConst generics

Значения (не только типы) как параметры дженериков — например, массив фиксированного размера [T; N].Values (not just types) as generic parameters — for example, a fixed-size array [T; N].

Управление потоком и ошибкиControl flow and errors

без исключений и без nullno exceptions, no null

Память и конкурентностьMemory and concurrency

разделяемое владение, async, потокобезопасность в типахshared ownership, async, thread-safety in types

Системный уровень и метапрограммированиеSystems level and metaprogramming

unsafe, макросы, модулиunsafe, macros, modules

порядок чтенияreading order

Ownership → Borrowing → Lifetimes — читать строго по порядку, это единая связка идей, каждая следующая опирается на предыдущую. Traits стоит читать до dyn Trait и до Generics — оба следующих раздела предполагают понимание трейтов как основы. Result/Option логично читать после Pattern matching — обработка ошибок в Rust целиком построена на деструктуризации через match.Ownership → Borrowing → Lifetimes — read strictly in order, this is one connected chain of ideas, each building on the previous one. Traits should be read before dyn Trait and before Generics — both following sections assume an understanding of traits as the foundation. Result/Option is naturally read after Pattern matching — Rust's error handling is built entirely on destructuring via match.

unsafe лучше читать в конце — он подразумевает уверенное понимание ownership/borrowing, чтобы осознанно решать, какие инварианты компилятор больше не проверяет за вас.unsafe is best read last — it assumes a confident understanding of ownership/borrowing, so you can consciously decide which invariants the compiler is no longer checking for you.