Skip to content

Commit

Permalink
Implement Deserialize for chain
Browse files Browse the repository at this point in the history
  • Loading branch information
gemcoder21 committed Aug 3, 2023
1 parent d31019d commit 2c0bebd
Showing 1 changed file with 16 additions and 1 deletion.
17 changes: 16 additions & 1 deletion primitives/src/chain.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use serde::{Serializer, Serialize};
use serde::{Serializer, Serialize, Deserialize, Deserializer};
use typeshare::typeshare;

#[derive(Copy, Clone, Debug)]
Expand Down Expand Up @@ -35,6 +35,21 @@ impl Serialize for Chain {
}
}

impl<'de> Deserialize<'de> for Chain {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: Deserializer<'de>,
{
let s: String = Deserialize::deserialize(deserializer)?;
let result = Self::new(s.as_str());

match result {
Some(result) => Ok(result),
_ => Err(serde::de::Error::custom(format!("Invalid chain: {}", s))),
}
}
}

impl Chain {
pub fn new(chain: &str) -> Option<Self> {
match chain {
Expand Down

0 comments on commit 2c0bebd

Please sign in to comment.