File tree Expand file tree Collapse file tree 1 file changed +21
-0
lines changed Expand file tree Collapse file tree 1 file changed +21
-0
lines changed Original file line number Diff line number Diff line change @@ -841,6 +841,27 @@ class RustGenerator : public BaseGenerator {
841841 code_ += " }" ;
842842 code_ += " }" ;
843843 code_ += " " ;
844+
845+ code_ += " impl<'de> serde::Deserialize<'de> for {{ENUM_TY}} {" ;
846+ code_ +=
847+ " fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>" ;
848+ code_ += " where" ;
849+ code_ += " D: serde::Deserializer<'de>," ;
850+ code_ += " {" ;
851+ code_ += " let s = String::deserialize(deserializer)?;" ;
852+ code_ += " for exp in {{ENUM_TY}}::ENUM_VALUES {" ;
853+ code_ += " if let Some(exp_name) = exp.variant_name()" ;
854+ code_ += " && exp_name == s" ;
855+ code_ += " {" ;
856+ code_ += " return Ok(exp.clone());" ;
857+ code_ += " }" ;
858+ code_ += " }" ;
859+ code_ += " Err(serde::de::Error::custom(format!(" ;
860+ code_ += " \" Unknown {{ENUM_TY}} variant: {s}\" " ;
861+ code_ += " )))" ;
862+ code_ += " }" ;
863+ code_ += " }" ;
864+ code_ += " " ;
844865 }
845866
846867 // Generate Follow and Push so we can serialize and stuff.
You can’t perform that action at this time.
0 commit comments