Я играл с Rust и наткнулся на следующий код:
fn request(&url) -> Result<(), Box<dyn std::error::Error>> {
let mut res = reqwest::get(&url)?;
let mut body = String::new();
res.read_to_string(&mut body)?;
println!("Status: {}", res.status());
println!("Headers:\n{:#?}", res.headers());
println!("Body:\n{}", body);
Ok(())
}
Насколько я понимаю, что:
fn request(&url) -> Result<(), Box<dyn std::error::Error>> {
Определяет функцию, которая имеет единственный (заимствованный) параметр и использует Result
для обработки ошибок.
let mut res = reqwest::get(&url)?;
Определяет изменяемую переменную для хранения объекта ответа из метода get
ящика *1013*.
let mut body = String::new();
Определяет изменяемую переменную для хранения строки responseText.
res.read_to_string(&mut body)?;
Этот метод сохраняет responseText
в переменной body
.
println!("Status: {}", res.status());
println!("Headers:\n{:#?}", res.headers());
println!("Body:\n{}", body);
Печатает три отформатированные строки (с завершающими новыми строками), содержащие статус ответа, заголовки и тело.
Ok(())
Обрабатывает ошибки с помощью Result
..?
Вопросы:
- Что означают / делают пустые скобки в
Result<()
и OK(())
? - Что такое
Box<dyn std::error::Error>
?