diff --git a/exercises/structs/README.md b/exercises/structs/README.md new file mode 100644 index 0000000..f400d09 --- /dev/null +++ b/exercises/structs/README.md @@ -0,0 +1,7 @@ +### Strings + +Rust has three struct types: a classic c struct, a tuple struct, and a unit struct. + +#### Book Sections + +- [Structures](https://doc.rust-lang.org/rust-by-example/custom_types/structs.html) diff --git a/exercises/structs/structs1.rs b/exercises/structs/structs1.rs new file mode 100644 index 0000000..e6c378f --- /dev/null +++ b/exercises/structs/structs1.rs @@ -0,0 +1,46 @@ +// structs1.rs +// Address all the TODOs to make the tests pass! + +struct ColorClassicStruct { + // TODO: Something goes here +} + +struct ColorTupleStruct(/* TODO: Something goes here */); + +struct ColorUnitStruct; + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn classic_c_structs() { + // TODO: Instantiate a classic c struct! + // let green = + + assert_eq!(green.name, "green"); + assert_eq!(green.hex, "#00FF00"); + } + + #[test] + fn tuple_structs() { + // TODO: Instantiate a tuple struct! + // For more fun, use the field initialization shorthand. + // let green = + + assert_eq!(green.0, "green"); + assert_eq!(green.1, "#00FF00"); + } + + #[test] + fn unit_structs() { + // TODO: Instantiate a unit struct! + // let green = + + if let ColorUnitStruct = green { + assert!(true); + } else { + assert!(false); + } + } +} diff --git a/info.toml b/info.toml index 207e8da..ac81975 100644 --- a/info.toml +++ b/info.toml @@ -76,6 +76,12 @@ mode = "compile" path = "exercises/primitive_types/primitive_types6.rs" mode = "compile" +# STRUCTS + +[[exercises]] +path = "exercises/structs/structs1.rs" +mode = "test" + # TESTS [[exercises]]