mirror of
https://github.com/rust-lang/rustlings.git
synced 2024-12-26 00:00:03 +03:00
structs2 solution
This commit is contained in:
parent
ef842d3a94
commit
1264510fc0
|
@ -1,5 +1,3 @@
|
||||||
// Address all the TODOs to make the tests pass!
|
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
struct Order {
|
struct Order {
|
||||||
name: String,
|
name: String,
|
||||||
|
@ -34,8 +32,10 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn your_order() {
|
fn your_order() {
|
||||||
let order_template = create_order_template();
|
let order_template = create_order_template();
|
||||||
|
|
||||||
// TODO: Create your own order using the update syntax and template above!
|
// TODO: Create your own order using the update syntax and template above!
|
||||||
// let your_order =
|
// let your_order =
|
||||||
|
|
||||||
assert_eq!(your_order.name, "Hacker in Rust");
|
assert_eq!(your_order.name, "Hacker in Rust");
|
||||||
assert_eq!(your_order.year, order_template.year);
|
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_phone, order_template.made_by_phone);
|
||||||
|
|
|
@ -421,7 +421,7 @@ Creating instances of structs is easy, all you need to do is assign some values
|
||||||
to its fields.
|
to its fields.
|
||||||
|
|
||||||
There are however some shortcuts that can be taken when instantiating structs.
|
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"""
|
https://doc.rust-lang.org/stable/book/ch05-01-defining-structs.html#creating-instances-from-other-instances-with-struct-update-syntax"""
|
||||||
|
|
||||||
[[exercises]]
|
[[exercises]]
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue