From a410f11cb1410c59871d8687929d80bb5581a07a Mon Sep 17 00:00:00 2001 From: Mark Gunn Date: Thu, 24 Aug 2023 22:52:59 +0100 Subject: [PATCH] my attempt at the rustlings quizes to learn rust, kept for reference --- Cargo.lock | 346 ++++++------------ exercises/README.md | 3 + exercises/clippy/clippy1.rs | 4 +- exercises/clippy/clippy2.rs | 4 +- exercises/clippy/clippy3.rs | 17 +- exercises/conversions/as_ref_mut.rs | 11 +- exercises/conversions/from_into.rs | 27 +- exercises/conversions/from_str.rs | 27 +- exercises/conversions/try_from_into.rs | 39 +- exercises/conversions/using_as.rs | 4 +- exercises/enums/enums1.rs | 7 +- exercises/enums/enums2.rs | 7 +- exercises/enums/enums3.rs | 23 +- exercises/error_handling/errors1.rs | 8 +- exercises/error_handling/errors2.rs | 4 +- exercises/error_handling/errors3.rs | 6 +- exercises/error_handling/errors4.rs | 9 +- exercises/error_handling/errors5.rs | 5 +- exercises/error_handling/errors6.rs | 13 +- exercises/functions/functions1.rs | 6 +- exercises/functions/functions2.rs | 4 +- exercises/functions/functions3.rs | 4 +- exercises/functions/functions4.rs | 4 +- exercises/functions/functions5.rs | 4 +- exercises/generics/generics1.rs | 4 +- exercises/generics/generics2.rs | 10 +- exercises/hashmaps/hashmaps1.rs | 8 +- exercises/hashmaps/hashmaps2.rs | 10 +- exercises/hashmaps/hashmaps3.rs | 29 +- exercises/if/if1.rs | 7 +- exercises/if/if2.rs | 6 +- exercises/if/if3.rs | 6 +- exercises/intro/intro1 | Bin 0 -> 482904 bytes exercises/intro/intro1.rs | 2 - exercises/intro/intro2.rs | 4 +- exercises/iterators/iterators1.rs | 10 +- exercises/iterators/iterators2.rs | 11 +- exercises/iterators/iterators3.rs | 26 +- exercises/iterators/iterators4.rs | 4 +- exercises/iterators/iterators5.rs | 12 +- exercises/lifetimes/lifetimes1.rs | 4 +- exercises/lifetimes/lifetimes2.rs | 4 +- exercises/lifetimes/lifetimes3.rs | 13 +- exercises/macros/macros1.rs | 4 +- exercises/macros/macros2.rs | 10 +- exercises/macros/macros3.rs | 3 +- exercises/macros/macros4.rs | 4 +- exercises/modules/modules1.rs | 4 +- exercises/modules/modules2.rs | 6 +- exercises/modules/modules3.rs | 4 +- exercises/move_semantics/move_semantics1.rs | 4 +- exercises/move_semantics/move_semantics2.rs | 4 +- exercises/move_semantics/move_semantics3.rs | 4 +- exercises/move_semantics/move_semantics4.rs | 8 +- exercises/move_semantics/move_semantics5.rs | 4 +- exercises/move_semantics/move_semantics6.rs | 12 +- exercises/options/options1.rs | 11 +- exercises/options/options2.rs | 10 +- exercises/options/options3.rs | 4 +- exercises/primitive_types/primitive_types1.rs | 4 +- exercises/primitive_types/primitive_types2.rs | 8 +- exercises/primitive_types/primitive_types3.rs | 4 +- exercises/primitive_types/primitive_types4.rs | 4 +- exercises/primitive_types/primitive_types5.rs | 4 +- exercises/primitive_types/primitive_types6.rs | 7 +- exercises/quiz1.rs | 10 +- exercises/quiz2.rs | 25 +- exercises/quiz3.rs | 16 +- exercises/smart_pointers/arc1.rs | 6 +- exercises/smart_pointers/box1.rs | 8 +- exercises/smart_pointers/cow1.rs | 11 +- exercises/smart_pointers/rc1.rs | 13 +- exercises/strings/strings1.rs | 4 +- exercises/strings/strings2.rs | 4 +- exercises/strings/strings3.rs | 20 +- exercises/strings/strings4.rs | 22 +- exercises/structs/structs1.rs | 18 +- exercises/structs/structs2.rs | 9 +- exercises/structs/structs3.rs | 10 +- exercises/tests/tests1.rs | 4 +- exercises/tests/tests2.rs | 4 +- exercises/tests/tests3.rs | 6 +- exercises/tests/tests4.rs | 14 +- exercises/threads/threads1.rs | 4 +- exercises/threads/threads2.rs | 15 +- exercises/threads/threads3.rs | 8 +- exercises/traits/traits1.rs | 6 +- exercises/traits/traits2.rs | 10 +- exercises/traits/traits3.rs | 6 +- exercises/traits/traits4.rs | 4 +- exercises/traits/traits5.rs | 4 +- exercises/variables/variables1.rs | 4 +- exercises/variables/variables2.rs | 4 +- exercises/variables/variables3.rs | 4 +- exercises/variables/variables4.rs | 4 +- exercises/variables/variables5.rs | 4 +- exercises/variables/variables6.rs | 4 +- exercises/vecs/vecs1.rs | 4 +- exercises/vecs/vecs2.rs | 12 +- 99 files changed, 536 insertions(+), 648 deletions(-) create mode 100755 exercises/intro/intro1 diff --git a/Cargo.lock b/Cargo.lock index a8268d90..32093e2d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,18 +4,18 @@ version = 3 [[package]] name = "aho-corasick" -version = "1.0.2" +version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" +checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" dependencies = [ "memchr", ] [[package]] name = "argh" -version = "0.1.10" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab257697eb9496bf75526f0217b5ed64636a9cfafa78b8365c71bd283fcef93e" +checksum = "2e7317a549bc17c5278d9e72bb6e62c6aa801ac2567048e39ebc1c194249323e" dependencies = [ "argh_derive", "argh_shared", @@ -23,21 +23,22 @@ dependencies = [ [[package]] name = "argh_derive" -version = "0.1.10" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b382dbd3288e053331f03399e1db106c9fb0d8562ad62cb04859ae926f324fa6" +checksum = "60949c42375351e9442e354434b0cba2ac402c1237edf673cac3a4bf983b8d3c" dependencies = [ "argh_shared", + "heck", "proc-macro2", "quote", - "syn 1.0.109", + "syn", ] [[package]] name = "argh_shared" -version = "0.1.10" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64cb94155d965e3d37ffbbe7cc5b82c3dd79dd33bd48e536f73d2cfb8d85506f" +checksum = "8a61eb019cb8f415d162cb9f12130ee6bbe9168b7d953c17f4ad049e4051ca00" [[package]] name = "assert_cmd" @@ -53,9 +54,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.1.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" [[package]] name = "bitflags" @@ -77,15 +78,17 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "console" -version = "0.15.7" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8" +checksum = "a28b32d32ca44b70c3e4acd7db1babf555fa026e385fb95f18028f88848b3c31" dependencies = [ "encode_unicode", - "lazy_static", "libc", + "once_cell", + "regex", + "terminal_size", "unicode-width", - "windows-sys 0.45.0", + "winapi 0.3.9", ] [[package]] @@ -114,14 +117,14 @@ dependencies = [ [[package]] name = "filetime" -version = "0.2.21" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cbc844cecaee9d4443931972e1289c8ff485cb4cc2767cb03ca139ed6885153" +checksum = "975ccf83d8d9d0d84682850a38c8169027be83368805971cc4f238c2b245bc98" dependencies = [ "cfg-if 1.0.0", "libc", "redox_syscall", - "windows-sys 0.48.0", + "winapi 0.3.9", ] [[package]] @@ -170,17 +173,26 @@ checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" [[package]] name = "glob" -version = "0.3.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" + +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] [[package]] name = "home" -version = "0.5.5" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" +checksum = "2456aef2e6b6a9784192ae780c0f15bc57df0e918585282325e8c8ac27737654" dependencies = [ - "windows-sys 0.48.0", + "winapi 0.3.9", ] [[package]] @@ -226,9 +238,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.8" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b02a5381cc465bd3041d84623d0fa3b66738b52b8e2fc3bab8ad63ab032f4a" +checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d" [[package]] name = "kernel32-sys" @@ -254,21 +266,24 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.147" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" +checksum = "a1fa8cddc8fbbee11227ef194b5317ed014b8acbf15139bd716a18ad3fe99ec5" [[package]] name = "log" -version = "0.4.19" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" +checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" +dependencies = [ + "cfg-if 1.0.0", +] [[package]] name = "memchr" -version = "2.5.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" [[package]] name = "mio" @@ -315,9 +330,9 @@ dependencies = [ [[package]] name = "net2" -version = "0.2.39" +version = "0.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b13b648036a2339d06de780866fbdfda0dde886de7b3af2ddeba8b14f4ee34ac" +checksum = "391630d12b68002ae1e25e8f974306474966550ad82dac6886fb8910c19568ae" dependencies = [ "cfg-if 0.1.10", "libc", @@ -350,9 +365,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.15" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" dependencies = [ "autocfg", ] @@ -363,6 +378,12 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" +[[package]] +name = "once_cell" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9" + [[package]] name = "predicates" version = "1.0.8" @@ -378,64 +399,52 @@ dependencies = [ [[package]] name = "predicates-core" -version = "1.0.6" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174" +checksum = "57e35a3326b75e49aa85f5dc6ec15b41108cf5aee58eabb1f274dd18b73c2451" [[package]] name = "predicates-tree" -version = "1.0.9" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecf" +checksum = "d7dd0fd014130206c9352efbdc92be592751b2b9274dff685348341082c6ea3d" dependencies = [ "predicates-core", - "termtree", + "treeline", ] [[package]] name = "proc-macro2" -version = "1.0.64" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78803b62cbf1f46fde80d7c0e803111524b9877184cfe7c3033659490ac7a7da" +checksum = "5c7ed8b8c7b886ea3ed7dde405212185f423ab44682667c8c6dd14aa1d9f6612" dependencies = [ - "unicode-ident", + "unicode-xid", ] [[package]] name = "quote" -version = "1.0.29" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105" +checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" dependencies = [ "proc-macro2", ] [[package]] name = "redox_syscall" -version = "0.2.16" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +checksum = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff" dependencies = [ "bitflags", ] [[package]] name = "regex" -version = "1.9.1" +version = "1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2eae68fc220f7cf2532e4494aded17545fce192d59cd996e0fe7887f4ceb575" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39354c10dd07468c2e73926b23bb9c2caca74c5501e38a35da70406f1d923310" +checksum = "1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286" dependencies = [ "aho-corasick", "memchr", @@ -444,9 +453,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.7.4" +version = "0.6.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" +checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" [[package]] name = "rustlings" @@ -468,9 +477,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.14" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe232bdf6be8c8de797b22184ee71118d63780ea42ac85b61d1baa6d3b782ae9" +checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" [[package]] name = "same-file" @@ -483,29 +492,29 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.171" +version = "1.0.129" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30e27d1e4fd7659406c492fd6cfaf2066ba8773de45ca75e855590f856dc34a9" +checksum = "d1f72836d2aa753853178eda473a3b9d8e4eefdaf20523b919677e6de489f8f1" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.171" +version = "1.0.129" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "389894603bd18c46fa56231694f8d827779c0951a667087194cf9de94ed24682" +checksum = "e57ae87ad533d9a56427558b516d0adac283614e347abf85b0dc0cbbf0a249f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.25", + "syn", ] [[package]] name = "serde_json" -version = "1.0.102" +version = "1.0.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5062a995d481b2308b6064e9af76011f2921c35f97b0468811ed9f6cd91dfed" +checksum = "9b7ce2b32a1aed03c558dc61a5cd328f15aff2dbc17daad8fb8af04d2100e15c" dependencies = [ "itoa", "ryu", @@ -514,69 +523,72 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.8" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" -dependencies = [ - "autocfg", -] +checksum = "c307a32c1c5c437f38c7fd45d753050587732ba8628319fbdf12a7e289ccc590" [[package]] name = "syn" -version = "1.0.109" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +checksum = "b7f58f7e8eaa0009c5fec437aabf511bd9933e4b2d7407bd05273c01a8906ea7" dependencies = [ "proc-macro2", "quote", - "unicode-ident", + "unicode-xid", ] [[package]] -name = "syn" -version = "2.0.25" +name = "terminal_size" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e3fc8c0c74267e2df136e5e5fb656a464158aa57624053375eb9c8c6e25ae2" +checksum = "633c1a546cee861a1a6d0dc69ebeca693bf4296661ba7852b9d21d159e0506df" dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", + "libc", + "winapi 0.3.9", ] -[[package]] -name = "termtree" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" - [[package]] name = "toml" -version = "0.5.11" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" dependencies = [ "serde", ] [[package]] -name = "unicode-ident" -version = "1.0.10" +name = "treeline" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22049a19f4a68748a168c0fc439f9516686aa045927ff767eca0a85101fb6e73" +checksum = "a7f741b240f1a48843f9b8e0444fb55fb2a4ff67293b50a9179dfd5ea67f8d41" + +[[package]] +name = "unicode-segmentation" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b" [[package]] name = "unicode-width" -version = "0.1.10" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" +checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" + +[[package]] +name = "unicode-xid" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" [[package]] name = "walkdir" -version = "2.3.3" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" +checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" dependencies = [ "same-file", + "winapi 0.3.9", "winapi-util", ] @@ -623,138 +635,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] - -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.1", -] - -[[package]] -name = "windows-targets" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - -[[package]] -name = "windows-targets" -version = "0.48.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" -dependencies = [ - "windows_aarch64_gnullvm 0.48.0", - "windows_aarch64_msvc 0.48.0", - "windows_i686_gnu 0.48.0", - "windows_i686_msvc 0.48.0", - "windows_x86_64_gnu 0.48.0", - "windows_x86_64_gnullvm 0.48.0", - "windows_x86_64_msvc 0.48.0", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" - -[[package]] -name = "windows_i686_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" - -[[package]] -name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" - [[package]] name = "ws2_32-sys" version = "0.2.1" diff --git a/exercises/README.md b/exercises/README.md index c7effa95..73431b79 100644 --- a/exercises/README.md +++ b/exercises/README.md @@ -25,3 +25,6 @@ | macros | §19.6 | | clippy | §21.4 | | conversions | n/a | +Pattern matching +OOP Project +multi-threaded web server project diff --git a/exercises/clippy/clippy1.rs b/exercises/clippy/clippy1.rs index 95c0141f..e2b1ebf4 100644 --- a/exercises/clippy/clippy1.rs +++ b/exercises/clippy/clippy1.rs @@ -9,12 +9,10 @@ // Execute `rustlings hint clippy1` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - use std::f32; fn main() { - let pi = 3.14f32; + let pi = f32::consts::PI; let radius = 5.00f32; let area = pi * f32::powi(radius, 2); diff --git a/exercises/clippy/clippy2.rs b/exercises/clippy/clippy2.rs index 9b87a0b7..79c5c9fe 100644 --- a/exercises/clippy/clippy2.rs +++ b/exercises/clippy/clippy2.rs @@ -3,12 +3,10 @@ // Execute `rustlings hint clippy2` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - fn main() { let mut res = 42; let option = Some(12); - for x in option { + if let Some(x) = option { res += x; } println!("{}", res); diff --git a/exercises/clippy/clippy3.rs b/exercises/clippy/clippy3.rs index 35021f84..27218bc8 100644 --- a/exercises/clippy/clippy3.rs +++ b/exercises/clippy/clippy3.rs @@ -4,28 +4,23 @@ // // Execute `rustlings hint clippy3` or use the `hint` watch subcommand for a hint. -// I AM NOT DONE - #[allow(unused_variables, unused_assignments)] fn main() { let my_option: Option<()> = None; if my_option.is_none() { - my_option.unwrap(); + panic!("Is none") } - let my_arr = &[ - -1, -2, -3 - -4, -5, -6 - ]; + let my_arr = &[-1, -2, -3, -4, -5, -6]; println!("My array! Here it is: {:?}", my_arr); - let my_empty_vec = vec![1, 2, 3, 4, 5].resize(0, 5); + let mut my_empty_vec = vec![1, 2, 3, 4, 5]; + my_empty_vec.clear(); println!("This Vec is empty, see? {:?}", my_empty_vec); let mut value_a = 45; - let mut value_b = 66; + let value_b = 66; // Let's swap these two! - value_a = value_b; - value_b = value_a; + let _ = std::mem::replace(&mut value_a, value_b); println!("value a: {}; value b: {}", value_a, value_b); } diff --git a/exercises/conversions/as_ref_mut.rs b/exercises/conversions/as_ref_mut.rs index 626a36c4..56df8b39 100644 --- a/exercises/conversions/as_ref_mut.rs +++ b/exercises/conversions/as_ref_mut.rs @@ -7,25 +7,24 @@ // Execute `rustlings hint as_ref_mut` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - // Obtain the number of bytes (not characters) in the given argument. // TODO: Add the AsRef trait appropriately as a trait bound. -fn byte_counter(arg: T) -> usize { +fn byte_counter(arg: impl AsRef) -> usize { arg.as_ref().as_bytes().len() } // Obtain the number of characters (not bytes) in the given argument. // TODO: Add the AsRef trait appropriately as a trait bound. -fn char_counter(arg: T) -> usize { +fn char_counter(arg: impl AsRef) -> usize { arg.as_ref().chars().count() } // Squares a number using as_mut(). // TODO: Add the appropriate trait bound. -fn num_sq(arg: &mut T) { +fn num_sq(mut arg: impl AsMut) { // TODO: Implement the function body. - ??? + let result: u32 = *arg.as_mut() * *arg.as_mut(); + *arg.as_mut() = result } #[cfg(test)] diff --git a/exercises/conversions/from_into.rs b/exercises/conversions/from_into.rs index 60911f3e..55ad3ad9 100644 --- a/exercises/conversions/from_into.rs +++ b/exercises/conversions/from_into.rs @@ -7,6 +7,8 @@ // Execute `rustlings hint from_into` or use the `hint` watch subcommand for a // hint. +use std::num::ParseIntError; + #[derive(Debug)] struct Person { name: String, @@ -40,10 +42,31 @@ impl Default for Person { // If while parsing the age, something goes wrong, then return the default of // Person Otherwise, then return an instantiated Person object with the results -// I AM NOT DONE - impl From<&str> for Person { fn from(s: &str) -> Person { + if s.len() > 0 { + let parts: Vec<&str> = s.split(",").collect(); + if parts.len() > 2 { + return Person::default(); + } + let age = parts.get(1); + let name = parts.get(0).unwrap(); + match age { + Some(ageString) if name.len() > 0 => { + let age: Result = ageString.parse(); + match age { + Ok(age) => Person { + name: name.to_string(), + age, + }, + _ => Person::default(), + } + } + _ => Person::default(), + } + } else { + Person::default() + } } } diff --git a/exercises/conversions/from_str.rs b/exercises/conversions/from_str.rs index 34472c32..90300a78 100644 --- a/exercises/conversions/from_str.rs +++ b/exercises/conversions/from_str.rs @@ -31,8 +31,6 @@ enum ParsePersonError { ParseInt(ParseIntError), } -// I AM NOT DONE - // Steps: // 1. If the length of the provided string is 0, an error should be returned // 2. Split the given string on the commas present in it @@ -52,6 +50,31 @@ enum ParsePersonError { impl FromStr for Person { type Err = ParsePersonError; fn from_str(s: &str) -> Result { + if s.len() == 0 { + return Err(Self::Err::Empty); + } else { + let parts: Vec<&str> = s.split(",").collect(); + if parts.len() != 2 { + return Err(Self::Err::BadLen); + } else { + let name; + let nameResult = parts.get(0); + let ageStr = parts.get(1); + if nameResult.is_none() { + return Err(Self::Err::NoName); + } else { + name = nameResult.unwrap().to_string(); + if name.len() < 1 { + return Err(Self::Err::NoName); + } + } + let age: Result = ageStr.unwrap().parse(); + match age { + Ok(age) => Ok(Person { name, age }), + Err(error) => Err(Self::Err::ParseInt(error)), + } + } + } } } diff --git a/exercises/conversions/try_from_into.rs b/exercises/conversions/try_from_into.rs index 32d6ef39..29fcda92 100644 --- a/exercises/conversions/try_from_into.rs +++ b/exercises/conversions/try_from_into.rs @@ -27,8 +27,6 @@ enum IntoColorError { IntConversion, } -// I AM NOT DONE - // Your task is to complete this implementation and return an Ok result of inner // type Color. You need to create an implementation for a tuple of three // integers, an array of three integers, and a slice of integers. @@ -41,6 +39,21 @@ enum IntoColorError { impl TryFrom<(i16, i16, i16)> for Color { type Error = IntoColorError; fn try_from(tuple: (i16, i16, i16)) -> Result { + return if tuple.0 > 255 + || tuple.0 < 0 + || tuple.1 > 255 + || tuple.1 < 0 + || tuple.2 > 255 + || tuple.2 < 0 + { + Err(IntoColorError::IntConversion) + } else { + Ok(Color { + red: tuple.0 as u8, + green: tuple.1 as u8, + blue: tuple.2 as u8, + }) + }; } } @@ -48,6 +61,17 @@ impl TryFrom<(i16, i16, i16)> for Color { impl TryFrom<[i16; 3]> for Color { type Error = IntoColorError; fn try_from(arr: [i16; 3]) -> Result { + match arr { + array if array.into_iter().any(|item| item < 0 || item > 255) => { + Err(IntoColorError::IntConversion) + } + [red, green, blue] => Ok(Color { + red: red as u8, + green: green as u8, + blue: blue as u8, + }), + _ => panic!("Would only happen if array is incorrect length"), + } } } @@ -55,6 +79,17 @@ impl TryFrom<[i16; 3]> for Color { impl TryFrom<&[i16]> for Color { type Error = IntoColorError; fn try_from(slice: &[i16]) -> Result { + match slice { + slice if slice.len() != 3 => Err(IntoColorError::BadLen), + slice if slice.into_iter().any(|x| x < &0 || x > &255) => { + Err(IntoColorError::IntConversion) + } + _ => Ok(Color { + red: slice[0] as u8, + green: slice[1] as u8, + blue: slice[2] as u8, + }), + } } } diff --git a/exercises/conversions/using_as.rs b/exercises/conversions/using_as.rs index 414cef3a..a9f1e449 100644 --- a/exercises/conversions/using_as.rs +++ b/exercises/conversions/using_as.rs @@ -10,11 +10,9 @@ // Execute `rustlings hint using_as` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - fn average(values: &[f64]) -> f64 { let total = values.iter().sum::(); - total / values.len() + total / values.len() as f64 } fn main() { diff --git a/exercises/enums/enums1.rs b/exercises/enums/enums1.rs index 25525b25..de9b7d4d 100644 --- a/exercises/enums/enums1.rs +++ b/exercises/enums/enums1.rs @@ -2,11 +2,12 @@ // // No hints this time! ;) -// I AM NOT DONE - #[derive(Debug)] enum Message { - // TODO: define a few types of messages as used below + Quit, + Echo, + Move, + ChangeColor, } fn main() { diff --git a/exercises/enums/enums2.rs b/exercises/enums/enums2.rs index df93fe0f..e47522e0 100644 --- a/exercises/enums/enums2.rs +++ b/exercises/enums/enums2.rs @@ -3,11 +3,12 @@ // Execute `rustlings hint enums2` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - #[derive(Debug)] enum Message { - // TODO: define the different variants used below + Move { x: i32, y: i32 }, + Echo(String), + ChangeColor(i32, i32, i32), + Quit, } impl Message { diff --git a/exercises/enums/enums3.rs b/exercises/enums/enums3.rs index 5d284417..9a27aae6 100644 --- a/exercises/enums/enums3.rs +++ b/exercises/enums/enums3.rs @@ -5,10 +5,11 @@ // Execute `rustlings hint enums3` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - enum Message { - // TODO: implement the message variant types based on their usage below + ChangeColor(u8, u8, u8), + Echo(String), + Move(Point), + Quit, } struct Point { @@ -20,7 +21,7 @@ struct State { color: (u8, u8, u8), position: Point, quit: bool, - message: String + message: String, } impl State { @@ -32,17 +33,21 @@ impl State { self.quit = true; } - fn echo(&mut self, s: String) { self.message = s } + fn echo(&mut self, s: String) { + self.message = s + } fn move_position(&mut self, p: Point) { self.position = p; } fn process(&mut self, message: Message) { - // TODO: create a match expression to process the different message - // variants - // Remember: When passing a tuple as a function argument, you'll need - // extra parentheses: fn function((t, u, p, l, e)) + match message { + Message::ChangeColor(x, y, z) => self.change_color((x, y, z)), + Message::Quit => self.quit(), + Message::Echo(msg) => self.echo(msg), + Message::Move(point) => self.move_position(point), + } } } diff --git a/exercises/error_handling/errors1.rs b/exercises/error_handling/errors1.rs index 13d2724c..96a3275c 100644 --- a/exercises/error_handling/errors1.rs +++ b/exercises/error_handling/errors1.rs @@ -9,14 +9,12 @@ // Execute `rustlings hint errors1` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - -pub fn generate_nametag_text(name: String) -> Option { +pub fn generate_nametag_text(name: String) -> Result { if name.is_empty() { // Empty names aren't allowed. - None + Err("`name` was empty; it must be nonempty.".to_string()) } else { - Some(format!("Hi! My name is {}", name)) + Ok(format!("Hi! My name is {}", name)) } } diff --git a/exercises/error_handling/errors2.rs b/exercises/error_handling/errors2.rs index d4a5477b..27683300 100644 --- a/exercises/error_handling/errors2.rs +++ b/exercises/error_handling/errors2.rs @@ -19,14 +19,12 @@ // Execute `rustlings hint errors2` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - use std::num::ParseIntError; pub fn total_cost(item_quantity: &str) -> Result { let processing_fee = 1; let cost_per_item = 5; - let qty = item_quantity.parse::(); + let qty = item_quantity.parse::()?; Ok(qty * cost_per_item + processing_fee) } diff --git a/exercises/error_handling/errors3.rs b/exercises/error_handling/errors3.rs index d42d3b17..1c6e57b2 100644 --- a/exercises/error_handling/errors3.rs +++ b/exercises/error_handling/errors3.rs @@ -7,11 +7,10 @@ // Execute `rustlings hint errors3` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - +use std::error::Error; use std::num::ParseIntError; -fn main() { +fn main() -> Result<(), Box> { let mut tokens = 100; let pretend_user_input = "8"; @@ -23,6 +22,7 @@ fn main() { tokens -= cost; println!("You now have {} tokens.", tokens); } + Ok(()) } pub fn total_cost(item_quantity: &str) -> Result { diff --git a/exercises/error_handling/errors4.rs b/exercises/error_handling/errors4.rs index d6d6fcb6..a2ebf526 100644 --- a/exercises/error_handling/errors4.rs +++ b/exercises/error_handling/errors4.rs @@ -3,8 +3,6 @@ // Execute `rustlings hint errors4` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - #[derive(PartialEq, Debug)] struct PositiveNonzeroInteger(u64); @@ -16,8 +14,11 @@ enum CreationError { impl PositiveNonzeroInteger { fn new(value: i64) -> Result { - // Hmm... Why is this always returning an Ok value? - Ok(PositiveNonzeroInteger(value as u64)) + match value { + val if val > 0 => Ok(PositiveNonzeroInteger(val as u64)), + val if val == 0 => Err(CreationError::Zero), + _ => Err(CreationError::Negative), + } } } diff --git a/exercises/error_handling/errors5.rs b/exercises/error_handling/errors5.rs index 92461a7e..e4363f84 100644 --- a/exercises/error_handling/errors5.rs +++ b/exercises/error_handling/errors5.rs @@ -22,14 +22,13 @@ // Execute `rustlings hint errors5` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - use std::error; +use std::error::Error; use std::fmt; use std::num::ParseIntError; // TODO: update the return type of `main()` to make this compile. -fn main() -> Result<(), Box> { +fn main() -> Result<(), Box> { let pretend_user_input = "42"; let x: i64 = pretend_user_input.parse()?; println!("output={:?}", PositiveNonzeroInteger::new(x)?); diff --git a/exercises/error_handling/errors6.rs b/exercises/error_handling/errors6.rs index aaf0948e..0167b9ef 100644 --- a/exercises/error_handling/errors6.rs +++ b/exercises/error_handling/errors6.rs @@ -9,8 +9,6 @@ // Execute `rustlings hint errors6` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - use std::num::ParseIntError; // This is a custom error type that we will be using in `parse_pos_nonzero()`. @@ -24,14 +22,19 @@ impl ParsePosNonzeroError { fn from_creation(err: CreationError) -> ParsePosNonzeroError { ParsePosNonzeroError::Creation(err) } - // TODO: add another error conversion function here. - // fn from_parseint... + + fn from_parseint(err: ParseIntError) -> ParsePosNonzeroError { + ParsePosNonzeroError::ParseInt(err) + } } fn parse_pos_nonzero(s: &str) -> Result { // TODO: change this to return an appropriate error instead of panicking // when `parse()` returns an error. - let x: i64 = s.parse().unwrap(); + let x: i64 = match s.parse() { + Ok(s) => s, + Err(err) => return Err(ParsePosNonzeroError::ParseInt(err)), + }; PositiveNonzeroInteger::new(x).map_err(ParsePosNonzeroError::from_creation) } diff --git a/exercises/functions/functions1.rs b/exercises/functions/functions1.rs index 40ed9a07..93249e11 100644 --- a/exercises/functions/functions1.rs +++ b/exercises/functions/functions1.rs @@ -3,8 +3,10 @@ // Execute `rustlings hint functions1` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - fn main() { call_me(); } + +fn call_me() { + println!("I was called"); +} diff --git a/exercises/functions/functions2.rs b/exercises/functions/functions2.rs index 5154f34d..7af8196a 100644 --- a/exercises/functions/functions2.rs +++ b/exercises/functions/functions2.rs @@ -3,13 +3,11 @@ // Execute `rustlings hint functions2` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - fn main() { call_me(3); } -fn call_me(num:) { +fn call_me(num: i32) { for i in 0..num { println!("Ring! Call number {}", i + 1); } diff --git a/exercises/functions/functions3.rs b/exercises/functions/functions3.rs index 74f44d6d..7820f25c 100644 --- a/exercises/functions/functions3.rs +++ b/exercises/functions/functions3.rs @@ -3,10 +3,8 @@ // Execute `rustlings hint functions3` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - fn main() { - call_me(); + call_me(5); } fn call_me(num: u32) { diff --git a/exercises/functions/functions4.rs b/exercises/functions/functions4.rs index 77c4b2aa..aec6cf35 100644 --- a/exercises/functions/functions4.rs +++ b/exercises/functions/functions4.rs @@ -8,14 +8,12 @@ // Execute `rustlings hint functions4` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - fn main() { let original_price = 51; println!("Your sale price is {}", sale_price(original_price)); } -fn sale_price(price: i32) -> { +fn sale_price(price: i32) -> i32 { if is_even(price) { price - 10 } else { diff --git a/exercises/functions/functions5.rs b/exercises/functions/functions5.rs index f1b63f48..c51bea9f 100644 --- a/exercises/functions/functions5.rs +++ b/exercises/functions/functions5.rs @@ -3,13 +3,11 @@ // Execute `rustlings hint functions5` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - fn main() { let answer = square(3); println!("The square of 3 is {}", answer); } fn square(num: i32) -> i32 { - num * num; + num * num } diff --git a/exercises/generics/generics1.rs b/exercises/generics/generics1.rs index 35c1d2fe..1f4fa4ac 100644 --- a/exercises/generics/generics1.rs +++ b/exercises/generics/generics1.rs @@ -6,9 +6,7 @@ // Execute `rustlings hint generics1` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - fn main() { - let mut shopping_list: Vec = Vec::new(); + let mut shopping_list: Vec<&str> = Vec::new(); shopping_list.push("milk"); } diff --git a/exercises/generics/generics2.rs b/exercises/generics/generics2.rs index 074cd938..b0cc651f 100644 --- a/exercises/generics/generics2.rs +++ b/exercises/generics/generics2.rs @@ -6,14 +6,12 @@ // Execute `rustlings hint generics2` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - -struct Wrapper { - value: u32, +struct Wrapper { + value: T, } -impl Wrapper { - pub fn new(value: u32) -> Self { +impl Wrapper { + pub fn new(value: T) -> Self { Wrapper { value } } } diff --git a/exercises/hashmaps/hashmaps1.rs b/exercises/hashmaps/hashmaps1.rs index 80829eaa..d1e2d394 100644 --- a/exercises/hashmaps/hashmaps1.rs +++ b/exercises/hashmaps/hashmaps1.rs @@ -11,17 +11,15 @@ // Execute `rustlings hint hashmaps1` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - use std::collections::HashMap; fn fruit_basket() -> HashMap { - let mut basket = // TODO: declare your hash map here. + let mut basket = HashMap::new(); // Two bananas are already given for you :) basket.insert(String::from("banana"), 2); - - // TODO: Put more fruits in your basket here. + basket.insert(String::from("apple"), 5); + basket.insert(String::from("plum"), 12); basket } diff --git a/exercises/hashmaps/hashmaps2.rs b/exercises/hashmaps/hashmaps2.rs index a5925690..64f10725 100644 --- a/exercises/hashmaps/hashmaps2.rs +++ b/exercises/hashmaps/hashmaps2.rs @@ -14,8 +14,6 @@ // Execute `rustlings hint hashmaps2` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - use std::collections::HashMap; #[derive(Hash, PartialEq, Eq)] @@ -37,9 +35,9 @@ fn fruit_basket(basket: &mut HashMap) { ]; for fruit in fruit_kinds { - // TODO: Insert new fruits if they are not already present in the - // basket. Note that you are not allowed to put any type of fruit that's - // already present! + if !basket.contains_key(&fruit) { + basket.insert(fruit, 1); + } } } @@ -81,7 +79,7 @@ mod tests { let count = basket.values().sum::(); assert!(count > 11); } - + #[test] fn all_fruit_types_in_basket() { let mut basket = get_fruit_basket(); diff --git a/exercises/hashmaps/hashmaps3.rs b/exercises/hashmaps/hashmaps3.rs index 08e977c3..8d0f3b0a 100644 --- a/exercises/hashmaps/hashmaps3.rs +++ b/exercises/hashmaps/hashmaps3.rs @@ -14,8 +14,6 @@ // Execute `rustlings hint hashmaps3` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - use std::collections::HashMap; // A structure to store the goal details of a team. @@ -34,11 +32,28 @@ fn build_scores_table(results: String) -> HashMap { let team_1_score: u8 = v[2].parse().unwrap(); let team_2_name = v[1].to_string(); let team_2_score: u8 = v[3].parse().unwrap(); - // TODO: Populate the scores table with details extracted from the - // current line. Keep in mind that goals scored by team_1 - // will be the number of goals conceded from team_2, and similarly - // goals scored by team_2 will be the number of goals conceded by - // team_1. + let team1 = Team { + goals_scored: 0, + goals_conceded: 0, + }; + let team2 = Team { + goals_scored: 0, + goals_conceded: 0, + }; + let Team { + goals_scored: team_1_total_goals, + goals_conceded: team1_total_concedes, + .. + } = scores.entry(team_1_name).or_insert(team1); + *team_1_total_goals += team_1_score; + *team1_total_concedes += team_2_score; + let Team { + goals_scored: team_2_total_score, + goals_conceded: team_2_total_concedes, + .. + } = scores.entry(team_2_name).or_insert(team2); + *team_2_total_score += team_2_score; + *team_2_total_concedes += team_1_score; } scores } diff --git a/exercises/if/if1.rs b/exercises/if/if1.rs index d8108a0f..cb3b2e38 100644 --- a/exercises/if/if1.rs +++ b/exercises/if/if1.rs @@ -2,13 +2,16 @@ // // Execute `rustlings hint if1` or use the `hint` watch subcommand for a hint. -// I AM NOT DONE - pub fn bigger(a: i32, b: i32) -> i32 { // Complete this function to return the bigger number! // Do not use: // - another function call // - additional variables + if a > b { + a + } else { + b + } } // Don't mind this for now :) diff --git a/exercises/if/if2.rs b/exercises/if/if2.rs index f512f13f..9ae278f2 100644 --- a/exercises/if/if2.rs +++ b/exercises/if/if2.rs @@ -5,13 +5,13 @@ // // Execute `rustlings hint if2` or use the `hint` watch subcommand for a hint. -// I AM NOT DONE - pub fn foo_if_fizz(fizzish: &str) -> &str { if fizzish == "fizz" { "foo" + } else if fizzish == "fuzz" { + "bar" } else { - 1 + "baz" } } diff --git a/exercises/if/if3.rs b/exercises/if/if3.rs index 73a7025b..32e03b0e 100644 --- a/exercises/if/if3.rs +++ b/exercises/if/if3.rs @@ -2,17 +2,15 @@ // // Execute `rustlings hint if3` or use the `hint` watch subcommand for a hint. -// I AM NOT DONE - pub fn animal_habitat(animal: &str) -> &'static str { let identifier = if animal == "crab" { 1 } else if animal == "gopher" { - 2.0 + 2 } else if animal == "snake" { 3 } else { - "Unknown" + 0 }; // DO NOT CHANGE THIS STATEMENT BELOW diff --git a/exercises/intro/intro1 b/exercises/intro/intro1 new file mode 100755 index 0000000000000000000000000000000000000000..60d87f32f62af905072e79ebca624dce2dbb4aba GIT binary patch literal 482904 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

sYUZD*>G9< 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

eMf5l@52Rta5Z%nw*~h9;rrb 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 literal 0 HcmV?d00001 diff --git a/exercises/intro/intro1.rs b/exercises/intro/intro1.rs index 37fa0112..143c0a3d 100644 --- a/exercises/intro/intro1.rs +++ b/exercises/intro/intro1.rs @@ -13,8 +13,6 @@ // Execute `rustlings hint intro1` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - fn main() { println!("Hello and"); println!(r#" welcome to... "#); diff --git a/exercises/intro/intro2.rs b/exercises/intro/intro2.rs index 990b20f0..8161d1dc 100644 --- a/exercises/intro/intro2.rs +++ b/exercises/intro/intro2.rs @@ -5,8 +5,6 @@ // Execute `rustlings hint intro2` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - fn main() { - println!("Hello {}!"); + println!("Hello {}!", "world"); } diff --git a/exercises/iterators/iterators1.rs b/exercises/iterators/iterators1.rs index b3f698be..8337c0ef 100644 --- a/exercises/iterators/iterators1.rs +++ b/exercises/iterators/iterators1.rs @@ -9,17 +9,15 @@ // Execute `rustlings hint iterators1` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - fn main() { let my_fav_fruits = vec!["banana", "custard apple", "avocado", "peach", "raspberry"]; - let mut my_iterable_fav_fruits = ???; // TODO: Step 1 + let mut my_iterable_fav_fruits = my_fav_fruits.iter(); // TODO: Step 1 assert_eq!(my_iterable_fav_fruits.next(), Some(&"banana")); - assert_eq!(my_iterable_fav_fruits.next(), ???); // TODO: Step 2 + assert_eq!(my_iterable_fav_fruits.next(), Some(&"custard apple")); // TODO: Step 2 assert_eq!(my_iterable_fav_fruits.next(), Some(&"avocado")); - assert_eq!(my_iterable_fav_fruits.next(), ???); // TODO: Step 3 + assert_eq!(my_iterable_fav_fruits.next(), Some(&"peach")); // TODO: Step 3 assert_eq!(my_iterable_fav_fruits.next(), Some(&"raspberry")); - assert_eq!(my_iterable_fav_fruits.next(), ???); // TODO: Step 4 + assert_eq!(my_iterable_fav_fruits.next(), None); // TODO: Step 4 } diff --git a/exercises/iterators/iterators2.rs b/exercises/iterators/iterators2.rs index dda82a08..c921f8f4 100644 --- a/exercises/iterators/iterators2.rs +++ b/exercises/iterators/iterators2.rs @@ -6,8 +6,6 @@ // Execute `rustlings hint iterators2` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - // Step 1. // Complete the `capitalize_first` function. // "hello" -> "Hello" @@ -15,7 +13,7 @@ pub fn capitalize_first(input: &str) -> String { let mut c = input.chars(); match c.next() { None => String::new(), - Some(first) => ???, + Some(first) => String::from(first.to_string().to_uppercase()) + &input[1..], } } @@ -24,7 +22,7 @@ pub fn capitalize_first(input: &str) -> String { // Return a vector of strings. // ["hello", "world"] -> ["Hello", "World"] pub fn capitalize_words_vector(words: &[&str]) -> Vec { - vec![] + words.iter().map(|word| capitalize_first(word)).collect() } // Step 3. @@ -32,7 +30,10 @@ pub fn capitalize_words_vector(words: &[&str]) -> Vec { // Return a single string. // ["hello", " ", "world"] -> "Hello World" pub fn capitalize_words_string(words: &[&str]) -> String { - String::new() + words + .iter() + .map(|word| capitalize_first(word)) + .fold(String::new(), |acc, word| acc + &word) } #[cfg(test)] diff --git a/exercises/iterators/iterators3.rs b/exercises/iterators/iterators3.rs index 29fa23a3..cb3ccb23 100644 --- a/exercises/iterators/iterators3.rs +++ b/exercises/iterators/iterators3.rs @@ -9,8 +9,6 @@ // Execute `rustlings hint iterators3` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - #[derive(Debug, PartialEq, Eq)] pub enum DivisionError { NotDivisible(NotDivisibleError), @@ -26,23 +24,37 @@ pub struct NotDivisibleError { // Calculate `a` divided by `b` if `a` is evenly divisible by `b`. // Otherwise, return a suitable error. pub fn divide(a: i32, b: i32) -> Result { - todo!(); + if b == 0 { + Err(DivisionError::DivideByZero) + } else if a % b == 0 { + Ok(a / b) + } else { + Err(DivisionError::NotDivisible(NotDivisibleError { + dividend: a, + divisor: b, + })) + } } // Complete the function and return a value of the correct type so the test // passes. // Desired output: Ok([1, 11, 1426, 3]) -fn result_with_list() -> () { +fn result_with_list() -> Result, DivisionError> { let numbers = vec![27, 297, 38502, 81]; - let division_results = numbers.into_iter().map(|n| divide(n, 27)); + let result = numbers + .iter() + .map(|number| divide(*number, 27)) + .map(|n| n.unwrap()) + .collect(); + Ok(result) } // Complete the function and return a value of the correct type so the test // passes. // Desired output: [Ok(1), Ok(11), Ok(1426), Ok(3)] -fn list_of_results() -> () { +fn list_of_results() -> Vec> { let numbers = vec![27, 297, 38502, 81]; - let division_results = numbers.into_iter().map(|n| divide(n, 27)); + numbers.into_iter().map(|n| divide(n, 27)).collect() } #[cfg(test)] diff --git a/exercises/iterators/iterators4.rs b/exercises/iterators/iterators4.rs index 79e1692b..de3345b3 100644 --- a/exercises/iterators/iterators4.rs +++ b/exercises/iterators/iterators4.rs @@ -3,9 +3,9 @@ // Execute `rustlings hint iterators4` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - pub fn factorial(num: u64) -> u64 { + let range = 1..=num; + range.product() // Complete this function to return the factorial of num // Do not use: // - return diff --git a/exercises/iterators/iterators5.rs b/exercises/iterators/iterators5.rs index a062ee4c..cf1bf72b 100644 --- a/exercises/iterators/iterators5.rs +++ b/exercises/iterators/iterators5.rs @@ -11,8 +11,6 @@ // Execute `rustlings hint iterators5` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - use std::collections::HashMap; #[derive(Clone, Copy, PartialEq, Eq)] @@ -33,9 +31,7 @@ fn count_for(map: &HashMap, value: Progress) -> usize { } fn count_iterator(map: &HashMap, value: Progress) -> usize { - // map is a hashmap with String keys and Progress values. - // map = { "variables1": Complete, "from_str": None, ... } - todo!(); + map.iter().filter(|entry| entry.1 == &value).count() } fn count_collection_for(collection: &[HashMap], value: Progress) -> usize { @@ -51,10 +47,14 @@ fn count_collection_for(collection: &[HashMap], value: Progres } fn count_collection_iterator(collection: &[HashMap], value: Progress) -> usize { + collection + .iter() + .flatten() + .filter(|entry| entry.1 == &value) + .count() // collection is a slice of hashmaps. // collection = [{ "variables1": Complete, "from_str": None, ... }, // { "variables2": Complete, ... }, ... ] - todo!(); } #[cfg(test)] diff --git a/exercises/lifetimes/lifetimes1.rs b/exercises/lifetimes/lifetimes1.rs index 87bde490..5fe45ae0 100644 --- a/exercises/lifetimes/lifetimes1.rs +++ b/exercises/lifetimes/lifetimes1.rs @@ -8,9 +8,7 @@ // Execute `rustlings hint lifetimes1` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - -fn longest(x: &str, y: &str) -> &str { +fn longest<'a>(x: &'a str, y: &'a str) -> &'a str { if x.len() > y.len() { x } else { diff --git a/exercises/lifetimes/lifetimes2.rs b/exercises/lifetimes/lifetimes2.rs index 4f3d8c18..5df1e5b5 100644 --- a/exercises/lifetimes/lifetimes2.rs +++ b/exercises/lifetimes/lifetimes2.rs @@ -6,8 +6,6 @@ // Execute `rustlings hint lifetimes2` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - fn longest<'a>(x: &'a str, y: &'a str) -> &'a str { if x.len() > y.len() { x @@ -22,6 +20,6 @@ fn main() { { let string2 = String::from("xyz"); result = longest(string1.as_str(), string2.as_str()); + println!("The longest string is '{}'", result); } - println!("The longest string is '{}'", result); } diff --git a/exercises/lifetimes/lifetimes3.rs b/exercises/lifetimes/lifetimes3.rs index 9c59f9c0..88d35071 100644 --- a/exercises/lifetimes/lifetimes3.rs +++ b/exercises/lifetimes/lifetimes3.rs @@ -5,17 +5,18 @@ // Execute `rustlings hint lifetimes3` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - -struct Book { - author: &str, - title: &str, +struct Book<'a> { + author: &'a str, + title: &'a str, } fn main() { let name = String::from("Jill Smith"); let title = String::from("Fish Flying"); - let book = Book { author: &name, title: &title }; + let book = Book { + author: &name, + title: &title, + }; println!("{} by {}", book.title, book.author); } diff --git a/exercises/macros/macros1.rs b/exercises/macros/macros1.rs index 678de6ee..9d0edee3 100644 --- a/exercises/macros/macros1.rs +++ b/exercises/macros/macros1.rs @@ -3,8 +3,6 @@ // Execute `rustlings hint macros1` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - macro_rules! my_macro { () => { println!("Check out my macro!"); @@ -12,5 +10,5 @@ macro_rules! my_macro { } fn main() { - my_macro(); + my_macro!(); } diff --git a/exercises/macros/macros2.rs b/exercises/macros/macros2.rs index 788fc16a..a87be198 100644 --- a/exercises/macros/macros2.rs +++ b/exercises/macros/macros2.rs @@ -3,14 +3,12 @@ // Execute `rustlings hint macros2` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - -fn main() { - my_macro!(); -} - macro_rules! my_macro { () => { println!("Check out my macro!"); }; } + +fn main() { + my_macro!(); +} diff --git a/exercises/macros/macros3.rs b/exercises/macros/macros3.rs index b795c149..e1b872f4 100644 --- a/exercises/macros/macros3.rs +++ b/exercises/macros/macros3.rs @@ -5,9 +5,8 @@ // Execute `rustlings hint macros3` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - mod macros { + #[macro_export] macro_rules! my_macro { () => { println!("Check out my macro!"); diff --git a/exercises/macros/macros4.rs b/exercises/macros/macros4.rs index 71b45a09..45d80235 100644 --- a/exercises/macros/macros4.rs +++ b/exercises/macros/macros4.rs @@ -3,13 +3,11 @@ // Execute `rustlings hint macros4` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - #[rustfmt::skip] macro_rules! my_macro { () => { println!("Check out my macro!"); - } + }; ($val:expr) => { println!("Look at this other macro: {}", $val); } diff --git a/exercises/modules/modules1.rs b/exercises/modules/modules1.rs index 9eb5a48b..a26f5c45 100644 --- a/exercises/modules/modules1.rs +++ b/exercises/modules/modules1.rs @@ -3,15 +3,13 @@ // Execute `rustlings hint modules1` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - mod sausage_factory { // Don't let anybody outside of this module see this! fn get_secret_recipe() -> String { String::from("Ginger") } - fn make_sausage() { + pub fn make_sausage() { get_secret_recipe(); println!("sausage!"); } diff --git a/exercises/modules/modules2.rs b/exercises/modules/modules2.rs index 04154543..f5bd7cc0 100644 --- a/exercises/modules/modules2.rs +++ b/exercises/modules/modules2.rs @@ -7,12 +7,10 @@ // Execute `rustlings hint modules2` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - mod delicious_snacks { // TODO: Fix these use statements - use self::fruits::PEAR as ??? - use self::veggies::CUCUMBER as ??? + pub use self::fruits::PEAR as fruit; + pub use self::veggies::CUCUMBER as veggie; mod fruits { pub const PEAR: &'static str = "Pear"; diff --git a/exercises/modules/modules3.rs b/exercises/modules/modules3.rs index f2bb0503..d1e3ab4f 100644 --- a/exercises/modules/modules3.rs +++ b/exercises/modules/modules3.rs @@ -8,10 +8,8 @@ // Execute `rustlings hint modules3` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - // TODO: Complete this use statement -use ??? +use std::time::{SystemTime, UNIX_EPOCH}; fn main() { match SystemTime::now().duration_since(UNIX_EPOCH) { diff --git a/exercises/move_semantics/move_semantics1.rs b/exercises/move_semantics/move_semantics1.rs index 710d20d8..eac7d31b 100644 --- a/exercises/move_semantics/move_semantics1.rs +++ b/exercises/move_semantics/move_semantics1.rs @@ -3,12 +3,10 @@ // Execute `rustlings hint move_semantics1` or use the `hint` watch subcommand // for a hint. -// I AM NOT DONE - fn main() { let vec0 = Vec::new(); - let vec1 = fill_vec(vec0); + let mut vec1 = fill_vec(vec0); println!("{} has length {} content `{:?}`", "vec1", vec1.len(), vec1); diff --git a/exercises/move_semantics/move_semantics2.rs b/exercises/move_semantics/move_semantics2.rs index 72d37fa4..c7b0d9f3 100644 --- a/exercises/move_semantics/move_semantics2.rs +++ b/exercises/move_semantics/move_semantics2.rs @@ -7,12 +7,10 @@ // Execute `rustlings hint move_semantics2` or use the `hint` watch subcommand // for a hint. -// I AM NOT DONE - fn main() { let vec0 = Vec::new(); - let mut vec1 = fill_vec(vec0); + let mut vec1 = fill_vec(vec0.clone()); println!("{} has length {}, with contents: `{:?}`", "vec0", vec0.len(), vec0); diff --git a/exercises/move_semantics/move_semantics3.rs b/exercises/move_semantics/move_semantics3.rs index ea214934..7da54e38 100644 --- a/exercises/move_semantics/move_semantics3.rs +++ b/exercises/move_semantics/move_semantics3.rs @@ -6,8 +6,6 @@ // Execute `rustlings hint move_semantics3` or use the `hint` watch subcommand // for a hint. -// I AM NOT DONE - fn main() { let vec0 = Vec::new(); @@ -20,7 +18,7 @@ fn main() { println!("{} has length {} content `{:?}`", "vec1", vec1.len(), vec1); } -fn fill_vec(vec: Vec) -> Vec { +fn fill_vec(mut vec: Vec) -> Vec { vec.push(22); vec.push(44); vec.push(66); diff --git a/exercises/move_semantics/move_semantics4.rs b/exercises/move_semantics/move_semantics4.rs index 75a3b6bd..12d47f99 100644 --- a/exercises/move_semantics/move_semantics4.rs +++ b/exercises/move_semantics/move_semantics4.rs @@ -7,12 +7,8 @@ // Execute `rustlings hint move_semantics4` or use the `hint` watch subcommand // for a hint. -// I AM NOT DONE - fn main() { - let vec0 = Vec::new(); - - let mut vec1 = fill_vec(vec0); + let mut vec1 = fill_vec(); println!("{} has length {} content `{:?}`", "vec1", vec1.len(), vec1); @@ -23,7 +19,7 @@ fn main() { // `fill_vec()` no longer takes `vec: Vec` as argument fn fill_vec() -> Vec { - let mut vec = vec; + let mut vec = Vec::new(); vec.push(22); vec.push(44); diff --git a/exercises/move_semantics/move_semantics5.rs b/exercises/move_semantics/move_semantics5.rs index 68db09eb..bf373822 100644 --- a/exercises/move_semantics/move_semantics5.rs +++ b/exercises/move_semantics/move_semantics5.rs @@ -6,13 +6,11 @@ // Execute `rustlings hint move_semantics5` or use the `hint` watch subcommand // for a hint. -// I AM NOT DONE - fn main() { let mut x = 100; let y = &mut x; - let z = &mut x; *y += 100; + let z = &mut x; *z += 1000; assert_eq!(x, 1200); } diff --git a/exercises/move_semantics/move_semantics6.rs b/exercises/move_semantics/move_semantics6.rs index cace4ca6..f00dab19 100644 --- a/exercises/move_semantics/move_semantics6.rs +++ b/exercises/move_semantics/move_semantics6.rs @@ -5,24 +5,22 @@ // Execute `rustlings hint move_semantics6` or use the `hint` watch subcommand // for a hint. -// I AM NOT DONE - fn main() { let data = "Rust is great!".to_string(); - get_char(data); + get_char(&data); - string_uppercase(&data); + string_uppercase(data); } // Should not take ownership -fn get_char(data: String) -> char { +fn get_char(data: &String) -> char { data.chars().last().unwrap() } // Should take ownership -fn string_uppercase(mut data: &String) { - data = &data.to_uppercase(); +fn string_uppercase(mut data: String) { + data = data.to_uppercase(); println!("{}", data); } diff --git a/exercises/options/options1.rs b/exercises/options/options1.rs index e131b48b..cc33633b 100644 --- a/exercises/options/options1.rs +++ b/exercises/options/options1.rs @@ -3,8 +3,6 @@ // Execute `rustlings hint options1` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - // This function returns how much icecream there is left in the fridge. // If it's before 10PM, there's 5 pieces left. At 10PM, someone eats them // all, so there'll be no more left :( @@ -13,7 +11,12 @@ fn maybe_icecream(time_of_day: u16) -> Option { // value of 0 The Option output should gracefully handle cases where // time_of_day > 23. // TODO: Complete the function body - remember to return an Option! - ??? + match time_of_day { + time_of_day if time_of_day < 22 => Some(5), + time_of_day if time_of_day > 23 => None, + time_of_day if time_of_day >= 22 => Some(0), + _ => None + } } #[cfg(test)] @@ -34,6 +37,6 @@ mod tests { // TODO: Fix this test. How do you get at the value contained in the // Option? let icecreams = maybe_icecream(12); - assert_eq!(icecreams, 5); + assert_eq!(icecreams.unwrap_or_default(), 5); } } diff --git a/exercises/options/options2.rs b/exercises/options/options2.rs index 4d998e7d..cbc1ad2d 100644 --- a/exercises/options/options2.rs +++ b/exercises/options/options2.rs @@ -3,8 +3,6 @@ // Execute `rustlings hint options2` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - #[cfg(test)] mod tests { #[test] @@ -12,8 +10,7 @@ mod tests { let target = "rustlings"; let optional_target = Some(target); - // TODO: Make this an if let statement whose value is "Some" type - word = optional_target { + if let Some(word) = optional_target { assert_eq!(word, target); } } @@ -29,10 +26,7 @@ mod tests { let mut cursor = range; - // TODO: make this a while let statement - remember that vector.pop also - // adds another layer of Option. You can stack `Option`s into - // while let and if let. - integer = optional_integers.pop() { + while let Some(Some(integer)) = optional_integers.pop() { assert_eq!(integer, cursor); cursor -= 1; } diff --git a/exercises/options/options3.rs b/exercises/options/options3.rs index 23c15eab..bca3cff5 100644 --- a/exercises/options/options3.rs +++ b/exercises/options/options3.rs @@ -3,8 +3,6 @@ // Execute `rustlings hint options3` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - struct Point { x: i32, y: i32, @@ -14,7 +12,7 @@ fn main() { let y: Option = Some(Point { x: 100, y: 200 }); match y { - Some(p) => println!("Co-ordinates are {},{} ", p.x, p.y), + Some(ref p) => println!("Co-ordinates are {},{} ", p.x, p.y), _ => panic!("no match!"), } y; // Fix without deleting this line. diff --git a/exercises/primitive_types/primitive_types1.rs b/exercises/primitive_types/primitive_types1.rs index e1cf52a2..4d5e3f19 100644 --- a/exercises/primitive_types/primitive_types1.rs +++ b/exercises/primitive_types/primitive_types1.rs @@ -6,8 +6,6 @@ // Execute `rustlings hint primitive_types1` or use the `hint` watch subcommand // for a hint. -// I AM NOT DONE - fn main() { // Booleans (`bool`) @@ -16,7 +14,7 @@ fn main() { println!("Good morning!"); } - let // Finish the rest of this line like the example! Or make it be false! + let is_evening = true; if is_evening { println!("Good evening!"); } diff --git a/exercises/primitive_types/primitive_types2.rs b/exercises/primitive_types/primitive_types2.rs index fcc9705a..6df93199 100644 --- a/exercises/primitive_types/primitive_types2.rs +++ b/exercises/primitive_types/primitive_types2.rs @@ -6,8 +6,6 @@ // Execute `rustlings hint primitive_types2` or use the `hint` watch subcommand // for a hint. -// I AM NOT DONE - fn main() { // Characters (`char`) @@ -22,9 +20,9 @@ fn main() { println!("Neither alphabetic nor numeric!"); } - let // Finish this line like the example! What's your favorite character? - // Try a letter, try a number, try a special character, try a character - // from a different language than your own, try an emoji! + let your_character = 'E'; // Finish this line like the example! What's your favorite character? + // Try a letter, try a number, try a special character, try a character + // from a different language than your own, try an emoji! if your_character.is_alphabetic() { println!("Alphabetical!"); } else if your_character.is_numeric() { diff --git a/exercises/primitive_types/primitive_types3.rs b/exercises/primitive_types/primitive_types3.rs index 06a7a621..0c3c86c5 100644 --- a/exercises/primitive_types/primitive_types3.rs +++ b/exercises/primitive_types/primitive_types3.rs @@ -5,10 +5,8 @@ // Execute `rustlings hint primitive_types3` or use the `hint` watch subcommand // for a hint. -// I AM NOT DONE - fn main() { - let a = ??? + let a = [3; 100]; if a.len() >= 100 { println!("Wow, that's a big array!"); diff --git a/exercises/primitive_types/primitive_types4.rs b/exercises/primitive_types/primitive_types4.rs index d44d8776..be863098 100644 --- a/exercises/primitive_types/primitive_types4.rs +++ b/exercises/primitive_types/primitive_types4.rs @@ -5,13 +5,11 @@ // Execute `rustlings hint primitive_types4` or use the `hint` watch subcommand // for a hint. -// I AM NOT DONE - #[test] fn slice_out_of_array() { let a = [1, 2, 3, 4, 5]; - let nice_slice = ??? + let nice_slice = &a[1..4]; assert_eq!([2, 3, 4], nice_slice) } diff --git a/exercises/primitive_types/primitive_types5.rs b/exercises/primitive_types/primitive_types5.rs index f646986e..7a330445 100644 --- a/exercises/primitive_types/primitive_types5.rs +++ b/exercises/primitive_types/primitive_types5.rs @@ -5,11 +5,9 @@ // Execute `rustlings hint primitive_types5` or use the `hint` watch subcommand // for a hint. -// I AM NOT DONE - fn main() { let cat = ("Furry McFurson", 3.5); - let /* your pattern here */ = cat; + let (name, age) = cat; println!("{} is {} years old.", name, age); } diff --git a/exercises/primitive_types/primitive_types6.rs b/exercises/primitive_types/primitive_types6.rs index 07cc46c6..16bf0eab 100644 --- a/exercises/primitive_types/primitive_types6.rs +++ b/exercises/primitive_types/primitive_types6.rs @@ -6,14 +6,11 @@ // Execute `rustlings hint primitive_types6` or use the `hint` watch subcommand // for a hint. -// I AM NOT DONE - #[test] fn indexing_tuple() { let numbers = (1, 2, 3); // Replace below ??? with the tuple indexing syntax. - let second = ???; + let second = numbers.1; - assert_eq!(2, second, - "This is not the 2nd number in the tuple!") + assert_eq!(2, second, "This is not the 2nd number in the tuple!") } diff --git a/exercises/quiz1.rs b/exercises/quiz1.rs index 4ee5ada7..bde69094 100644 --- a/exercises/quiz1.rs +++ b/exercises/quiz1.rs @@ -13,10 +13,14 @@ // // No hints this time ;) -// I AM NOT DONE - // Put your function here! -// fn calculate_price_of_apples { +fn calculate_price_of_apples(quantity: i32) -> i32 { + if quantity > 40 { + quantity + } else { + quantity * 2 + } +} // Don't modify this function! #[test] diff --git a/exercises/quiz2.rs b/exercises/quiz2.rs index 29925caf..b537f961 100644 --- a/exercises/quiz2.rs +++ b/exercises/quiz2.rs @@ -20,8 +20,6 @@ // // No hints this time! -// I AM NOT DONE - pub enum Command { Uppercase, Trim, @@ -29,14 +27,20 @@ pub enum Command { } mod my_module { - use super::Command; - - // TODO: Complete the function signature! - pub fn transformer(input: ???) -> ??? { - // TODO: Complete the output declaration! - let mut output: ??? = vec![]; + use super::{Command, Command::{Uppercase, Trim, Append}}; + pub fn transformer(input: Vec<(String, Command)>) -> Vec { + let mut output: Vec = vec![]; for (string, command) in input.iter() { - // TODO: Complete the function body. You can do it! + let prefix = String::from(string); + match command { + Uppercase => output.push(prefix.to_uppercase()), + Trim => output.push(prefix.trim().into()), + Append(x) => { + let suffix = (String::from("bar")).repeat(*x); + let result = prefix + &suffix; + output.push(result); + } + } } output } @@ -44,8 +48,7 @@ mod my_module { #[cfg(test)] mod tests { - // TODO: What do we need to import to have `transformer` in scope? - use ???; + use super::my_module::transformer; use super::Command; #[test] diff --git a/exercises/quiz3.rs b/exercises/quiz3.rs index 3b01d313..63397e2a 100644 --- a/exercises/quiz3.rs +++ b/exercises/quiz3.rs @@ -16,18 +16,20 @@ // // Execute `rustlings hint quiz3` or use the `hint` watch subcommand for a hint. -// I AM NOT DONE +use std::fmt::Display; -pub struct ReportCard { - pub grade: f32, +pub struct ReportCard { + pub grade: T, pub student_name: String, pub student_age: u8, } -impl ReportCard { +impl ReportCard { pub fn print(&self) -> String { - format!("{} ({}) - achieved a grade of {}", - &self.student_name, &self.student_age, &self.grade) + format!( + "{} ({}) - achieved a grade of {}", + &self.student_name, &self.student_age, &self.grade + ) } } @@ -52,7 +54,7 @@ mod tests { fn generate_alphabetic_report_card() { // TODO: Make sure to change the grade here after you finish the exercise. let report_card = ReportCard { - grade: 2.1, + grade: "A+", student_name: "Gary Plotter".to_string(), student_age: 11, }; diff --git a/exercises/smart_pointers/arc1.rs b/exercises/smart_pointers/arc1.rs index 3526ddcb..c4e2ff05 100644 --- a/exercises/smart_pointers/arc1.rs +++ b/exercises/smart_pointers/arc1.rs @@ -21,19 +21,17 @@ // // Execute `rustlings hint arc1` or use the `hint` watch subcommand for a hint. -// I AM NOT DONE - #![forbid(unused_imports)] // Do not change this, (or the next) line. use std::sync::Arc; use std::thread; fn main() { let numbers: Vec<_> = (0..100u32).collect(); - let shared_numbers = // TODO + let shared_numbers = Arc::new(numbers); let mut joinhandles = Vec::new(); for offset in 0..8 { - let child_numbers = // TODO + let child_numbers = shared_numbers.clone(); joinhandles.push(thread::spawn(move || { let sum: u32 = child_numbers.iter().filter(|&&n| n % 8 == offset).sum(); println!("Sum of offset {} is {}", offset, sum); diff --git a/exercises/smart_pointers/box1.rs b/exercises/smart_pointers/box1.rs index 513e7daa..aa10cf92 100644 --- a/exercises/smart_pointers/box1.rs +++ b/exercises/smart_pointers/box1.rs @@ -18,11 +18,9 @@ // // Execute `rustlings hint box1` or use the `hint` watch subcommand for a hint. -// I AM NOT DONE - #[derive(PartialEq, Debug)] pub enum List { - Cons(i32, List), + Cons(i32, Box), Nil, } @@ -35,11 +33,11 @@ fn main() { } pub fn create_empty_list() -> List { - todo!() + List::Nil } pub fn create_non_empty_list() -> List { - todo!() + List::Cons(5, Box::new(List::Nil)) } #[cfg(test)] diff --git a/exercises/smart_pointers/cow1.rs b/exercises/smart_pointers/cow1.rs index 7ca91686..5783ad61 100644 --- a/exercises/smart_pointers/cow1.rs +++ b/exercises/smart_pointers/cow1.rs @@ -12,8 +12,6 @@ // // Execute `rustlings hint cow1` or use the `hint` watch subcommand for a hint. -// I AM NOT DONE - use std::borrow::Cow; fn abs_all<'a, 'b>(input: &'a mut Cow<'b, [i32]>) -> &'a mut Cow<'b, [i32]> { @@ -48,7 +46,8 @@ mod tests { let slice = [0, 1, 2]; let mut input = Cow::from(&slice[..]); match abs_all(&mut input) { - // TODO + Cow::Borrowed(_) => Ok(()), + _ => Err("Expected a borrowed value"), } } @@ -60,7 +59,8 @@ mod tests { let slice = vec![0, 1, 2]; let mut input = Cow::from(slice); match abs_all(&mut input) { - // TODO + Cow::Owned(_) => Ok(()), + _ => Err("Expected an owned value"), } } @@ -72,7 +72,8 @@ mod tests { let slice = vec![-1, 0, 1]; let mut input = Cow::from(slice); match abs_all(&mut input) { - // TODO + Cow::Owned(_) => Ok(()), + _ => Err("Expected an owned value"), } } } diff --git a/exercises/smart_pointers/rc1.rs b/exercises/smart_pointers/rc1.rs index ad3f1ce2..e74e6717 100644 --- a/exercises/smart_pointers/rc1.rs +++ b/exercises/smart_pointers/rc1.rs @@ -10,8 +10,6 @@ // // Execute `rustlings hint rc1` or use the `hint` watch subcommand for a hint. -// I AM NOT DONE - use std::rc::Rc; #[derive(Debug)] @@ -60,17 +58,17 @@ fn main() { jupiter.details(); // TODO - let saturn = Planet::Saturn(Rc::new(Sun {})); + let saturn = Planet::Saturn(Rc::clone(&sun)); println!("reference count = {}", Rc::strong_count(&sun)); // 7 references saturn.details(); // TODO - let uranus = Planet::Uranus(Rc::new(Sun {})); + let uranus = Planet::Uranus(Rc::clone(&sun)); println!("reference count = {}", Rc::strong_count(&sun)); // 8 references uranus.details(); // TODO - let neptune = Planet::Neptune(Rc::new(Sun {})); + let neptune = Planet::Neptune(Rc::clone(&sun)); println!("reference count = {}", Rc::strong_count(&sun)); // 9 references neptune.details(); @@ -92,12 +90,13 @@ fn main() { println!("reference count = {}", Rc::strong_count(&sun)); // 4 references // TODO + drop(earth); println!("reference count = {}", Rc::strong_count(&sun)); // 3 references - // TODO + drop(venus); println!("reference count = {}", Rc::strong_count(&sun)); // 2 references - // TODO + drop(mercury); println!("reference count = {}", Rc::strong_count(&sun)); // 1 reference assert_eq!(Rc::strong_count(&sun), 1); diff --git a/exercises/strings/strings1.rs b/exercises/strings/strings1.rs index f50e1fa9..e789b8f0 100644 --- a/exercises/strings/strings1.rs +++ b/exercises/strings/strings1.rs @@ -5,13 +5,11 @@ // Execute `rustlings hint strings1` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - fn main() { let answer = current_favorite_color(); println!("My current favorite color is {}", answer); } fn current_favorite_color() -> String { - "blue" + "blue".to_string() } diff --git a/exercises/strings/strings2.rs b/exercises/strings/strings2.rs index 4d95d16a..ca16ea3d 100644 --- a/exercises/strings/strings2.rs +++ b/exercises/strings/strings2.rs @@ -5,11 +5,9 @@ // Execute `rustlings hint strings2` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - fn main() { let word = String::from("green"); // Try not changing this line :) - if is_a_color_word(word) { + if is_a_color_word(&word) { println!("That is a color word I know!"); } else { println!("That is not a color word I know."); diff --git a/exercises/strings/strings3.rs b/exercises/strings/strings3.rs index b29f9325..7ef96ee0 100644 --- a/exercises/strings/strings3.rs +++ b/exercises/strings/strings3.rs @@ -3,21 +3,17 @@ // Execute `rustlings hint strings3` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - fn trim_me(input: &str) -> String { - // TODO: Remove whitespace from both ends of a string! - ??? + String::from(input.trim()) } fn compose_me(input: &str) -> String { // TODO: Add " world!" to the string! There's multiple ways to do this! - ??? + String::from(input) + " world!" } fn replace_me(input: &str) -> String { - // TODO: Replace "cars" in the string with "balloons"! - ??? + String::from(input).replace("cars", "balloons") } #[cfg(test)] @@ -39,7 +35,13 @@ mod tests { #[test] fn replace_a_string() { - assert_eq!(replace_me("I think cars are cool"), "I think balloons are cool"); - assert_eq!(replace_me("I love to look at cars"), "I love to look at balloons"); + assert_eq!( + replace_me("I think cars are cool"), + "I think balloons are cool" + ); + assert_eq!( + replace_me("I love to look at cars"), + "I love to look at balloons" + ); } } diff --git a/exercises/strings/strings4.rs b/exercises/strings/strings4.rs index e8c54acc..9c2a0c72 100644 --- a/exercises/strings/strings4.rs +++ b/exercises/strings/strings4.rs @@ -7,8 +7,6 @@ // // No hints this time! -// I AM NOT DONE - fn string_slice(arg: &str) { println!("{}", arg); } @@ -17,14 +15,14 @@ fn string(arg: String) { } fn main() { - ???("blue"); - ???("red".to_string()); - ???(String::from("hi")); - ???("rust is fun!".to_owned()); - ???("nice weather".into()); - ???(format!("Interpolation {}", "Station")); - ???(&String::from("abc")[0..1]); - ???(" hello there ".trim()); - ???("Happy Monday!".to_string().replace("Mon", "Tues")); - ???("mY sHiFt KeY iS sTiCkY".to_lowercase()); + string_slice("blue"); + string("red".to_string()); + string(String::from("hi")); + string("rust is fun!".to_owned()); + string("nice weather".into()); + string(format!("Interpolation {}", "Station")); + string_slice(&String::from("abc")[0..1]); + string_slice(" hello there ".trim()); + string("Happy Monday!".to_string().replace("Mon", "Tues")); + string("mY sHiFt KeY iS sTiCkY".to_lowercase()); } diff --git a/exercises/structs/structs1.rs b/exercises/structs/structs1.rs index 5fa5821c..c7f4e0d5 100644 --- a/exercises/structs/structs1.rs +++ b/exercises/structs/structs1.rs @@ -5,13 +5,13 @@ // Execute `rustlings hint structs1` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - struct ColorClassicStruct { - // TODO: Something goes here + red: u32, + green: u32, + blue: u32, } -struct ColorTupleStruct(/* TODO: Something goes here */); +struct ColorTupleStruct(u32, u32, u32); #[derive(Debug)] struct UnitLikeStruct; @@ -23,7 +23,11 @@ mod tests { #[test] fn classic_c_structs() { // TODO: Instantiate a classic c struct! - // let green = + let green = ColorClassicStruct { + red: 0, + green: 255, + blue: 0, + }; assert_eq!(green.red, 0); assert_eq!(green.green, 255); @@ -33,7 +37,7 @@ mod tests { #[test] fn tuple_structs() { // TODO: Instantiate a tuple struct! - // let green = + let green = ColorTupleStruct(0, 255, 0); assert_eq!(green.0, 0); assert_eq!(green.1, 255); @@ -43,7 +47,7 @@ mod tests { #[test] fn unit_structs() { // TODO: Instantiate a unit-like struct! - // let unit_like_struct = + let unit_like_struct = UnitLikeStruct; 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 index 328567f0..3a650582 100644 --- a/exercises/structs/structs2.rs +++ b/exercises/structs/structs2.rs @@ -5,8 +5,6 @@ // Execute `rustlings hint structs2` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - #[derive(Debug)] struct Order { name: String, @@ -37,8 +35,11 @@ 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 = + let your_order = Order { + name: String::from("Hacker in Rust"), + count: 1, + ..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); diff --git a/exercises/structs/structs3.rs b/exercises/structs/structs3.rs index 4851317c..93f4ac19 100644 --- a/exercises/structs/structs3.rs +++ b/exercises/structs/structs3.rs @@ -7,8 +7,6 @@ // Execute `rustlings hint structs3` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - #[derive(Debug)] struct Package { sender_country: String, @@ -29,12 +27,12 @@ impl Package { } } - fn is_international(&self) -> ??? { - // Something goes here... + fn is_international(&self) -> bool { + !(self.sender_country == self.recipient_country) } - fn get_fees(&self, cents_per_gram: i32) -> ??? { - // Something goes here... + fn get_fees(&self, cents_per_gram: i32) -> i32 { + self.weight_in_grams * cents_per_gram } } diff --git a/exercises/tests/tests1.rs b/exercises/tests/tests1.rs index 810277ac..eab3ba7a 100644 --- a/exercises/tests/tests1.rs +++ b/exercises/tests/tests1.rs @@ -10,12 +10,10 @@ // Execute `rustlings hint tests1` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - #[cfg(test)] mod tests { #[test] fn you_can_assert() { - assert!(); + assert!(true); } } diff --git a/exercises/tests/tests2.rs b/exercises/tests/tests2.rs index f8024e9f..ed6b4967 100644 --- a/exercises/tests/tests2.rs +++ b/exercises/tests/tests2.rs @@ -6,12 +6,10 @@ // Execute `rustlings hint tests2` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - #[cfg(test)] mod tests { #[test] fn you_can_assert_eq() { - assert_eq!(); + assert_eq!(1, 1); } } diff --git a/exercises/tests/tests3.rs b/exercises/tests/tests3.rs index 4013e384..bbd3834f 100644 --- a/exercises/tests/tests3.rs +++ b/exercises/tests/tests3.rs @@ -7,8 +7,6 @@ // Execute `rustlings hint tests3` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - pub fn is_even(num: i32) -> bool { num % 2 == 0 } @@ -19,11 +17,11 @@ mod tests { #[test] fn is_true_when_even() { - assert!(); + assert!(is_even(4)); } #[test] fn is_false_when_odd() { - assert!(); + assert!(!is_even(5)); } } diff --git a/exercises/tests/tests4.rs b/exercises/tests/tests4.rs index 935d0db1..3462c687 100644 --- a/exercises/tests/tests4.rs +++ b/exercises/tests/tests4.rs @@ -5,11 +5,9 @@ // Execute `rustlings hint tests4` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - struct Rectangle { width: i32, - height: i32 + height: i32, } impl Rectangle { @@ -18,7 +16,7 @@ impl Rectangle { if width <= 0 || height <= 0 { panic!("Rectangle width and height cannot be negative!") } - Rectangle {width, height} + Rectangle { width, height } } } @@ -30,17 +28,17 @@ mod tests { fn correct_width_and_height() { // This test should check if the rectangle is the size that we pass into its constructor let rect = Rectangle::new(10, 20); - assert_eq!(???, 10); // check width - assert_eq!(???, 20); // check height + assert_eq!(rect.width, 10); // check width + assert_eq!(rect.height, 20); // check height } - #[test] + #[should_panic(expected = "Rectangle width and height cannot be negative!")] fn negative_width() { // This test should check if program panics when we try to create rectangle with negative width let _rect = Rectangle::new(-10, 10); } - #[test] + #[should_panic(expected = "Rectangle width and height cannot be negative!")] fn negative_height() { // This test should check if program panics when we try to create rectangle with negative height let _rect = Rectangle::new(10, -10); diff --git a/exercises/threads/threads1.rs b/exercises/threads/threads1.rs index 80b6def3..3c438df9 100644 --- a/exercises/threads/threads1.rs +++ b/exercises/threads/threads1.rs @@ -8,8 +8,6 @@ // Execute `rustlings hint threads1` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - use std::thread; use std::time::{Duration, Instant}; @@ -26,7 +24,7 @@ fn main() { let mut results: Vec = vec![]; for handle in handles { - // TODO: a struct is returned from thread::spawn, can you use it? + results.push(handle.join().unwrap()) } if results.len() != 10 { diff --git a/exercises/threads/threads2.rs b/exercises/threads/threads2.rs index 62dad80d..57caed80 100644 --- a/exercises/threads/threads2.rs +++ b/exercises/threads/threads2.rs @@ -7,9 +7,7 @@ // Execute `rustlings hint threads2` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - -use std::sync::Arc; +use std::sync::{Arc, Mutex}; use std::thread; use std::time::Duration; @@ -18,22 +16,19 @@ struct JobStatus { } fn main() { - let status = Arc::new(JobStatus { jobs_completed: 0 }); + let status: Arc> = Arc::new(Mutex::new(JobStatus { jobs_completed: 0 })); let mut handles = vec![]; for _ in 0..10 { let status_shared = Arc::clone(&status); let handle = thread::spawn(move || { thread::sleep(Duration::from_millis(250)); - // TODO: You must take an action before you update a shared value - status_shared.jobs_completed += 1; + let mut job = status_shared.lock().unwrap(); + job.jobs_completed += 1; }); handles.push(handle); } for handle in handles { handle.join().unwrap(); - // TODO: Print the value of the JobStatus.jobs_completed. Did you notice - // anything interesting in the output? Do you have to 'join' on all the - // handles? - println!("jobs completed {}", ???); + println!("jobs completed {}", status.lock().unwrap().jobs_completed); } } diff --git a/exercises/threads/threads3.rs b/exercises/threads/threads3.rs index db7d41ba..29a61365 100644 --- a/exercises/threads/threads3.rs +++ b/exercises/threads/threads3.rs @@ -3,8 +3,6 @@ // Execute `rustlings hint threads3` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - use std::sync::mpsc; use std::sync::Arc; use std::thread; @@ -30,11 +28,13 @@ fn send_tx(q: Queue, tx: mpsc::Sender) -> () { let qc = Arc::new(q); let qc1 = Arc::clone(&qc); let qc2 = Arc::clone(&qc); + let tx1 = tx.clone(); + let tx2 = tx.clone(); thread::spawn(move || { for val in &qc1.first_half { println!("sending {:?}", val); - tx.send(*val).unwrap(); + tx1.send(*val).unwrap(); thread::sleep(Duration::from_secs(1)); } }); @@ -42,7 +42,7 @@ fn send_tx(q: Queue, tx: mpsc::Sender) -> () { thread::spawn(move || { for val in &qc2.second_half { println!("sending {:?}", val); - tx.send(*val).unwrap(); + tx2.send(*val).unwrap(); thread::sleep(Duration::from_secs(1)); } }); diff --git a/exercises/traits/traits1.rs b/exercises/traits/traits1.rs index 37dfcbfe..d18d521f 100644 --- a/exercises/traits/traits1.rs +++ b/exercises/traits/traits1.rs @@ -7,14 +7,16 @@ // Execute `rustlings hint traits1` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE +use std::ops::Add; trait AppendBar { fn append_bar(self) -> Self; } impl AppendBar for String { - // TODO: Implement `AppendBar` for type `String`. + fn append_bar(self) -> Self { + self.add("Bar") + } } fn main() { diff --git a/exercises/traits/traits2.rs b/exercises/traits/traits2.rs index 3e35f8e1..ef044d8e 100644 --- a/exercises/traits/traits2.rs +++ b/exercises/traits/traits2.rs @@ -8,13 +8,17 @@ // // Execute `rustlings hint traits2` or use the `hint` watch subcommand for a hint. -// I AM NOT DONE - trait AppendBar { - fn append_bar(self) -> Self; + fn append_bar(&mut self) -> Self; } // TODO: Implement trait `AppendBar` for a vector of strings. +impl AppendBar for Vec { + fn append_bar(&mut self) -> Self { + self.push(String::from("Bar")); + self.to_vec() + } +} #[cfg(test)] mod tests { diff --git a/exercises/traits/traits3.rs b/exercises/traits/traits3.rs index 4e2b06b0..7b758747 100644 --- a/exercises/traits/traits3.rs +++ b/exercises/traits/traits3.rs @@ -8,10 +8,10 @@ // Execute `rustlings hint traits3` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - pub trait Licensed { - fn licensing_info(&self) -> String; + fn licensing_info(&self) -> String { + String::from("Some information") + } } struct SomeSoftware { diff --git a/exercises/traits/traits4.rs b/exercises/traits/traits4.rs index 4bda3e57..4f3e19dc 100644 --- a/exercises/traits/traits4.rs +++ b/exercises/traits/traits4.rs @@ -7,8 +7,6 @@ // Execute `rustlings hint traits4` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - pub trait Licensed { fn licensing_info(&self) -> String { "some information".to_string() @@ -23,7 +21,7 @@ impl Licensed for SomeSoftware {} impl Licensed for OtherSoftware {} // YOU MAY ONLY CHANGE THE NEXT LINE -fn compare_license_types(software: ??, software_two: ??) -> bool { +fn compare_license_types(software: impl Licensed, software_two: impl Licensed) -> bool { software.licensing_info() == software_two.licensing_info() } diff --git a/exercises/traits/traits5.rs b/exercises/traits/traits5.rs index df183805..07bb2068 100644 --- a/exercises/traits/traits5.rs +++ b/exercises/traits/traits5.rs @@ -7,8 +7,6 @@ // Execute `rustlings hint traits5` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - pub trait SomeTrait { fn some_function(&self) -> bool { true @@ -30,7 +28,7 @@ impl SomeTrait for OtherStruct {} impl OtherTrait for OtherStruct {} // YOU MAY ONLY CHANGE THE NEXT LINE -fn some_func(item: ??) -> bool { +fn some_func(item: impl SomeTrait + OtherTrait) -> bool { item.some_function() && item.other_function() } diff --git a/exercises/variables/variables1.rs b/exercises/variables/variables1.rs index b3e089a5..98a0cf22 100644 --- a/exercises/variables/variables1.rs +++ b/exercises/variables/variables1.rs @@ -5,9 +5,7 @@ // Execute `rustlings hint variables1` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - fn main() { - x = 5; + let x = 5; println!("x has the value {}", x); } diff --git a/exercises/variables/variables2.rs b/exercises/variables/variables2.rs index e1c23edf..a08ee0b0 100644 --- a/exercises/variables/variables2.rs +++ b/exercises/variables/variables2.rs @@ -3,10 +3,8 @@ // Execute `rustlings hint variables2` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - fn main() { - let x; + let x: u32 = 10; if x == 10 { println!("x is ten!"); } else { diff --git a/exercises/variables/variables3.rs b/exercises/variables/variables3.rs index 86bed419..be2adb5e 100644 --- a/exercises/variables/variables3.rs +++ b/exercises/variables/variables3.rs @@ -3,9 +3,7 @@ // Execute `rustlings hint variables3` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - fn main() { - let x: i32; + let x: i32 = 0; println!("Number {}", x); } diff --git a/exercises/variables/variables4.rs b/exercises/variables/variables4.rs index 5394f394..c75843ea 100644 --- a/exercises/variables/variables4.rs +++ b/exercises/variables/variables4.rs @@ -3,10 +3,8 @@ // Execute `rustlings hint variables4` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - fn main() { - let x = 3; + let mut x = 3; println!("Number {}", x); x = 5; // don't change this line println!("Number {}", x); diff --git a/exercises/variables/variables5.rs b/exercises/variables/variables5.rs index a29b38be..19ce9d66 100644 --- a/exercises/variables/variables5.rs +++ b/exercises/variables/variables5.rs @@ -3,11 +3,9 @@ // Execute `rustlings hint variables5` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - fn main() { let number = "T-H-R-E-E"; // don't change this line println!("Spell a Number : {}", number); - number = 3; // don't rename this variable + let number = 3; // don't rename this variable println!("Number plus two is : {}", number + 2); } diff --git a/exercises/variables/variables6.rs b/exercises/variables/variables6.rs index 853183ba..89d64def 100644 --- a/exercises/variables/variables6.rs +++ b/exercises/variables/variables6.rs @@ -3,9 +3,7 @@ // Execute `rustlings hint variables6` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - -const NUMBER = 3; +const NUMBER: u32 = 3; fn main() { println!("Number {}", NUMBER); } diff --git a/exercises/vecs/vecs1.rs b/exercises/vecs/vecs1.rs index 65b7a7f8..c90e7480 100644 --- a/exercises/vecs/vecs1.rs +++ b/exercises/vecs/vecs1.rs @@ -7,11 +7,9 @@ // // Execute `rustlings hint vecs1` or use the `hint` watch subcommand for a hint. -// I AM NOT DONE - fn array_and_vec() -> ([i32; 4], Vec) { let a = [10, 20, 30, 40]; // a plain array - let v = // TODO: declare your vector here with the macro for vectors + let v = vec![10, 20, 30, 40]; // TODO: declare your vector here with the macro for vectors (a, v) } diff --git a/exercises/vecs/vecs2.rs b/exercises/vecs/vecs2.rs index e92c970a..95c3c4bc 100644 --- a/exercises/vecs/vecs2.rs +++ b/exercises/vecs/vecs2.rs @@ -7,13 +7,9 @@ // // Execute `rustlings hint vecs2` or use the `hint` watch subcommand for a hint. -// I AM NOT DONE - fn vec_loop(mut v: Vec) -> Vec { for element in v.iter_mut() { - // TODO: Fill this up so that each element in the Vec `v` is - // multiplied by 2. - ??? + *element = *element * 2; } // At this point, `v` should be equal to [4, 8, 12, 16, 20]. @@ -21,11 +17,7 @@ fn vec_loop(mut v: Vec) -> Vec { } fn vec_map(v: &Vec) -> Vec { - v.iter().map(|element| { - // TODO: Do the same thing as above - but instead of mutating the - // Vec, you can just return the new number! - ??? - }).collect() + v.iter().map(|element| element * 2).collect() } #[cfg(test)]

IKP=c>9?>~yBHxiQh` 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