summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--exercises/07_structs/structs2.rs4
-rw-r--r--rustlings-macros/info.toml2
-rw-r--r--solutions/07_structs/structs2.rs52
3 files changed, 54 insertions, 4 deletions
diff --git a/exercises/07_structs/structs2.rs b/exercises/07_structs/structs2.rs
index 451dbe7..79141af 100644
--- a/exercises/07_structs/structs2.rs
+++ b/exercises/07_structs/structs2.rs
@@ -1,5 +1,3 @@
-// Address all the TODOs to make the tests pass!
-
#[derive(Debug)]
struct Order {
name: String,
@@ -34,8 +32,10 @@ mod tests {
#[test]
fn your_order() {
let order_template = create_order_template();
+
// TODO: Create your own order using the update syntax and template above!
// let your_order =
+
assert_eq!(your_order.name, "Hacker in Rust");
assert_eq!(your_order.year, order_template.year);
assert_eq!(your_order.made_by_phone, order_template.made_by_phone);
diff --git a/rustlings-macros/info.toml b/rustlings-macros/info.toml
index 81b9895..08bbd74 100644
--- a/rustlings-macros/info.toml
+++ b/rustlings-macros/info.toml
@@ -421,7 +421,7 @@ Creating instances of structs is easy, all you need to do is assign some values
to its fields.
There are however some shortcuts that can be taken when instantiating structs.
-Have a look in The Book, to find out more:
+Have a look in The Book to find out more:
https://doc.rust-lang.org/stable/book/ch05-01-defining-structs.html#creating-instances-from-other-instances-with-struct-update-syntax"""
[[exercises]]
diff --git a/solutions/07_structs/structs2.rs b/solutions/07_structs/structs2.rs
index 4e18198..589dd93 100644
--- a/solutions/07_structs/structs2.rs
+++ b/solutions/07_structs/structs2.rs
@@ -1 +1,51 @@
-// Solutions will be available before the stable release. Thank you for testing the beta version 🥰
+#[derive(Debug)]
+struct Order {
+ name: String,
+ year: u32,
+ made_by_phone: bool,
+ made_by_mobile: bool,
+ made_by_email: bool,
+ item_number: u32,
+ count: u32,
+}
+
+fn create_order_template() -> Order {
+ Order {
+ name: String::from("Bob"),
+ year: 2019,
+ made_by_phone: false,
+ made_by_mobile: false,
+ made_by_email: true,
+ item_number: 123,
+ count: 0,
+ }
+}
+
+fn main() {
+ // You can optionally experiment here.
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn your_order() {
+ let order_template = create_order_template();
+
+ let your_order = Order {
+ name: String::from("Hacker in Rust"),
+ count: 1,
+ // Struct update syntax
+ ..order_template
+ };
+
+ assert_eq!(your_order.name, "Hacker in Rust");
+ assert_eq!(your_order.year, order_template.year);
+ assert_eq!(your_order.made_by_phone, order_template.made_by_phone);
+ assert_eq!(your_order.made_by_mobile, order_template.made_by_mobile);
+ assert_eq!(your_order.made_by_email, order_template.made_by_email);
+ assert_eq!(your_order.item_number, order_template.item_number);
+ assert_eq!(your_order.count, 1);
+ }
+}