Перейти к основному содержимому

5.13. Встроенные функции в Rust

Разработчику Архитектору

Встроенные функции в Rust

Rust предоставляет набор встроенных макросов и функций стандартной библиотеки, доступных без дополнительных импортов в большинстве контекстов. Эти инструменты образуют основу повседневной разработки.

Встроенные макросы

МакросНазначениеПример
println!Вывод текста в стандартный поток вывода с переводом строки
print!Вывод текста в стандартный поток вывода без перевода строки
eprintln!Вывод текста в стандартный поток ошибок с переводом строки
eprint!Вывод текста в стандартный поток ошибок без перевода строки
format!Форматирование строки без вывода, возвращает String
panic!Немедленное прерывание выполнения программы с сообщением
vec!Создание вектора с заданными элементами
dbg!Отладочная печать значения с указанием файла и строки
todo!Заглушка для нереализованного функционала, вызывает панику
unimplemented!Заглушка для нереализованного метода, вызывает панику
assert!Проверка условия в режиме отладки, паника при ложном результате
assert_eq!Проверка равенства двух значений с детальным сообщением
assert_ne!Проверка неравенства двух значений
debug_assert!Проверка условия только в режиме отладки (оптимизируется в релизе)
debug_assert_eq!Проверка равенства только в режиме отладки
debug_assert_ne!Проверка неравенства только в режиме отладки
write!Запись отформатированного текста в реализацию std::fmt::Write
writeln!Запись отформатированного текста с переводом строки
concat!Объединение строковых литералов на этапе компиляции
env!Получение значения переменной окружения на этапе компиляции
option_env!Безопасное получение переменной окружения, возвращает Option
include_str!Встраивание содержимого файла как строкового литерала
include_bytes!Встраивание содержимого файла как байтового массива
line!Получение номера текущей строки на этапе компиляции
file!Получение имени текущего файла на этапе компиляции
column!Получение номера текущей колонки на этапе компиляции
stringify!Преобразование токена в строковый литерал на этапе компиляции
module_path!Получение полного пути к текущему модулю

Функции стандартной библиотеки высокой частоты использования

ФункцияНазначение
std::process::exitЗавершение процесса с указанным кодом возврата
std::mem::dropЯвное освобождение владения значением
std::mem::size_ofПолучение размера типа в байтах на этапе компиляции
std::mem::size_of_valПолучение размера значения в байтах во время выполнения
std::mem::takeЗамена значения по изменяемой ссылке на значение по умолчанию с возвратом старого
std::mem::replaceЗамена значения по изменяемой ссылке с возвратом старого
std::ptr::nullСоздание нулевого указателя для любого типа
std::ptr::null_mutСоздание нулевого изменяемого указателя
std::env::argsПолучение аргументов командной строки как итератора
std::env::varПолучение значения переменной окружения
std::fs::readЧтение всего содержимого файла в вектор байт
std::fs::writeЗапись данных в файл
std::thread::sleepПриостановка выполнения потока на заданную длительность
std::thread::spawnСоздание нового потока выполнения
std::time::Instant::nowПолучение текущей точки во времени для замеров

Методы-помощники для стандартных типов

МетодНазначение
is_emptyПроверка коллекции на отсутствие элементов
lenПолучение количества элементов в коллекции
unwrapИзвлечение значения из Option или Result, паника при ошибке
expectИзвлечение значения с пользовательским сообщением паники
unwrap_orИзвлечение значения или возврат значения по умолчанию
unwrap_or_elseИзвлечение значения или вычисление значения по умолчанию
mapПреобразование значения внутри Option или Result
and_thenЦепочка операций, возвращающих Option или Result
as_refПреобразование Option<T> в Option<&T> без перемещения
as_mutПреобразование Option<T> в Option<&mut T>

Функции для работы с памятью и указателями

ФункцияНазначение
std::alloc::allocВыделение сырой памяти через системный аллокатор
std::alloc::deallocОсвобождение сырой памяти
std::ptr::readБезопасное чтение значения по указателю без перемещения
std::ptr::writeЗапись значения по указателю без дропа предыдущего
std::ptr::copyКопирование памяти с перекрытием областей
std::ptr::copy_nonoverlappingКопирование памяти без перекрытия
Box::newВыделение значения в куче с автоматическим освобождением
Box::into_rawПреобразование Box в сырой указатель
Box::from_rawВосстановление Box из сырого указателя

Функции для работы с файловой системой

ФункцияНазначение
std::fs::readЧтение всего содержимого файла в Vec<u8>
std::fs::read_to_stringЧтение текстового файла в String
std::fs::writeЗапись данных в файл, перезаписывая существующий
std::fs::create_dirСоздание директории
std::fs::create_dir_allРекурсивное создание директории со всеми родителями
std::fs::remove_fileУдаление файла
std::fs::remove_dirУдаление пустой директории
std::fs::remove_dir_allРекурсивное удаление директории со всем содержимым
std::fs::metadataПолучение метаданных файла или директории
std::fs::canonicalizeПолучение абсолютного пути с разрешением символических ссылок

Функции для работы с сетью

ФункцияНазначение
std::net::TcpStream::connectУстановка TCP-соединения к удалённому хосту
std::net::TcpListener::bindПривязка TCP-сервера к локальному адресу
std::net::UdpSocket::bindПривязка UDP-сокета к адресу
std::net::IpAddr::fromСоздание IP-адреса из различных представлений
std::net::SocketAddr::newСоздание сокетного адреса из IP и порта

Функции для работы со временем

ФункцияНазначение
std::time::Instant::nowПолучение текущей точки времени для замеров производительности
std::time::SystemTime::nowПолучение системного времени в формате UNIX
std::time::Duration::from_secsСоздание длительности из секунд
std::time::Duration::from_millisСоздание длительности из миллисекунд
std::time::Duration::from_microsСоздание длительности из микросекунд
std::time::Duration::from_nanosСоздание длительности из наносекунд

Макросы для тестирования и атрибуты

Макрос / АтрибутНазначение
#[test]Пометка функции как теста для cargo test
#[should_panic]Ожидание паники при выполнении теста
#[ignore]Пропуск теста при обычном запуске
compile_error!Генерация ошибки компиляции с сообщением
unreachable!Указание недостижимого кода, вызывает панику при выполнении

Функции для работы с итераторами и коллекциями

Функция / МетодНазначение
collectСбор элементов итератора в коллекцию
mapПреобразование каждого элемента итератора
filterОтбор элементов по предикату
foldСвёртка итератора в одно значение
zipОбъединение двух итераторов в пары
enumerateДобавление индекса к каждому элементу
chainПоследовательное объединение двух итераторов