reached hashmaps

This commit is contained in:
Abrar Habib 2023-03-29 21:36:00 -04:00
parent 9bb3659f30
commit 9142f52e2e
9 changed files with 40 additions and 28 deletions

View File

@ -10,18 +10,18 @@
// //
// Execute `rustlings hint hashmaps1` or use the `hint` watch subcommand for a hint. // Execute `rustlings hint hashmaps1` or use the `hint` watch subcommand for a hint.
// I AM NOT DONE
use std::collections::HashMap; use std::collections::HashMap;
fn fruit_basket() -> HashMap<String, u32> { fn fruit_basket() -> HashMap<String, u32> {
let mut basket = // TODO: declare your hash map here. let mut basket = HashMap::new();// TODO: declare your hash map here.
// Two bananas are already given for you :) // Two bananas are already given for you :)
basket.insert(String::from("banana"), 2); basket.insert(String::from("banana"), 2);
// TODO: Put more fruits in your basket here. // TODO: Put more fruits in your basket here.
basket.insert(String::from("apple"),1);
basket.insert(String::from("mango"),3);
basket basket
} }

View File

@ -13,7 +13,8 @@
// //
// Execute `rustlings hint hashmaps2` or use the `hint` watch subcommand for a hint. // Execute `rustlings hint hashmaps2` or use the `hint` watch subcommand for a hint.
// I AM NOT DONE //user entry() to see if the value exists and use .or_insert() to insert if not in hashmap.
//similar to python's .get() but separated into two functions
use std::collections::HashMap; use std::collections::HashMap;
@ -39,6 +40,7 @@ fn fruit_basket(basket: &mut HashMap<Fruit, u32>) {
// TODO: Insert new fruits if they are not already present in the basket. // TODO: Insert new fruits if they are not already present in the basket.
// Note that you are not allowed to put any type of fruit that's already // Note that you are not allowed to put any type of fruit that's already
// present! // present!
basket.entry(fruit).or_insert(3);
} }
} }

View File

@ -40,6 +40,12 @@ fn build_scores_table(results: String) -> HashMap<String, Team> {
// will be the number of goals conceded from team_2, and similarly // will be the number of goals conceded from team_2, and similarly
// goals scored by team_2 will be the number of goals conceded by // goals scored by team_2 will be the number of goals conceded by
// team_1. // team_1.
scores.entry(team_1_name).or_insert(Team{
name: team_1_name,
goals_scored: team_1_score,
goals_conceded: team_2_score
});
} }
scores scores
} }

View File

@ -1,7 +1,7 @@
// modules1.rs // modules1.rs
// Execute `rustlings hint modules1` or use the `hint` watch subcommand for a hint. // Execute `rustlings hint modules1` or use the `hint` watch subcommand for a hint.
// I AM NOT DONE //there is no private keyword. to make it private, don't make it public ;)
mod sausage_factory { mod sausage_factory {
// Don't let anybody outside of this module see this! // Don't let anybody outside of this module see this!
@ -9,7 +9,7 @@ mod sausage_factory {
String::from("Ginger") String::from("Ginger")
} }
fn make_sausage() { pub fn make_sausage() {
get_secret_recipe(); get_secret_recipe();
println!("sausage!"); println!("sausage!");
} }

View File

@ -3,12 +3,12 @@
// 'use' and 'as' keywords. Fix these 'use' statements to make the code compile. // 'use' and 'as' keywords. Fix these 'use' statements to make the code compile.
// Execute `rustlings hint modules2` or use the `hint` watch subcommand for a hint. // Execute `rustlings hint modules2` or use the `hint` watch subcommand for a hint.
// I AM NOT DONE // The pub use ... as ... exposes ONLY the things we import
mod delicious_snacks { mod delicious_snacks {
// TODO: Fix these use statements // TODO: Fix these use statements
use self::fruits::PEAR as ??? pub use self::fruits::PEAR as fruit;
use self::veggies::CUCUMBER as ??? pub use self::veggies::CUCUMBER as veggie;
mod fruits { mod fruits {
pub const PEAR: &'static str = "Pear"; pub const PEAR: &'static str = "Pear";

View File

@ -5,10 +5,13 @@
// from the std::time module. Bonus style points if you can do it with one line! // from the std::time module. Bonus style points if you can do it with one line!
// Execute `rustlings hint modules3` or use the `hint` watch subcommand for a hint. // Execute `rustlings hint modules3` or use the `hint` watch subcommand for a hint.
// I AM NOT DONE //similar to using namespace or python import multiple...
// TODO: Complete this use statement // TODO: Complete this use statement
use ??? use std::time::{
SystemTime,
UNIX_EPOCH
};
fn main() { fn main() {
match SystemTime::now().duration_since(UNIX_EPOCH) { match SystemTime::now().duration_since(UNIX_EPOCH) {

View File

@ -1,21 +1,23 @@
// strings3.rs // strings3.rs
// Execute `rustlings hint strings3` or use the `hint` watch subcommand for a hint. // Execute `rustlings hint strings3` or use the `hint` watch subcommand for a hint.
// I AM NOT DONE
fn trim_me(input: &str) -> String { fn trim_me(input: &str) -> String {
// TODO: Remove whitespace from both ends of a string! // TODO: Remove whitespace from both ends of a string!
input.trim().to_string()
} }
fn compose_me(input: &str) -> String { fn compose_me(input: &str) -> String {
// TODO: Add " world!" to the string! There's multiple ways to do this! // TODO: Add " world!" to the string! There's multiple ways to do this!
??? let mut ret = input.to_string();
ret.push_str(" world!");
ret
} }
fn replace_me(input: &str) -> String { fn replace_me(input: &str) -> String {
// TODO: Replace "cars" in the string with "balloons"! // TODO: Replace "cars" in the string with "balloons"!
??? //.replace() creates a new string, copies data and then returns that string
input.replace("cars", "balloons")
} }
#[cfg(test)] #[cfg(test)]

View File

@ -6,7 +6,6 @@
// before the parentheses on each line. If you're right, it will compile! // before the parentheses on each line. If you're right, it will compile!
// No hints this time! // No hints this time!
// I AM NOT DONE
fn string_slice(arg: &str) { fn string_slice(arg: &str) {
println!("{}", arg); println!("{}", arg);
@ -16,14 +15,14 @@ fn string(arg: String) {
} }
fn main() { fn main() {
???("blue"); string_slice("blue");
???("red".to_string()); string("red".to_string());
???(String::from("hi")); string(String::from("hi"));
???("rust is fun!".to_owned()); string("rust is fun!".to_owned());
???("nice weather".into()); string("nice weather".into());
???(format!("Interpolation {}", "Station")); string(format!("Interpolation {}", "Station"));
???(&String::from("abc")[0..1]); string_slice(&String::from("abc")[0..1]);
???(" hello there ".trim()); string_slice(" hello there ".trim());
???("Happy Monday!".to_string().replace("Mon", "Tues")); string("Happy Monday!".to_string().replace("Mon", "Tues"));
???("mY sHiFt KeY iS sTiCkY".to_lowercase()); string("mY sHiFt KeY iS sTiCkY".to_lowercase());
} }

View File

@ -11,7 +11,7 @@ fn vec_loop(mut v: Vec<i32>) -> Vec<i32> {
for element in v.iter_mut() { for element in v.iter_mut() {
// TODO: Fill this up so that each element in the Vec `v` is // TODO: Fill this up so that each element in the Vec `v` is
// multiplied by 2. // multiplied by 2.
*i *= 2; *element *= 2;
} }
// At this point, `v` should be equal to [4, 8, 12, 16, 20]. // At this point, `v` should be equal to [4, 8, 12, 16, 20].
@ -22,7 +22,7 @@ fn vec_map(v: &Vec<i32>) -> Vec<i32> {
v.iter().map(|element| { v.iter().map(|element| {
// TODO: Do the same thing as above - but instead of mutating the // TODO: Do the same thing as above - but instead of mutating the
// Vec, you can just return the new number! // Vec, you can just return the new number!
num * 2 element * 2
}).collect() }).collect()
} }