diff --git a/src/mastodon.rs b/src/mastodon.rs index 55f319e..ec079c3 100644 --- a/src/mastodon.rs +++ b/src/mastodon.rs @@ -20,27 +20,18 @@ use elefren::{ /// Decodes the Twitter mention to something that will make sense once Twitter has joined the /// Fediverse fn twitter_mentions(ums: &Vec) -> HashMap { - let mut decoded_mentions = HashMap::new(); - - for um in ums { - decoded_mentions.insert(format!("@{}", um.screen_name), format!("@{}@twitter.com", um.screen_name)); - } - - decoded_mentions + ums.iter().map(|s| + (format!("@{}", s.screen_name), format!("@{}@twitter.com", s.screen_name)) + ).collect() } /// Decodes urls from UrlEntities fn decode_urls(urls: &Vec) -> HashMap { - let mut decoded_urls = HashMap::new(); - - for url in urls { - if url.expanded_url.is_some() { - // unwrap is safe here as we just verified that there is something inside expanded_url - decoded_urls.insert(String::from(&url.url), String::from(url.expanded_url.as_deref().unwrap())); - } - } - - decoded_urls + urls.iter() + .filter(|s| s.expanded_url.is_some()) + .map(|s| + (String::from(&s.url), String::from(s.expanded_url.as_deref().unwrap())) + ).collect() } /// Gets Mastodon Data @@ -61,13 +52,11 @@ pub fn build_basic_status(tweet: &Tweet) -> Result> { let mut toot = String::from(&tweet.text); let decoded_urls = decode_urls(&tweet.entities.urls); - for decoded_url in decoded_urls { toot = toot.replace(&decoded_url.0, &decoded_url.1); } let decoded_mentions = twitter_mentions(&tweet.entities.user_mentions); - for decoded_mention in decoded_mentions { toot = toot.replace(&decoded_mention.0, &decoded_mention.1); }