From c45dfa302593e949e0c53673a82f2db09f21647d Mon Sep 17 00:00:00 2001 From: MOZGIII Date: Fri, 8 Dec 2023 00:39:50 -0300 Subject: [PATCH 1/3] Convert Revision to u32 --- chromiumoxide_fetcher/src/revision.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/chromiumoxide_fetcher/src/revision.rs b/chromiumoxide_fetcher/src/revision.rs index 394d2718..ec6f1529 100644 --- a/chromiumoxide_fetcher/src/revision.rs +++ b/chromiumoxide_fetcher/src/revision.rs @@ -16,6 +16,12 @@ impl From for Revision { } } +impl From for u32 { + fn from(value: Revision) -> Self { + value.0 + } +} + impl TryFrom for Revision { type Error = FetcherError; From 79d9d1302de723a80adf7bb5ce4d70490b9bcdb3 Mon Sep 17 00:00:00 2001 From: MOZGIII Date: Fri, 8 Dec 2023 00:40:04 -0300 Subject: [PATCH 2/3] Parse revision --- chromiumoxide_fetcher/src/revision.rs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/chromiumoxide_fetcher/src/revision.rs b/chromiumoxide_fetcher/src/revision.rs index ec6f1529..edecb619 100644 --- a/chromiumoxide_fetcher/src/revision.rs +++ b/chromiumoxide_fetcher/src/revision.rs @@ -22,14 +22,21 @@ impl From for u32 { } } +impl std::str::FromStr for Revision { + type Err = FetcherError; + + fn from_str(s: &str) -> Result { + s.parse::() + .map_err(|e| FetcherError::InvalidRevision(e)) + .map(|v| Self(v)) + } +} + impl TryFrom for Revision { type Error = FetcherError; fn try_from(value: String) -> Result { - value - .parse::() - .map_err(|e| FetcherError::InvalidRevision(e)) - .map(|v| Self(v)) + value.parse() } } From 13828a7bd528a2b09746dabd174a102a332ddda4 Mon Sep 17 00:00:00 2001 From: MOZGIII Date: Fri, 8 Dec 2023 00:43:18 -0300 Subject: [PATCH 3/3] Narrow revision parsing error type --- chromiumoxide_fetcher/src/revision.rs | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/chromiumoxide_fetcher/src/revision.rs b/chromiumoxide_fetcher/src/revision.rs index edecb619..8768fc90 100644 --- a/chromiumoxide_fetcher/src/revision.rs +++ b/chromiumoxide_fetcher/src/revision.rs @@ -1,6 +1,4 @@ -use std::fmt; - -use crate::FetcherError; +use std::{fmt, num::ParseIntError}; /// A [`Revision`] represents a version of chromium. /// @@ -23,17 +21,15 @@ impl From for u32 { } impl std::str::FromStr for Revision { - type Err = FetcherError; + type Err = ParseIntError; fn from_str(s: &str) -> Result { - s.parse::() - .map_err(|e| FetcherError::InvalidRevision(e)) - .map(|v| Self(v)) + s.parse::().map(|v| Self(v)) } } impl TryFrom for Revision { - type Error = FetcherError; + type Error = ParseIntError; fn try_from(value: String) -> Result { value.parse()