summaryrefslogtreecommitdiff
path: root/exercises/structs
diff options
context:
space:
mode:
authorAdam Brewer <adamhb321@gmail.com>2023-10-16 07:37:12 -0400
committerAdam Brewer <adamhb321@gmail.com>2023-10-16 07:37:12 -0400
commit64d95837e9813541cf5b357de13865ce687ae98d (patch)
treef022c5d5ba01128811c0b77618a7adb843ee876b /exercises/structs
parentc3941323e2c0b9ee286494327de92e00f23b9e3a (diff)
Update Exercises Directory Names to Reflect Order
Diffstat (limited to 'exercises/structs')
-rw-r--r--exercises/structs/README.md8
-rw-r--r--exercises/structs/structs1.rs51
-rw-r--r--exercises/structs/structs2.rs50
-rw-r--r--exercises/structs/structs3.rs88
4 files changed, 0 insertions, 197 deletions
diff --git a/exercises/structs/README.md b/exercises/structs/README.md
deleted file mode 100644
index 3fc1fdc..0000000
--- a/exercises/structs/README.md
+++ /dev/null
@@ -1,8 +0,0 @@
-# Structs
-
-Rust has three struct types: a classic C struct, a tuple struct, and a unit struct.
-
-## Further information
-
-- [Structures](https://doc.rust-lang.org/book/ch05-01-defining-structs.html)
-- [Method Syntax](https://doc.rust-lang.org/book/ch05-03-method-syntax.html)
diff --git a/exercises/structs/structs1.rs b/exercises/structs/structs1.rs
deleted file mode 100644
index 5fa5821..0000000
--- a/exercises/structs/structs1.rs
+++ /dev/null
@@ -1,51 +0,0 @@
-// structs1.rs
-//
-// Address all the TODOs to make the tests pass!
-//
-// Execute `rustlings hint structs1` or use the `hint` watch subcommand for a
-// hint.
-
-// I AM NOT DONE
-
-struct ColorClassicStruct {
- // TODO: Something goes here
-}
-
-struct ColorTupleStruct(/* TODO: Something goes here */);
-
-#[derive(Debug)]
-struct UnitLikeStruct;
-
-#[cfg(test)]
-mod tests {
- use super::*;
-
- #[test]
- fn classic_c_structs() {
- // TODO: Instantiate a classic c struct!
- // let green =
-
- assert_eq!(green.red, 0);
- assert_eq!(green.green, 255);
- assert_eq!(green.blue, 0);
- }
-
- #[test]
- fn tuple_structs() {
- // TODO: Instantiate a tuple struct!
- // let green =
-
- assert_eq!(green.0, 0);
- assert_eq!(green.1, 255);
- assert_eq!(green.2, 0);
- }
-
- #[test]
- fn unit_structs() {
- // TODO: Instantiate a unit-like struct!
- // let unit_like_struct =
- let message = format!("{:?}s are fun!", unit_like_struct);
-
- assert_eq!(message, "UnitLikeStructs are fun!");
- }
-}
diff --git a/exercises/structs/structs2.rs b/exercises/structs/structs2.rs
deleted file mode 100644
index 328567f..0000000
--- a/exercises/structs/structs2.rs
+++ /dev/null
@@ -1,50 +0,0 @@
-// structs2.rs
-//
-// Address all the TODOs to make the tests pass!
-//
-// Execute `rustlings hint structs2` or use the `hint` watch subcommand for a
-// hint.
-
-// I AM NOT DONE
-
-#[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,
- }
-}
-
-#[cfg(test)]
-mod tests {
- use super::*;
-
- #[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);
- 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);
- }
-}
diff --git a/exercises/structs/structs3.rs b/exercises/structs/structs3.rs
deleted file mode 100644
index 7cda5af..0000000
--- a/exercises/structs/structs3.rs
+++ /dev/null
@@ -1,88 +0,0 @@
-// structs3.rs
-//
-// Structs contain data, but can also have logic. In this exercise we have
-// defined the Package struct and we want to test some logic attached to it.
-// Make the code compile and the tests pass!
-//
-// Execute `rustlings hint structs3` or use the `hint` watch subcommand for a
-// hint.
-
-// I AM NOT DONE
-
-#[derive(Debug)]
-struct Package {
- sender_country: String,
- recipient_country: String,
- weight_in_grams: u32,
-}
-
-impl Package {
- fn new(sender_country: String, recipient_country: String, weight_in_grams: u32) -> Package {
- if weight_in_grams < 10 {
- // This is not how you should handle errors in Rust,
- // but we will learn about error handling later.
- panic!("Can not ship a package with weight below 10 grams.")
- } else {
- Package {
- sender_country,
- recipient_country,
- weight_in_grams,
- }
- }
- }
-
- fn is_international(&self) -> ??? {
- // Something goes here...
- }
-
- fn get_fees(&self, cents_per_gram: u32) -> ??? {
- // Something goes here...
- }
-}
-
-#[cfg(test)]
-mod tests {
- use super::*;
-
- #[test]
- #[should_panic]
- fn fail_creating_weightless_package() {
- let sender_country = String::from("Spain");
- let recipient_country = String::from("Austria");
-
- Package::new(sender_country, recipient_country, 5);
- }
-
- #[test]
- fn create_international_package() {
- let sender_country = String::from("Spain");
- let recipient_country = String::from("Russia");
-
- let package = Package::new(sender_country, recipient_country, 1200);
-
- assert!(package.is_international());
- }
-
- #[test]
- fn create_local_package() {
- let sender_country = String::from("Canada");
- let recipient_country = sender_country.clone();
-
- let package = Package::new(sender_country, recipient_country, 1200);
-
- assert!(!package.is_international());
- }
-
- #[test]
- fn calculate_transport_fees() {
- let sender_country = String::from("Spain");
- let recipient_country = String::from("Spain");
-
- let cents_per_gram = 3;
-
- let package = Package::new(sender_country, recipient_country, 1500);
-
- assert_eq!(package.get_fees(cents_per_gram), 4500);
- assert_eq!(package.get_fees(cents_per_gram * 2), 9000);
- }
-}