tg-me.com/rust_lib/171
Last Update:
Шпаргалка по Rust
Основные понятия
- Переменные и типы данных:
- По умолчанию переменные являются неизменяемыми. Для создания изменяемой переменной используйте mut
.
let mut x = 5; // изменяемая переменная
x = 10; // корректно
- Основные типы данных:
- Целые числа:
i32
, u32
, i64
, u64
, isize
, usize
.- Числа с плавающей точкой:
f32
, f64
.- Логический тип:
bool
.- Символ:
char
.- Строки:
String
(изменяемая) и &str
(неизменяемая).- Функции:
- Определение функции:
fn имя_функции(параметры: Тип) -> Тип {
// тело функции
}
- Пример функции:
fn add(x: i32, y: i32) -> i32 {
x + y
}
- Управляющие конструкции:
- Условия:
if условие {
// код
} else if условие {
// код
} else {
// код
}
- Циклы:
- Цикл `loop`:
loop {
// бесконечный цикл
}
- Цикл `for`:
for элемент in коллекция {
// код
}
- Цикл `while`:
while условие {
// код
}
Структуры и перечисления
- Структуры:
struct ИмяСтруктуры {
поле1: Тип,
поле2: Тип,
}
Пример:
struct Point {
x: i32,
y: i32,
}
- Перечисления:
enum ИмяПеречисления {
Вариант1,
Вариант2,
}
Пример:
enum Direction {
Up,
Down,
Left,
Right,
}
Введение в владение и заимствование
- Владение: Каждый ресурс в Rust имеет единственного владельца.
- Заимствование:
- Неизменяемое заимствование:
let s = String::from("Hello");
let r = &s; // r — неизменяемая ссылка на s
- Изменяемое заимствование:
let mut s = String::from("Hello");
let r = &mut s; // r — изменяемая ссылка на s
Обработка ошибок
- Результат:
enum Result<T, E> {
Ok(T),
Err(E),
}
Пример функции с обработкой ошибок:
fn divide(x: i32, y: i32) -> Result<i32, String> {
if y == 0 {
Err(String::from("Деление на ноль"))
} else {
Ok(x / y)
}
}
- Паника:
- Используйте
panic!()
для критических ошибок, которые нельзя обработать.Обобщения
- Обобщенные типы позволяют писать более универсальный код:
fn print_vector<T: std::fmt::Debug>(vec: Vec<T>) {
println!("{:?}", vec);
}
Работа с модулями
- Создание модуля:
mod имя_модуля {
pub fn функция() {
// код
}
}
- Импорт модуля:
use имя_модуля::функция;
Стандартные библиотеки
- Работа с коллекциями:
- Векторы:
let mut vec = Vec::new();
vec.push(1);
vec.push(2);
- Хэш-таблицы:
use std::collections::HashMap;
let mut map = HashMap::new();
map.insert("ключ", "значение");
Полезные команды
- Компиляция и выполнение:
cargo build # Компиляция проекта
cargo run # Запуск проекта
- Запуск тестов:
cargo test
👉 @rust_lib
BY Rust
Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283
Share with your friend now:
tg-me.com/rust_lib/171