Skip to content

Commit 09ac95e

Browse files
giacomocavalierilpil
authored andcommitted
update deserialising to use String instead of &str
1 parent 1c5f82e commit 09ac95e

File tree

2 files changed

+21
-5
lines changed

2 files changed

+21
-5
lines changed

src/version.rs

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use std::{cmp::Ordering, convert::TryFrom, fmt};
77
use self::parser::Parser;
88
use serde::{
99
Deserialize, Serialize,
10-
de::{self, Deserializer},
10+
de::{self, Deserializer, Visitor},
1111
};
1212

1313
mod lexer;
@@ -153,8 +153,24 @@ impl<'de> Deserialize<'de> for Version {
153153
where
154154
D: Deserializer<'de>,
155155
{
156-
let s: &str = Deserialize::deserialize(deserializer)?;
157-
Version::try_from(s).map_err(de::Error::custom)
156+
deserializer.deserialize_str(VersionVisitor)
157+
}
158+
}
159+
160+
struct VersionVisitor;
161+
162+
impl<'de> Visitor<'de> for VersionVisitor {
163+
type Value = Version;
164+
165+
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
166+
formatter.write_str("a Hex version string")
167+
}
168+
169+
fn visit_str<E>(self, value: &str) -> Result<Self::Value, E>
170+
where
171+
E: de::Error,
172+
{
173+
Version::try_from(value).map_err(de::Error::custom)
158174
}
159175
}
160176

src/version/lexer.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ pub struct Lexer<'input> {
122122

123123
impl<'input> Lexer<'input> {
124124
/// Construct a new lexer for the given input.
125-
pub fn new(input: &str) -> Lexer {
125+
pub fn new(input: &str) -> Lexer<'_> {
126126
let mut chars = input.char_indices();
127127
let c1 = chars.next();
128128
let c2 = chars.next();
@@ -263,7 +263,7 @@ impl<'input> Iterator for Lexer<'input> {
263263
mod tests {
264264
use super::*;
265265

266-
fn lex(input: &str) -> Vec<Token> {
266+
fn lex(input: &str) -> Vec<Token<'_>> {
267267
Lexer::new(input).map(Result::unwrap).collect::<Vec<_>>()
268268
}
269269

0 commit comments

Comments
 (0)