mirror of
https://github.com/notohh/rustlings.git
synced 2024-11-21 13:32:23 -05:00
structs1 solution
This commit is contained in:
parent
d768353806
commit
ef842d3a94
3 changed files with 65 additions and 19 deletions
|
@ -1,13 +1,12 @@
|
|||
// Address all the TODOs to make the tests pass!
|
||||
|
||||
struct ColorClassicStruct {
|
||||
// TODO: Something goes here
|
||||
struct ColorRegularStruct {
|
||||
// TODO: Add the fields that the test `regular_structs` expects.
|
||||
// What types should the fields have? What are the minimum and maximum values for RGB colors?
|
||||
}
|
||||
|
||||
struct ColorTupleStruct(/* TODO: Something goes here */);
|
||||
struct ColorTupleStruct(/* TODO: Add the fields that the test `tuple_structs` expects */);
|
||||
|
||||
#[derive(Debug)]
|
||||
struct UnitLikeStruct;
|
||||
struct UnitStruct;
|
||||
|
||||
fn main() {
|
||||
// You can optionally experiment here.
|
||||
|
@ -18,8 +17,8 @@ mod tests {
|
|||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn classic_c_structs() {
|
||||
// TODO: Instantiate a classic c struct!
|
||||
fn regular_structs() {
|
||||
// TODO: Instantiate a regular struct.
|
||||
// let green =
|
||||
|
||||
assert_eq!(green.red, 0);
|
||||
|
@ -29,7 +28,7 @@ mod tests {
|
|||
|
||||
#[test]
|
||||
fn tuple_structs() {
|
||||
// TODO: Instantiate a tuple struct!
|
||||
// TODO: Instantiate a tuple struct.
|
||||
// let green =
|
||||
|
||||
assert_eq!(green.0, 0);
|
||||
|
@ -39,10 +38,10 @@ mod tests {
|
|||
|
||||
#[test]
|
||||
fn unit_structs() {
|
||||
// TODO: Instantiate a unit-like struct!
|
||||
// let unit_like_struct =
|
||||
let message = format!("{:?}s are fun!", unit_like_struct);
|
||||
// TODO: Instantiate a unit struct.
|
||||
// let unit_struct =
|
||||
let message = format!("{unit_struct:?}s are fun!");
|
||||
|
||||
assert_eq!(message, "UnitLikeStructs are fun!");
|
||||
assert_eq!(message, "UnitStructs are fun!");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -402,15 +402,14 @@ hint = """
|
|||
Rust has more than one type of struct. Three actually, all variants are used to
|
||||
package related data together.
|
||||
|
||||
There are normal (or classic) structs. These are named collections of related
|
||||
data stored in fields.
|
||||
There are regular structs. These are named collections of related data stored in
|
||||
fields.
|
||||
|
||||
Tuple structs are basically just named tuples.
|
||||
|
||||
Finally, Unit-like structs. These don't have any fields and are useful for
|
||||
generics.
|
||||
Finally, unit structs. These don't have any fields and are useful for generics.
|
||||
|
||||
In this exercise you need to complete and implement one of each kind.
|
||||
In this exercise, you need to complete and implement one of each kind.
|
||||
Read more about structs in The Book:
|
||||
https://doc.rust-lang.org/book/ch05-01-defining-structs.html"""
|
||||
|
||||
|
|
|
@ -1 +1,49 @@
|
|||
// Solutions will be available before the stable release. Thank you for testing the beta version 🥰
|
||||
struct ColorRegularStruct {
|
||||
red: u8,
|
||||
green: u8,
|
||||
blue: u8,
|
||||
}
|
||||
|
||||
struct ColorTupleStruct(u8, u8, u8);
|
||||
|
||||
#[derive(Debug)]
|
||||
struct UnitStruct;
|
||||
|
||||
fn main() {
|
||||
// You can optionally experiment here.
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn regular_structs() {
|
||||
let green = ColorRegularStruct {
|
||||
red: 0,
|
||||
green: 255,
|
||||
blue: 0,
|
||||
};
|
||||
|
||||
assert_eq!(green.red, 0);
|
||||
assert_eq!(green.green, 255);
|
||||
assert_eq!(green.blue, 0);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn tuple_structs() {
|
||||
let green = ColorTupleStruct(0, 255, 0);
|
||||
|
||||
assert_eq!(green.0, 0);
|
||||
assert_eq!(green.1, 255);
|
||||
assert_eq!(green.2, 0);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn unit_structs() {
|
||||
let unit_struct = UnitStruct;
|
||||
let message = format!("{unit_struct:?}s are fun!");
|
||||
|
||||
assert_eq!(message, "UnitStructs are fun!");
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue