Skip to content

Commit c21a6f1

Browse files
committed
refactor(05/2025): implement TryInto for Range
1 parent e187e5d commit c21a6f1

File tree

2 files changed

+20
-5
lines changed

2 files changed

+20
-5
lines changed

src/solutions/year2025/day05.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,9 @@ impl Day05 {
5353
ranges_str
5454
.lines()
5555
.map(|line| {
56-
let (start, end) = line.split_once("-").unwrap();
57-
58-
let start = start.parse::<isize>().unwrap();
59-
let end = end.parse::<isize>().unwrap();
56+
let tuple = line.split_once("-").unwrap();
6057

61-
Range::new(start, end).unwrap()
58+
tuple.try_into().unwrap()
6259
})
6360
.collect_vec()
6461
}

src/utils/range.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,24 @@ impl From<RangeInclusive<isize>> for Range {
159159
}
160160
}
161161

162+
impl TryFrom<(&str, &str)> for Range {
163+
type Error = String;
164+
165+
fn try_from(value: (&str, &str)) -> Result<Self, Self::Error> {
166+
let start = value
167+
.0
168+
.parse::<isize>()
169+
.map_err(|e| format!("Error parsing start value: {}", e))?;
170+
171+
let end = value
172+
.1
173+
.parse::<isize>()
174+
.map_err(|e| format!("Error parsing end value: {}", e))?;
175+
176+
Self::new(start, end)
177+
}
178+
}
179+
162180
#[cfg(test)]
163181
mod tests {
164182
use crate::utils::range::Range;

0 commit comments

Comments
 (0)