11use std:: collections:: { HashMap , VecDeque } ;
22
3- fn initialize_men ( men_preferences : & HashMap < String , Vec < String > > ) -> ( VecDeque < String > , HashMap < String , usize > ) {
3+ fn initialize_men (
4+ men_preferences : & HashMap < String , Vec < String > > ,
5+ ) -> ( VecDeque < String > , HashMap < String , usize > ) {
46 let mut free_men = VecDeque :: new ( ) ;
57 let mut next_proposal = HashMap :: new ( ) ;
68
@@ -12,15 +14,19 @@ fn initialize_men(men_preferences: &HashMap<String, Vec<String>>) -> (VecDeque<S
1214 ( free_men, next_proposal)
1315}
1416
15- fn initialize_women ( women_preferences : & HashMap < String , Vec < String > > ) -> HashMap < String , Option < String > > {
17+ fn initialize_women (
18+ women_preferences : & HashMap < String , Vec < String > > ,
19+ ) -> HashMap < String , Option < String > > {
1620 let mut current_partner = HashMap :: new ( ) ;
1721 for woman in women_preferences. keys ( ) {
1822 current_partner. insert ( woman. clone ( ) , None ) ;
1923 }
2024 current_partner
2125}
2226
23- fn precompute_woman_ranks ( women_preferences : & HashMap < String , Vec < String > > ) -> HashMap < String , HashMap < String , usize > > {
27+ fn precompute_woman_ranks (
28+ women_preferences : & HashMap < String , Vec < String > > ,
29+ ) -> HashMap < String , HashMap < String , usize > > {
2430 let mut woman_ranks = HashMap :: new ( ) ;
2531 for ( woman, preferences) in women_preferences {
2632 let mut rank_map = HashMap :: new ( ) ;
@@ -51,7 +57,14 @@ fn process_proposal(
5157 if let Some ( current_man) = current_partner[ woman] . clone ( ) {
5258 // Woman is currently engaged, check if she prefers the new man
5359 if woman_prefers_new_man ( woman, man, & current_man, woman_ranks) {
54- engage_man ( man, woman, free_men, current_partner, man_engaged, Some ( current_man) ) ;
60+ engage_man (
61+ man,
62+ woman,
63+ free_men,
64+ current_partner,
65+ man_engaged,
66+ Some ( current_man) ,
67+ ) ;
5568 } else {
5669 // Woman rejects the proposal, so the man remains free
5770 free_men. push_back ( man. to_string ( ) ) ;
@@ -124,8 +137,6 @@ pub fn stable_matching(
124137 finalize_matches ( man_engaged)
125138}
126139
127-
128-
129140#[ cfg( test) ]
130141mod tests {
131142 use super :: * ;
0 commit comments