API «درایه» در Rust نمایی به درون یک درایهی واحد در یک «نگاشت» ارائه میدهد که میتواند HashMap یا BTreeMap باشد.
این درایه ممکن است اشغالشده یا خالی باشد و این API متدهایی برای تغییر محتوای درایه فراهم میکند.
در این تمرین برای حل یک مسئلهی الگوریتمی ساده از یک HashMap و متدهای API entry استفاده میکنید.
اگر یک &[&str] که واژههای یک مقالهی مجله است و یک &[&str] که واژههای یادداشتی است که میخواهید بفرستید در اختیار داشته باشید، آیا میتوانید با بریدن واژهها از مجله و چسباندن آنها در یک نامه، یادداشتتان را بسازید؟
نکات:
کار را با امضای تابع ناتمام زیر شروع میکنید:
pub fn can_construct_note(magazine: &[&str], note: &[&str]) -> bool {
todo!()
}
با در نظر گرفتن ورودی زیر
let magazine = "two times three is not four".split_whitespace().collect::<Vec<&str>>();
let note = "two times two is four".split_whitespace().collect::<Vec<&str>>();
assert!(!can_construct_note(&magazine, ¬e));
تابع false را برمیگرداند، چون مجله فقط یک نمونه از "two" دارد، در حالی که یادداشت دو تا از آن را میخواهد.
ورودی زیر موفق خواهد بود:
let magazine = "Astronomer Amy Mainzer spent hours chatting with Leonardo DiCaprio for Netflix's 'Don't Look Up'".split_whitespace().collect::<Vec<&str>>();
let note = "Amy Mainzer chatting with Leonardo DiCaprio"
.split_whitespace()
.collect::<Vec<&str>>();
assert!(can_construct_note(&magazine, ¬e));
تابع true را برمیگرداند، چون مجله همهی واژههایی را که یادداشت نیاز دارد در خود دارد.