Fix stale exercise references

This commit is contained in:
sijun-yang 2026-08-08 20:10:47 +09:00
parent 3b7ca447f1
commit dcc724888f
5 changed files with 25 additions and 30 deletions

View File

@ -27,7 +27,7 @@ fn count_for(map: &HashMap<String, Progress>, value: Progress) -> usize {
// of a `for` loop. // of a `for` loop.
fn count_iterator(map: &HashMap<String, Progress>, value: Progress) -> usize { fn count_iterator(map: &HashMap<String, Progress>, value: Progress) -> usize {
// `map` is a hash map with `String` keys and `Progress` values. // `map` is a hash map with `String` keys and `Progress` values.
// map = { "variables1": Complete, "from_str": None, … } // map = { "variables1": Complete, "conversions3": None, … }
} }
fn count_collection_for(collection: &[HashMap<String, Progress>], value: Progress) -> usize { fn count_collection_for(collection: &[HashMap<String, Progress>], value: Progress) -> usize {
@ -46,7 +46,7 @@ fn count_collection_for(collection: &[HashMap<String, Progress>], value: Progres
// iterator instead of a `for` loop. // iterator instead of a `for` loop.
fn count_collection_iterator(collection: &[HashMap<String, Progress>], value: Progress) -> usize { fn count_collection_iterator(collection: &[HashMap<String, Progress>], value: Progress) -> usize {
// `collection` is a slice of hash maps. // `collection` is a slice of hash maps.
// collection = [{ "variables1": Complete, "from_str": None, … }, // collection = [{ "variables1": Complete, "conversions3": None, … },
// { "variables2": Complete, … }, … ] // { "variables2": Complete, … }, … ]
} }
@ -64,10 +64,10 @@ mod tests {
let mut map = HashMap::new(); let mut map = HashMap::new();
map.insert(String::from("variables1"), Complete); map.insert(String::from("variables1"), Complete);
map.insert(String::from("functions1"), Complete); map.insert(String::from("functions1"), Complete);
map.insert(String::from("hashmap1"), Complete); map.insert(String::from("hashmaps1"), Complete);
map.insert(String::from("arc1"), Some); map.insert(String::from("smart_pointers3"), Some);
map.insert(String::from("as_ref_mut"), None); map.insert(String::from("conversions5"), None);
map.insert(String::from("from_str"), None); map.insert(String::from("conversions3"), None);
map map
} }
@ -81,8 +81,8 @@ mod tests {
other.insert(String::from("variables2"), Complete); other.insert(String::from("variables2"), Complete);
other.insert(String::from("functions2"), Complete); other.insert(String::from("functions2"), Complete);
other.insert(String::from("if1"), Complete); other.insert(String::from("if1"), Complete);
other.insert(String::from("from_into"), None); other.insert(String::from("conversions2"), None);
other.insert(String::from("try_from_into"), None); other.insert(String::from("conversions4"), None);
vec![map, other] vec![map, other]
} }

View File

@ -1,8 +1,7 @@
// This is similar to the previous `from_into` exercise. But this time, we'll // In this exercise, we'll implement `FromStr` and return errors instead of
// implement `FromStr` and return errors instead of falling back to a default // falling back to a default value. Upon implementing `FromStr`, you can use the
// value. Additionally, upon implementing `FromStr`, you can use the `parse` // `parse` method on strings to generate an object of the implementor type.
// method on strings to generate an object of the implementor type. You can read // You can read more about it in the documentation:
// more about it in the documentation:
// https://doc.rust-lang.org/std/str/trait.FromStr.html // https://doc.rust-lang.org/std/str/trait.FromStr.html
use std::num::ParseIntError; use std::num::ParseIntError;

View File

@ -1186,9 +1186,6 @@ 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,
or an `Err` with an error if the string is not valid. or an `Err` with an error if the string is not valid.
This is almost like the previous `from_into` exercise, but returning errors
instead of falling back to a default value.
Another hint: You can use the `map_err` method of `Result` with a function or a Another hint: You can use the `map_err` method of `Result` with a function or a
closure to wrap the error from `parse::<u8>`. closure to wrap the error from `parse::<u8>`.

View File

@ -25,7 +25,7 @@ fn count_for(map: &HashMap<String, Progress>, value: Progress) -> usize {
fn count_iterator(map: &HashMap<String, Progress>, value: Progress) -> usize { fn count_iterator(map: &HashMap<String, Progress>, value: Progress) -> usize {
// `map` is a hash map with `String` keys and `Progress` values. // `map` is a hash map with `String` keys and `Progress` values.
// map = { "variables1": Complete, "from_str": None, … } // map = { "variables1": Complete, "conversions3": None, … }
map.values().filter(|val| **val == value).count() map.values().filter(|val| **val == value).count()
} }
@ -39,7 +39,7 @@ fn count_collection_for(collection: &[HashMap<String, Progress>], value: Progres
fn count_collection_iterator(collection: &[HashMap<String, Progress>], value: Progress) -> usize { fn count_collection_iterator(collection: &[HashMap<String, Progress>], value: Progress) -> usize {
// `collection` is a slice of hash maps. // `collection` is a slice of hash maps.
// collection = [{ "variables1": Complete, "from_str": None, … }, // collection = [{ "variables1": Complete, "conversions3": None, … },
// { "variables2": Complete, … }, … ] // { "variables2": Complete, … }, … ]
collection collection
.iter() .iter()
@ -55,7 +55,7 @@ fn count_collection_iterator_flat(
value: Progress, value: Progress,
) -> usize { ) -> usize {
// `collection` is a slice of hash maps. // `collection` is a slice of hash maps.
// collection = [{ "variables1": Complete, "from_str": None, … }, // collection = [{ "variables1": Complete, "conversions3": None, … },
// { "variables2": Complete, … }, … ] // { "variables2": Complete, … }, … ]
collection collection
.iter() .iter()
@ -77,10 +77,10 @@ mod tests {
let mut map = HashMap::new(); let mut map = HashMap::new();
map.insert(String::from("variables1"), Complete); map.insert(String::from("variables1"), Complete);
map.insert(String::from("functions1"), Complete); map.insert(String::from("functions1"), Complete);
map.insert(String::from("hashmap1"), Complete); map.insert(String::from("hashmaps1"), Complete);
map.insert(String::from("arc1"), Some); map.insert(String::from("smart_pointers3"), Some);
map.insert(String::from("as_ref_mut"), None); map.insert(String::from("conversions5"), None);
map.insert(String::from("from_str"), None); map.insert(String::from("conversions3"), None);
map map
} }
@ -92,8 +92,8 @@ mod tests {
other.insert(String::from("variables2"), Complete); other.insert(String::from("variables2"), Complete);
other.insert(String::from("functions2"), Complete); other.insert(String::from("functions2"), Complete);
other.insert(String::from("if1"), Complete); other.insert(String::from("if1"), Complete);
other.insert(String::from("from_into"), None); other.insert(String::from("conversions2"), None);
other.insert(String::from("try_from_into"), None); other.insert(String::from("conversions4"), None);
vec![map, other] vec![map, other]
} }

View File

@ -1,8 +1,7 @@
// This is similar to the previous `from_into` exercise. But this time, we'll // In this exercise, we'll implement `FromStr` and return errors instead of
// implement `FromStr` and return errors instead of falling back to a default // falling back to a default value. Upon implementing `FromStr`, you can use the
// value. Additionally, upon implementing `FromStr`, you can use the `parse` // `parse` method on strings to generate an object of the implementor type.
// method on strings to generate an object of the implementor type. You can read // You can read more about it in the documentation:
// more about it in the documentation:
// https://doc.rust-lang.org/std/str/trait.FromStr.html // https://doc.rust-lang.org/std/str/trait.FromStr.html
use std::num::ParseIntError; use std::num::ParseIntError;