Добавить объявление

Rust совет: использование оператора ? вместо громоздкой конструкции match

Часто возникает ситуация, когда функция возвращает Result и при ошибке нужно просто вернуть ее из текущей функции без дополнительной обработки. В таких случаях можно избежать громоздкой конструкции match, используя оператор ?.

Было:

let file = match File::open("data.txt") {
Ok(f) => f,
Err(e) => return Err(e),
};

Стало:

let file = File::open("data.txt")?;

Оператор ? автоматически извлекает значение из Ok() или возвращает ошибку из Err(). Важно помнить, что этот подход работает только когда ваша функция тоже возвращает Result и вам не нужна особая обработка ошибок.

Для случаев, когда ошибку нужно обработать (например, записать в лог или использовать значение по умолчанию), match остается необходимым инструментом.
20.11.2025 11 191