from dontblink@feddit.it to rust@lemmy.ml on 25 Oct 2024 10:22
https://feddit.it/post/11903677
Hi! I’m trying to learn Rust, as a little project, I’m trying to build a web scraper that will scrape some content and rebuild it with a static site generator, or using it for making POST requests.
I’m still at a very early stage and I still don’t know much, the simplest error handling strategy I know is using match
with Result
.
To my eyes, this syntax looks correct, but also looks kind of a lot of lines for a simple http request.
I know the reqwest docs suggest to handle errors with the ?
operator, which I don’t know yet, therefore I’m just using what I know now.
fn get_document(permalink: String) -> Html { let html_content_result = reqwest::blocking::get(&permalink); let html_content = match html_content_result { Ok(response) => response, Err(error) => panic!("There was an error making the request: {:?}", error), }; let html_content_text_result = html_content.text(); let html_content_text = match html_content_text_result { Ok(text) => text, Err(error) => panic!( "There was an error getting the html text from the content of response: :{:?}", error ), }; let document = Html::parse_document(&html_content_text); document }
As for my understanding, this is what I’m doing here:
I’m making an http request, if i get a Response
, I try to get the text out of the response body, otherwise I handle the error by panicking with a custom message.
Getting the text out of the request body is another passage that requires error handling, therefore I use the match expression again to get the text out and handle the possible error (In what circumstances can extracting the text of a response body fail?).
Then I can finally parse the document and return it!
I wonder if it is a correct and understandable way of doing what I’ve in mind.
Do you think this would be a suitable project for someone who is at chapter 7 of the Rust book? I feel like i actually need to build somethiong before keep going with the theory!
threaded - newest