Merge pull request #2393 from foxfromworld/issue-2023-rename-exercises

Apply Option A naming for smart_pointers and conversions exercises
This commit is contained in:
Remo Senekowitsch 2026-05-13 14:43:17 +02:00 committed by GitHub
commit 06ca7b8718
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
21 changed files with 31 additions and 31 deletions

View File

@ -150,14 +150,14 @@ bin = [
{ name = "iterators4_sol", path = "../solutions/18_iterators/iterators4.rs" }, { name = "iterators4_sol", path = "../solutions/18_iterators/iterators4.rs" },
{ name = "iterators5", path = "../exercises/18_iterators/iterators5.rs" }, { name = "iterators5", path = "../exercises/18_iterators/iterators5.rs" },
{ name = "iterators5_sol", path = "../solutions/18_iterators/iterators5.rs" }, { name = "iterators5_sol", path = "../solutions/18_iterators/iterators5.rs" },
{ name = "box1", path = "../exercises/19_smart_pointers/box1.rs" }, { name = "smart_pointers1", path = "../exercises/19_smart_pointers/smart_pointers1.rs" },
{ name = "box1_sol", path = "../solutions/19_smart_pointers/box1.rs" }, { name = "smart_pointers1_sol", path = "../solutions/19_smart_pointers/smart_pointers1.rs" },
{ name = "rc1", path = "../exercises/19_smart_pointers/rc1.rs" }, { name = "smart_pointers2", path = "../exercises/19_smart_pointers/smart_pointers2.rs" },
{ name = "rc1_sol", path = "../solutions/19_smart_pointers/rc1.rs" }, { name = "smart_pointers2_sol", path = "../solutions/19_smart_pointers/smart_pointers2.rs" },
{ name = "arc1", path = "../exercises/19_smart_pointers/arc1.rs" }, { name = "smart_pointers3", path = "../exercises/19_smart_pointers/smart_pointers3.rs" },
{ name = "arc1_sol", path = "../solutions/19_smart_pointers/arc1.rs" }, { name = "smart_pointers3_sol", path = "../solutions/19_smart_pointers/smart_pointers3.rs" },
{ name = "cow1", path = "../exercises/19_smart_pointers/cow1.rs" }, { name = "smart_pointers4", path = "../exercises/19_smart_pointers/smart_pointers4.rs" },
{ name = "cow1_sol", path = "../solutions/19_smart_pointers/cow1.rs" }, { name = "smart_pointers4_sol", path = "../solutions/19_smart_pointers/smart_pointers4.rs" },
{ name = "threads1", path = "../exercises/20_threads/threads1.rs" }, { name = "threads1", path = "../exercises/20_threads/threads1.rs" },
{ name = "threads1_sol", path = "../solutions/20_threads/threads1.rs" }, { name = "threads1_sol", path = "../solutions/20_threads/threads1.rs" },
{ name = "threads2", path = "../exercises/20_threads/threads2.rs" }, { name = "threads2", path = "../exercises/20_threads/threads2.rs" },
@ -178,16 +178,16 @@ bin = [
{ name = "clippy2_sol", path = "../solutions/22_clippy/clippy2.rs" }, { name = "clippy2_sol", path = "../solutions/22_clippy/clippy2.rs" },
{ name = "clippy3", path = "../exercises/22_clippy/clippy3.rs" }, { name = "clippy3", path = "../exercises/22_clippy/clippy3.rs" },
{ name = "clippy3_sol", path = "../solutions/22_clippy/clippy3.rs" }, { name = "clippy3_sol", path = "../solutions/22_clippy/clippy3.rs" },
{ name = "using_as", path = "../exercises/23_conversions/using_as.rs" }, { name = "conversions1", path = "../exercises/23_conversions/conversions1.rs" },
{ name = "using_as_sol", path = "../solutions/23_conversions/using_as.rs" }, { name = "conversions1_sol", path = "../solutions/23_conversions/conversions1.rs" },
{ name = "from_into", path = "../exercises/23_conversions/from_into.rs" }, { name = "conversions2", path = "../exercises/23_conversions/conversions2.rs" },
{ name = "from_into_sol", path = "../solutions/23_conversions/from_into.rs" }, { name = "conversions2_sol", path = "../solutions/23_conversions/conversions2.rs" },
{ name = "from_str", path = "../exercises/23_conversions/from_str.rs" }, { name = "conversions3", path = "../exercises/23_conversions/conversions3.rs" },
{ name = "from_str_sol", path = "../solutions/23_conversions/from_str.rs" }, { name = "conversions3_sol", path = "../solutions/23_conversions/conversions3.rs" },
{ name = "try_from_into", path = "../exercises/23_conversions/try_from_into.rs" }, { name = "conversions4", path = "../exercises/23_conversions/conversions4.rs" },
{ name = "try_from_into_sol", path = "../solutions/23_conversions/try_from_into.rs" }, { name = "conversions4_sol", path = "../solutions/23_conversions/conversions4.rs" },
{ name = "as_ref_mut", path = "../exercises/23_conversions/as_ref_mut.rs" }, { name = "conversions5", path = "../exercises/23_conversions/conversions5.rs" },
{ name = "as_ref_mut_sol", path = "../solutions/23_conversions/as_ref_mut.rs" }, { name = "conversions5_sol", path = "../solutions/23_conversions/conversions5.rs" },
] ]
[package] [package]

View File

@ -2,14 +2,14 @@
Rust offers a multitude of ways to convert a value of a given type into another type. Rust offers a multitude of ways to convert a value of a given type into another type.
The simplest form of type conversion is a type cast expression. It is denoted with the binary operator `as`. For instance, `println!("{}", 1 + 1.0);` would not compile, since `1` is an integer while `1.0` is a float. However, `println!("{}", 1 as f32 + 1.0)` should compile. The exercise [`using_as`](using_as.rs) tries to cover this. The simplest form of type conversion is a type cast expression. It is denoted with the binary operator `as`. For instance, `println!("{}", 1 + 1.0);` would not compile, since `1` is an integer while `1.0` is a float. However, `println!("{}", 1 as f32 + 1.0)` should compile. The exercise [`conversions1`](conversions1.rs) tries to cover this.
Rust also offers traits that facilitate type conversions upon implementation. These traits can be found under the [`convert`](https://doc.rust-lang.org/std/convert/index.html) module. Rust also offers traits that facilitate type conversions upon implementation. These traits can be found under the [`convert`](https://doc.rust-lang.org/std/convert/index.html) module.
The traits are the following: The traits are the following:
- `From` and `Into` covered in [`from_into`](from_into.rs) - `From` and `Into` covered in [`conversions2`](conversions2.rs)
- `TryFrom` and `TryInto` covered in [`try_from_into`](try_from_into.rs) - `TryFrom` and `TryInto` covered in [`conversions4`](conversions4.rs)
- `AsRef` and `AsMut` covered in [`as_ref_mut`](as_ref_mut.rs) - `AsRef` and `AsMut` covered in [`conversions5`](conversions5.rs)
Furthermore, the `std::str` module offers a trait called [`FromStr`](https://doc.rust-lang.org/std/str/trait.FromStr.html) which helps with converting strings into target types via the `parse` method on strings. If properly implemented for a given type `Person`, then `let p: Person = "Mark,20".parse().unwrap()` should both compile and run without panicking. Furthermore, the `std::str` module offers a trait called [`FromStr`](https://doc.rust-lang.org/std/str/trait.FromStr.html) which helps with converting strings into target types via the `parse` method on strings. If properly implemented for a given type `Person`, then `let p: Person = "Mark,20".parse().unwrap()` should both compile and run without panicking.

View File

@ -959,7 +959,7 @@ a different method that could make your code more compact than using `fold`."""
# SMART POINTERS # SMART POINTERS
[[exercises]] [[exercises]]
name = "box1" name = "smart_pointers1"
dir = "19_smart_pointers" dir = "19_smart_pointers"
hint = """ hint = """
The compiler's message should help: Since we cannot store the value of the The compiler's message should help: Since we cannot store the value of the
@ -976,7 +976,7 @@ Although the current list is one of integers (`i32`), feel free to change the
definition and try other types!""" definition and try other types!"""
[[exercises]] [[exercises]]
name = "rc1" name = "smart_pointers2"
dir = "19_smart_pointers" dir = "19_smart_pointers"
hint = """ hint = """
This is a straightforward exercise to use the `Rc<T>` type. Each `Planet` has This is a straightforward exercise to use the `Rc<T>` type. Each `Planet` has
@ -993,7 +993,7 @@ See more at: https://doc.rust-lang.org/book/ch15-04-rc.html
Unfortunately, Pluto is no longer considered a planet :(""" Unfortunately, Pluto is no longer considered a planet :("""
[[exercises]] [[exercises]]
name = "arc1" name = "smart_pointers3"
dir = "19_smart_pointers" dir = "19_smart_pointers"
test = false test = false
hint = """ hint = """
@ -1010,7 +1010,7 @@ Book:
https://doc.rust-lang.org/book/ch16-00-concurrency.html""" https://doc.rust-lang.org/book/ch16-00-concurrency.html"""
[[exercises]] [[exercises]]
name = "cow1" name = "smart_pointers4"
dir = "19_smart_pointers" dir = "19_smart_pointers"
hint = """ hint = """
If `Cow` already owns the data, it doesn't need to clone it when `to_mut()` is If `Cow` already owns the data, it doesn't need to clone it when `to_mut()` is
@ -1161,20 +1161,20 @@ hint = "No hints this time!"
# TYPE CONVERSIONS # TYPE CONVERSIONS
[[exercises]] [[exercises]]
name = "using_as" name = "conversions1"
dir = "23_conversions" dir = "23_conversions"
hint = """ hint = """
Use the `as` operator to cast one of the operands in the last line of the Use the `as` operator to cast one of the operands in the last line of the
`average` function into the expected return type.""" `average` function into the expected return type."""
[[exercises]] [[exercises]]
name = "from_into" name = "conversions2"
dir = "23_conversions" dir = "23_conversions"
hint = """ hint = """
Follow the steps provided right before the `From` implementation.""" Follow the steps provided right before the `From` implementation."""
[[exercises]] [[exercises]]
name = "from_str" name = "conversions3"
dir = "23_conversions" dir = "23_conversions"
hint = """ hint = """
The implementation of `FromStr` should return an `Ok` with a `Person` object, The implementation of `FromStr` should return an `Ok` with a `Person` object,
@ -1191,7 +1191,7 @@ operator in your solution, you might want to look at
https://doc.rust-lang.org/stable/rust-by-example/error/multiple_error_types/reenter_question_mark.html""" https://doc.rust-lang.org/stable/rust-by-example/error/multiple_error_types/reenter_question_mark.html"""
[[exercises]] [[exercises]]
name = "try_from_into" name = "conversions4"
dir = "23_conversions" dir = "23_conversions"
hint = """ hint = """
Is there an implementation of `TryFrom` in the standard library that can both do Is there an implementation of `TryFrom` in the standard library that can both do
@ -1201,7 +1201,7 @@ Challenge: Can you make the `TryFrom` implementations generic over many integer
types?""" types?"""
[[exercises]] [[exercises]]
name = "as_ref_mut" name = "conversions5"
dir = "23_conversions" dir = "23_conversions"
hint = """ hint = """
Add `AsRef<str>` or `AsMut<u32>` as a trait bound to the functions.""" Add `AsRef<str>` or `AsMut<u32>` as a trait bound to the functions."""