Прочитав книгу Руста, я наткнулся на интересную тему - расходящиеся функции:
У Rust есть специальный синтаксис для 'расходящихся функций, которые функции, которые не возвращаются:
fn diverges() -> ! { panic!("This function never returns!"); }
Функция расхождения может использоваться как любой тип:
let x: i32 = diverges(); let x: String = diverges();
Какими будут случаи использования расходящейся функции? В книге говорится, что
panic!()
приводит к сбою текущего потока выполнения с помощью данное сообщение. Поскольку эта функция приведет к сбою, она никогда не будет return, и поэтому он имеет тип!
Это имеет смысл, но я не могу придумать, где еще может быть расходящаяся функция, и она кажется очень локализованной только panic!
. Я знаю, что там должны быть какие-то полезные сценарии, почему они вводили расходящиеся функции. Где я, вероятно, увижу расходящиеся функции в Rust?