diff --git a/exercises/standard_library_types/box1.rs b/exercises/standard_library_types/box1.rs index 11156ea0..2248962e 100644 --- a/exercises/standard_library_types/box1.rs +++ b/exercises/standard_library_types/box1.rs @@ -12,24 +12,42 @@ // Step 1: use a `Box` in the enum definition to make the code compile // Step 2: create both empty and non-empty cons lists of by replacing `unimplemented!()` // +// Note: the tests should not be changed +// // Execute `rustlings hint box1` for hints :) // I AM NOT DONE #[derive(PartialEq, Debug)] -enum List { +pub enum List { Cons(i32, List), Nil, } fn main() { - let empty_list = unimplemented!(); - println!("This is an empty cons list: {:?}", empty_list); - - let non_empty_list = unimplemented!(); - println!("This is a non-empty cons list: {:?}", non_empty_list); - - // Do not change these - assert_eq!(List::Nil, empty_list); - assert_ne!(empty_list, non_empty_list); + println!("This is an empty cons list: {:?}", create_empty_list()); + println!("This is a non-empty cons list: {:?}", create_non_empty_list()); +} + +pub fn create_empty_list() -> List { + unimplemented!() +} + +pub fn create_non_empty_list() -> List { + unimplemented!() +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_create_empty_list() { + assert_eq!(List::Nil, create_empty_list()) + } + + #[test] + fn test_create_non_empty_list() { + assert_ne!(create_empty_list(), create_non_empty_list()) + } } diff --git a/info.toml b/info.toml index dcd93bf2..842253c5 100644 --- a/info.toml +++ b/info.toml @@ -617,17 +617,17 @@ hint = """ [[exercises]] name = "box1" path = "exercises/standard_library_types/box1.rs" -mode = "compile" +mode = "test" hint = """ Step 1 The compiler's message should help: since we cannot store the value of the actual type when working with recursive types, we need to store a reference (pointer) to its value. -We should therefore place our `List` inside a `Box`. More details in the book here: +We should, therefore, place our `List` inside a `Box`. More details in the book here: https://doc.rust-lang.org/book/ch15-01-box.html#enabling-recursive-types-with-boxes Step 2 Creating an empty list should be fairly straightforward (hint: peek at the assertions). -For a non-empty list keep in mind that wee want to use our Cons "list builder". +For a non-empty list keep in mind that we want to use our Cons "list builder". Although the current list is one of integers (i32), feel free to change the definition and try other types! """