Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Solving #1957

Closed
wants to merge 7 commits into from
Closed

Solving #1957

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 0 additions & 1 deletion exercises/00_intro/intro1.rs
Expand Up @@ -13,7 +13,6 @@
// Execute `rustlings hint intro1` or use the `hint` watch subcommand for a
// hint.

// I AM NOT DONE

fn main() {
println!("Hello and");
Expand Down
3 changes: 1 addition & 2 deletions exercises/00_intro/intro2.rs
Expand Up @@ -5,8 +5,7 @@
// Execute `rustlings hint intro2` or use the `hint` watch subcommand for a
// hint.

// I AM NOT DONE

fn main() {
printline!("Hello there!")
println!("Hello there!")
}
3 changes: 1 addition & 2 deletions exercises/01_variables/variables1.rs
Expand Up @@ -5,9 +5,8 @@
// Execute `rustlings hint variables1` or use the `hint` watch subcommand for a
// hint.

// I AM NOT DONE

fn main() {
x = 5;
let x = 5;
println!("x has the value {}", x);
}
3 changes: 1 addition & 2 deletions exercises/01_variables/variables2.rs
Expand Up @@ -3,10 +3,9 @@
// Execute `rustlings hint variables2` or use the `hint` watch subcommand for a
// hint.

// I AM NOT DONE

fn main() {
let x;
let x = 10;
if x == 10 {
println!("x is ten!");
} else {
Expand Down
3 changes: 1 addition & 2 deletions exercises/01_variables/variables3.rs
Expand Up @@ -3,9 +3,8 @@
// Execute `rustlings hint variables3` or use the `hint` watch subcommand for a
// hint.

// I AM NOT DONE

fn main() {
let x: i32;
let x: i32 = 0;
println!("Number {}", x);
}
3 changes: 1 addition & 2 deletions exercises/01_variables/variables4.rs
Expand Up @@ -3,10 +3,9 @@
// Execute `rustlings hint variables4` or use the `hint` watch subcommand for a
// hint.

// I AM NOT DONE

fn main() {
let x = 3;
let mut x = 3;
println!("Number {}", x);
x = 5; // don't change this line
println!("Number {}", x);
Expand Down
3 changes: 1 addition & 2 deletions exercises/01_variables/variables5.rs
Expand Up @@ -3,11 +3,10 @@
// Execute `rustlings hint variables5` or use the `hint` watch subcommand for a
// hint.

// I AM NOT DONE

fn main() {
let number = "T-H-R-E-E"; // don't change this line
println!("Spell a Number : {}", number);
number = 3; // don't rename this variable
let number = 3; // don't rename this variable
println!("Number plus two is : {}", number + 2);
}
3 changes: 1 addition & 2 deletions exercises/01_variables/variables6.rs
Expand Up @@ -3,9 +3,8 @@
// Execute `rustlings hint variables6` or use the `hint` watch subcommand for a
// hint.

// I AM NOT DONE

const NUMBER = 3;
const NUMBER: i8 = 3;
fn main() {
println!("Number {}", NUMBER);
}
5 changes: 4 additions & 1 deletion exercises/02_functions/functions1.rs
Expand Up @@ -3,8 +3,11 @@
// Execute `rustlings hint functions1` or use the `hint` watch subcommand for a
// hint.

// I AM NOT DONE

fn main() {
call_me();
}

fn call_me() {
println!("{}", "I called")
}
3 changes: 1 addition & 2 deletions exercises/02_functions/functions2.rs
Expand Up @@ -3,13 +3,12 @@
// Execute `rustlings hint functions2` or use the `hint` watch subcommand for a
// hint.

// I AM NOT DONE

fn main() {
call_me(3);
}

fn call_me(num:) {
fn call_me(num: i32) {
for i in 0..num {
println!("Ring! Call number {}", i + 1);
}
Expand Down
3 changes: 1 addition & 2 deletions exercises/02_functions/functions3.rs
Expand Up @@ -3,10 +3,9 @@
// Execute `rustlings hint functions3` or use the `hint` watch subcommand for a
// hint.

// I AM NOT DONE

fn main() {
call_me();
call_me(5);
}

fn call_me(num: u32) {
Expand Down
3 changes: 1 addition & 2 deletions exercises/02_functions/functions4.rs
Expand Up @@ -8,14 +8,13 @@
// Execute `rustlings hint functions4` or use the `hint` watch subcommand for a
// hint.

// I AM NOT DONE

fn main() {
let original_price = 51;
println!("Your sale price is {}", sale_price(original_price));
}

fn sale_price(price: i32) -> {
fn sale_price(price: i32) -> i32 {
if is_even(price) {
price - 10
} else {
Expand Down
4 changes: 1 addition & 3 deletions exercises/02_functions/functions5.rs
Expand Up @@ -3,13 +3,11 @@
// Execute `rustlings hint functions5` or use the `hint` watch subcommand for a
// hint.

// I AM NOT DONE

fn main() {
let answer = square(3);
println!("The square of 3 is {}", answer);
}

fn square(num: i32) -> i32 {
num * num;
num * num
}
13 changes: 7 additions & 6 deletions exercises/03_if/if1.rs
Expand Up @@ -2,14 +2,15 @@
//
// Execute `rustlings hint if1` or use the `hint` watch subcommand for a hint.

// I AM NOT DONE

pub fn bigger(a: i32, b: i32) -> i32 {
// Complete this function to return the bigger number!
// If both numbers are equal, any of them can be returned.
// Do not use:
// - another function call
// - additional variables
if a > b {
return a;
} else if a < b {
return b;
}

a
}

// Don't mind this for now :)
Expand Down
5 changes: 3 additions & 2 deletions exercises/03_if/if2.rs
Expand Up @@ -5,13 +5,14 @@
//
// Execute `rustlings hint if2` or use the `hint` watch subcommand for a hint.

// I AM NOT DONE

pub fn foo_if_fizz(fizzish: &str) -> &str {
if fizzish == "fizz" {
"foo"
} else if fizzish == "fuzz" {
"bar"
} else {
1
"baz"
}
}

Expand Down
5 changes: 2 additions & 3 deletions exercises/03_if/if3.rs
Expand Up @@ -2,17 +2,16 @@
//
// Execute `rustlings hint if3` or use the `hint` watch subcommand for a hint.

// I AM NOT DONE

pub fn animal_habitat(animal: &str) -> &'static str {
let identifier = if animal == "crab" {
1
} else if animal == "gopher" {
2.0
2
} else if animal == "snake" {
3
} else {
"Unknown"
0
};

// DO NOT CHANGE THIS STATEMENT BELOW
Expand Down
6 changes: 2 additions & 4 deletions exercises/04_primitive_types/primitive_types1.rs
@@ -1,9 +1,7 @@
// primitive_types1.rs
//
// Fill in the rest of the line that has code missing! No hints, there's no
// tricks, just get used to typing these :)

// I AM NOT DONE
// tricks, just get

fn main() {
// Booleans (`bool`)
Expand All @@ -13,7 +11,7 @@ fn main() {
println!("Good morning!");
}

let // Finish the rest of this line like the example! Or make it be false!
let is_evening = true; // Finish the rest of this line like the example! Or make it be false!
if is_evening {
println!("Good evening!");
}
Expand Down
3 changes: 1 addition & 2 deletions exercises/04_primitive_types/primitive_types2.rs
Expand Up @@ -3,7 +3,6 @@
// Fill in the rest of the line that has code missing! No hints, there's no
// tricks, just get used to typing these :)

// I AM NOT DONE

fn main() {
// Characters (`char`)
Expand All @@ -19,7 +18,7 @@ fn main() {
println!("Neither alphabetic nor numeric!");
}

let // Finish this line like the example! What's your favorite character?
let your_character = '#'; // Finish this line like the example! What's your favorite character?
// Try a letter, try a number, try a special character, try a character
// from a different language than your own, try an emoji!
if your_character.is_alphabetic() {
Expand Down
4 changes: 1 addition & 3 deletions exercises/04_primitive_types/primitive_types3.rs
Expand Up @@ -5,10 +5,8 @@
// Execute `rustlings hint primitive_types3` or use the `hint` watch subcommand
// for a hint.

// I AM NOT DONE

fn main() {
let a = ???
let a = ["here is an array"; 100];

if a.len() >= 100 {
println!("Wow, that's a big array!");
Expand Down
4 changes: 1 addition & 3 deletions exercises/04_primitive_types/primitive_types4.rs
Expand Up @@ -5,13 +5,11 @@
// Execute `rustlings hint primitive_types4` or use the `hint` watch subcommand
// for a hint.

// I AM NOT DONE

#[test]
fn slice_out_of_array() {
let a = [1, 2, 3, 4, 5];

let nice_slice = ???
let nice_slice = &a[1..4];

assert_eq!([2, 3, 4], nice_slice)
}
3 changes: 1 addition & 2 deletions exercises/04_primitive_types/primitive_types5.rs
Expand Up @@ -5,11 +5,10 @@
// Execute `rustlings hint primitive_types5` or use the `hint` watch subcommand
// for a hint.

// I AM NOT DONE

fn main() {
let cat = ("Furry McFurson", 3.5);
let /* your pattern here */ = cat;
let (name, age) = cat;

println!("{} is {} years old.", name, age);
}
3 changes: 1 addition & 2 deletions exercises/04_primitive_types/primitive_types6.rs
Expand Up @@ -6,13 +6,12 @@
// Execute `rustlings hint primitive_types6` or use the `hint` watch subcommand
// for a hint.

// I AM NOT DONE

#[test]
fn indexing_tuple() {
let numbers = (1, 2, 3);
// Replace below ??? with the tuple indexing syntax.
let second = ???;
let second = numbers.1;

assert_eq!(2, second,
"This is not the 2nd number in the tuple!")
Expand Down
3 changes: 1 addition & 2 deletions exercises/05_vecs/vecs1.rs
Expand Up @@ -7,11 +7,10 @@
//
// Execute `rustlings hint vecs1` or use the `hint` watch subcommand for a hint.

// I AM NOT DONE

fn array_and_vec() -> ([i32; 4], Vec<i32>) {
let a = [10, 20, 30, 40]; // a plain array
let v = // TODO: declare your vector here with the macro for vectors
let v = vec!(10, 20, 30, 40);// TODO: declare your vector here with the macro for vectors

(a, v)
}
Expand Down
5 changes: 2 additions & 3 deletions exercises/05_vecs/vecs2.rs
Expand Up @@ -7,13 +7,12 @@
//
// Execute `rustlings hint vecs2` or use the `hint` watch subcommand for a hint.

// I AM NOT DONE

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.
???
*element = *element * 2;
}

// At this point, `v` should be equal to [4, 8, 12, 16, 20].
Expand All @@ -24,7 +23,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!
???
element * 2
}).collect()
}

Expand Down
3 changes: 1 addition & 2 deletions exercises/06_move_semantics/move_semantics1.rs
Expand Up @@ -3,7 +3,6 @@
// Execute `rustlings hint move_semantics1` or use the `hint` watch subcommand
// for a hint.

// I AM NOT DONE

#[test]
fn main() {
Expand All @@ -15,7 +14,7 @@ fn main() {
}

fn fill_vec(vec: Vec<i32>) -> Vec<i32> {
let vec = vec;
let mut vec = vec;

vec.push(88);

Expand Down
4 changes: 1 addition & 3 deletions exercises/06_move_semantics/move_semantics2.rs
Expand Up @@ -5,13 +5,11 @@
// Execute `rustlings hint move_semantics2` or use the `hint` watch subcommand
// for a hint.

// I AM NOT DONE

#[test]
fn main() {
let vec0 = vec![22, 44, 66];

let vec1 = fill_vec(vec0);
let vec1 = fill_vec(vec0.clone());

assert_eq!(vec0, vec![22, 44, 66]);
assert_eq!(vec1, vec![22, 44, 66, 88]);
Expand Down
3 changes: 1 addition & 2 deletions exercises/06_move_semantics/move_semantics3.rs
Expand Up @@ -6,7 +6,6 @@
// Execute `rustlings hint move_semantics3` or use the `hint` watch subcommand
// for a hint.

// I AM NOT DONE

#[test]
fn main() {
Expand All @@ -17,7 +16,7 @@ fn main() {
assert_eq!(vec1, vec![22, 44, 66, 88]);
}

fn fill_vec(vec: Vec<i32>) -> Vec<i32> {
fn fill_vec(mut vec: Vec<i32>) -> Vec<i32> {
vec.push(88);

vec
Expand Down