mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-22 11:28:52 +00:00
[rust] add deser support for enum type (#8803)
* add deser support for enum type * update generated files * remove deser generator when bitflag enable * add deser test * Restore the Rust editions version * Remove unnecessary modifications
This commit is contained in:
@@ -71,6 +71,25 @@ impl Serialize for AnyAmbiguousAliases {
|
||||
}
|
||||
}
|
||||
|
||||
impl<'de> serde::Deserialize<'de> for AnyAmbiguousAliases {
|
||||
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
|
||||
where
|
||||
D: serde::Deserializer<'de>,
|
||||
{
|
||||
let s = String::deserialize(deserializer)?;
|
||||
for item in AnyAmbiguousAliases::ENUM_VALUES {
|
||||
if let Some(item_name) = item.variant_name() {
|
||||
if item_name == s {
|
||||
return Ok(item.clone());
|
||||
}
|
||||
}
|
||||
}
|
||||
Err(serde::de::Error::custom(format!(
|
||||
"Unknown AnyAmbiguousAliases variant: {s}"
|
||||
)))
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> flatbuffers::Follow<'a> for AnyAmbiguousAliases {
|
||||
type Inner = Self;
|
||||
#[inline]
|
||||
|
||||
@@ -71,6 +71,25 @@ impl Serialize for Any {
|
||||
}
|
||||
}
|
||||
|
||||
impl<'de> serde::Deserialize<'de> for Any {
|
||||
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
|
||||
where
|
||||
D: serde::Deserializer<'de>,
|
||||
{
|
||||
let s = String::deserialize(deserializer)?;
|
||||
for item in Any::ENUM_VALUES {
|
||||
if let Some(item_name) = item.variant_name() {
|
||||
if item_name == s {
|
||||
return Ok(item.clone());
|
||||
}
|
||||
}
|
||||
}
|
||||
Err(serde::de::Error::custom(format!(
|
||||
"Unknown Any variant: {s}"
|
||||
)))
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> flatbuffers::Follow<'a> for Any {
|
||||
type Inner = Self;
|
||||
#[inline]
|
||||
|
||||
@@ -71,6 +71,25 @@ impl Serialize for AnyUniqueAliases {
|
||||
}
|
||||
}
|
||||
|
||||
impl<'de> serde::Deserialize<'de> for AnyUniqueAliases {
|
||||
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
|
||||
where
|
||||
D: serde::Deserializer<'de>,
|
||||
{
|
||||
let s = String::deserialize(deserializer)?;
|
||||
for item in AnyUniqueAliases::ENUM_VALUES {
|
||||
if let Some(item_name) = item.variant_name() {
|
||||
if item_name == s {
|
||||
return Ok(item.clone());
|
||||
}
|
||||
}
|
||||
}
|
||||
Err(serde::de::Error::custom(format!(
|
||||
"Unknown AnyUniqueAliases variant: {s}"
|
||||
)))
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> flatbuffers::Follow<'a> for AnyUniqueAliases {
|
||||
type Inner = Self;
|
||||
#[inline]
|
||||
|
||||
@@ -71,6 +71,25 @@ impl Serialize for Race {
|
||||
}
|
||||
}
|
||||
|
||||
impl<'de> serde::Deserialize<'de> for Race {
|
||||
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
|
||||
where
|
||||
D: serde::Deserializer<'de>,
|
||||
{
|
||||
let s = String::deserialize(deserializer)?;
|
||||
for item in Race::ENUM_VALUES {
|
||||
if let Some(item_name) = item.variant_name() {
|
||||
if item_name == s {
|
||||
return Ok(item.clone());
|
||||
}
|
||||
}
|
||||
}
|
||||
Err(serde::de::Error::custom(format!(
|
||||
"Unknown Race variant: {s}"
|
||||
)))
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> flatbuffers::Follow<'a> for Race {
|
||||
type Inner = Self;
|
||||
#[inline]
|
||||
|
||||
@@ -59,6 +59,25 @@ impl Serialize for FromInclude {
|
||||
}
|
||||
}
|
||||
|
||||
impl<'de> serde::Deserialize<'de> for FromInclude {
|
||||
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
|
||||
where
|
||||
D: serde::Deserializer<'de>,
|
||||
{
|
||||
let s = String::deserialize(deserializer)?;
|
||||
for item in FromInclude::ENUM_VALUES {
|
||||
if let Some(item_name) = item.variant_name() {
|
||||
if item_name == s {
|
||||
return Ok(item.clone());
|
||||
}
|
||||
}
|
||||
}
|
||||
Err(serde::de::Error::custom(format!(
|
||||
"Unknown FromInclude variant: {s}"
|
||||
)))
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> flatbuffers::Follow<'a> for FromInclude {
|
||||
type Inner = Self;
|
||||
#[inline]
|
||||
|
||||
Reference in New Issue
Block a user