mirror of
https://github.com/rust-lang/rustlings.git
synced 2026-01-11 13:19:18 +00:00
reached hashmaps
This commit is contained in:
parent
9bb3659f30
commit
9142f52e2e
@ -10,18 +10,18 @@
|
||||
//
|
||||
// Execute `rustlings hint hashmaps1` or use the `hint` watch subcommand for a hint.
|
||||
|
||||
// I AM NOT DONE
|
||||
|
||||
use std::collections::HashMap;
|
||||
|
||||
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 :)
|
||||
basket.insert(String::from("banana"), 2);
|
||||
|
||||
// TODO: Put more fruits in your basket here.
|
||||
|
||||
basket.insert(String::from("apple"),1);
|
||||
basket.insert(String::from("mango"),3);
|
||||
basket
|
||||
}
|
||||
|
||||
|
||||
@ -13,7 +13,8 @@
|
||||
//
|
||||
// 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;
|
||||
|
||||
@ -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.
|
||||
// Note that you are not allowed to put any type of fruit that's already
|
||||
// present!
|
||||
basket.entry(fruit).or_insert(3);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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
|
||||
// goals scored by team_2 will be the number of goals conceded by
|
||||
// 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
|
||||
}
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
// modules1.rs
|
||||
// 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 {
|
||||
// Don't let anybody outside of this module see this!
|
||||
@ -9,7 +9,7 @@ mod sausage_factory {
|
||||
String::from("Ginger")
|
||||
}
|
||||
|
||||
fn make_sausage() {
|
||||
pub fn make_sausage() {
|
||||
get_secret_recipe();
|
||||
println!("sausage!");
|
||||
}
|
||||
|
||||
@ -3,12 +3,12 @@
|
||||
// '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.
|
||||
|
||||
// I AM NOT DONE
|
||||
// The pub use ... as ... exposes ONLY the things we import
|
||||
|
||||
mod delicious_snacks {
|
||||
// TODO: Fix these use statements
|
||||
use self::fruits::PEAR as ???
|
||||
use self::veggies::CUCUMBER as ???
|
||||
pub use self::fruits::PEAR as fruit;
|
||||
pub use self::veggies::CUCUMBER as veggie;
|
||||
|
||||
mod fruits {
|
||||
pub const PEAR: &'static str = "Pear";
|
||||
|
||||
@ -5,10 +5,13 @@
|
||||
// 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.
|
||||
|
||||
// I AM NOT DONE
|
||||
//similar to using namespace or python import multiple...
|
||||
|
||||
// TODO: Complete this use statement
|
||||
use ???
|
||||
use std::time::{
|
||||
SystemTime,
|
||||
UNIX_EPOCH
|
||||
};
|
||||
|
||||
fn main() {
|
||||
match SystemTime::now().duration_since(UNIX_EPOCH) {
|
||||
|
||||
@ -1,21 +1,23 @@
|
||||
// strings3.rs
|
||||
// Execute `rustlings hint strings3` or use the `hint` watch subcommand for a hint.
|
||||
|
||||
// I AM NOT DONE
|
||||
|
||||
fn trim_me(input: &str) -> String {
|
||||
// TODO: Remove whitespace from both ends of a string!
|
||||
|
||||
input.trim().to_string()
|
||||
}
|
||||
|
||||
fn compose_me(input: &str) -> String {
|
||||
// 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 {
|
||||
// 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)]
|
||||
|
||||
@ -6,7 +6,6 @@
|
||||
// before the parentheses on each line. If you're right, it will compile!
|
||||
// No hints this time!
|
||||
|
||||
// I AM NOT DONE
|
||||
|
||||
fn string_slice(arg: &str) {
|
||||
println!("{}", arg);
|
||||
@ -16,14 +15,14 @@ fn string(arg: String) {
|
||||
}
|
||||
|
||||
fn main() {
|
||||
???("blue");
|
||||
???("red".to_string());
|
||||
???(String::from("hi"));
|
||||
???("rust is fun!".to_owned());
|
||||
???("nice weather".into());
|
||||
???(format!("Interpolation {}", "Station"));
|
||||
???(&String::from("abc")[0..1]);
|
||||
???(" hello there ".trim());
|
||||
???("Happy Monday!".to_string().replace("Mon", "Tues"));
|
||||
???("mY sHiFt KeY iS sTiCkY".to_lowercase());
|
||||
string_slice("blue");
|
||||
string("red".to_string());
|
||||
string(String::from("hi"));
|
||||
string("rust is fun!".to_owned());
|
||||
string("nice weather".into());
|
||||
string(format!("Interpolation {}", "Station"));
|
||||
string_slice(&String::from("abc")[0..1]);
|
||||
string_slice(" hello there ".trim());
|
||||
string("Happy Monday!".to_string().replace("Mon", "Tues"));
|
||||
string("mY sHiFt KeY iS sTiCkY".to_lowercase());
|
||||
}
|
||||
|
||||
@ -11,7 +11,7 @@ fn vec_loop(mut v: Vec<i32>) -> Vec<i32> {
|
||||
for element in v.iter_mut() {
|
||||
// TODO: Fill this up so that each element in the Vec `v` is
|
||||
// multiplied by 2.
|
||||
*i *= 2;
|
||||
*element *= 2;
|
||||
}
|
||||
|
||||
// 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| {
|
||||
// TODO: Do the same thing as above - but instead of mutating the
|
||||
// Vec, you can just return the new number!
|
||||
num * 2
|
||||
element * 2
|
||||
}).collect()
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user