Rust — чек-лист
Чек-лист самопроверки
- Что такое 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-блок и когда его можно использовать?
- Чем
unsafeотличается от safe Rust и какие инварианты должен доказать автор? - Как кросскомпилировать Rust-приложение под другую платформу?
- Как работает документация через
///иcargo doc? - Что такое модули (
mod) и как организована видимость (pub)? - Как использовать внешние зависимости из crates.io?
- Какие инструменты входят в Rust Toolchain (rustc, cargo, rustfmt, clippy, rust-analyzer)?
Базовый разбор HTTP и HTTPS находится в отдельной статье — HTTP как основа веб-интеграций.