ДЛЯ НОВИЧКОВНЕ ДЛЯ НОВИЧКОВНЕ ОБЯЗАТЕЛЬНОВ РАЗРАБОТКЕ
Разработчику
Архитектору
Чек-лист самопроверки
- Что такое Rust и для каких задач он предназначен?
- Какие три главные цели Rust: безопасность, скорость, параллелизм?
- Что такое Cargo и зачем он нужен?
- Как создать новый проект с помощью
cargo new?
- Что такое крейт (crate) и какие виды бывают (binary, library)?
- Какие примитивные типы данных есть в Rust (
i32, f64, bool, char, str)?
- В чём разница между
String и &str?
- Как объявляются переменные и почему они неизменяемы по умолчанию?
- Что такое владение (ownership) и какие три правила оно включает?
- Что происходит при передаче значения в функцию — копирование или перемещение?
- Какие типы реализуют трейт
Copy?
- Что такое заимствование (
&T, &mut T)?
- Какие правила заимствования существуют?
- Что такое время жизни (
'a) и зачем оно нужно?
- Как аннотировать время жизни в функциях?
- Что такое структуры (
struct) и как их объявлять?
- Как реализуются методы у структур (
impl)?
- Что такое перечисления (
enum) и как они используются?
- Как работает сопоставление с образцом (
match)?
- Почему
match должен быть исчерпывающим?
- Что такое
Option и как он заменяет null?
- Что такое
Result и как он используется для обработки ошибок?
- Как работают операторы
? и unwrap()?
- Что такое трейты (traits) и зачем они нужны?
- Как реализовать трейт для типа?
- Что такое обобщения (
generics) и как они записываются?
- Как ограничить обобщённые типы с помощью трейтов (
where)?
- Что такое макросы и чем они отличаются от функций?
- Как использовать макросы (
println!, vec!)?
- Как определить собственный макрос (
macro_rules!)?
- Как работают коллекции (
Vec, HashMap, HashSet)?
- Как итерироваться по коллекциям (
iter(), into_iter(), iter_mut())?
- Что такое замыкания (
|x| x + 1) и как они захватывают переменные?
- Какие есть способы захвата в замыканиях (
Fn, FnMut, FnOnce)?
- Как работает обработка ошибок без исключений?
- Что такое паника (
panic!) и когда её использовать?
- Как писать unit-тесты и интеграционные тесты?
- Как запустить тесты с помощью Cargo?
- Что такое асинхронность в Rust (
async fn, .await)?
- Какие асинхронные среды выполнения существуют (tokio, async-std)?
- Как работает работа с файлами (
std::fs, File::open)?
- Как отправлять HTTP-запросы (reqwest, hyper)?
- Как сериализовать данные (serde, serde_json)?
- Что такое unsafe-блок и когда его можно использовать?
- Какие гарантии даёт Rust даже в
unsafe-коде?
- Как кросскомпилировать Rust-приложение под другую платформу?
- Как работает документация через
/// и cargo doc?
- Что такое модули (
mod) и как организована видимость (pub)?
- Как использовать внешние зависимости из crates.io?
- Какие инструменты входят в Rust Toolchain (rustc, cargo, rustfmt, clippy, rust-analyzer)?