Skip to content

Commit 472ba69

Browse files
committed
Fix from_str lint
1 parent 9a5979c commit 472ba69

File tree

1 file changed

+23
-13
lines changed

1 file changed

+23
-13
lines changed

selene-lib/src/standard_library/lua_versions.rs

+23-13
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
use std::str::FromStr;
2+
13
use serde::{Deserialize, Serialize};
24

35
#[derive(Clone, Debug, PartialEq, Eq)]
@@ -13,18 +15,6 @@ pub enum LuaVersion {
1315
}
1416

1517
impl LuaVersion {
16-
pub fn from_str(value: &str) -> Self {
17-
match value {
18-
"lua51" => Self::Lua51,
19-
"lua52" => Self::Lua52,
20-
"lua53" => Self::Lua53,
21-
"lua54" => Self::Lua54,
22-
"luau" => Self::Luau,
23-
"luajit" => Self::LuaJIT,
24-
_ => Self::Unknown(value.to_string()),
25-
}
26-
}
27-
2818
pub fn to_str(&self) -> &str {
2919
match self {
3020
Self::Lua51 => "lua51",
@@ -64,6 +54,22 @@ impl LuaVersion {
6454
}
6555
}
6656

57+
impl FromStr for LuaVersion {
58+
type Err = ();
59+
60+
fn from_str(value: &str) -> Result<Self, Self::Err> {
61+
match value {
62+
"lua51" => Ok(Self::Lua51),
63+
"lua52" => Ok(Self::Lua52),
64+
"lua53" => Ok(Self::Lua53),
65+
"lua54" => Ok(Self::Lua54),
66+
"luau" => Ok(Self::Luau),
67+
"luajit" => Ok(Self::LuaJIT),
68+
_ => Err(()),
69+
}
70+
}
71+
}
72+
6773
pub enum LuaVersionError<'a> {
6874
FeatureNotEnabled(&'a str),
6975
Unknown(&'a str),
@@ -84,6 +90,10 @@ impl<'de> Deserialize<'de> for LuaVersion {
8490
D: serde::Deserializer<'de>,
8591
{
8692
let value = String::deserialize(deserializer)?;
87-
Ok(Self::from_str(&value))
93+
if let Ok(version) = Self::from_str(&value) {
94+
Ok(version)
95+
} else {
96+
Ok(Self::Unknown(value))
97+
}
8898
}
8999
}

0 commit comments

Comments
 (0)