MCPcopy Create free account
hub / github.com/apache/fory / generate_enum

Method generate_enum

compiler/fory_compiler/generators/rust.py:754–783  ·  view source on GitHub ↗

Generate a Rust enum.

(
        self,
        enum: Enum,
        parent_stack: Optional[List[Message]] = None,
    )

Source from the content-addressed store, hash-verified

752 return [f"{prefix}{line}" if line else line for line in lines]
753
754 def generate_enum(
755 self,
756 enum: Enum,
757 parent_stack: Optional[List[Message]] = None,
758 ) -> List[str]:
759 """Generate a Rust enum."""
760 lines = []
761
762 type_name = self.get_type_identifier(enum)
763
764 # Derive macros
765 lines.append(
766 "#[derive(::fory::ForyEnum, Debug, Clone, PartialEq, Eq, Hash, Default)]"
767 )
768 lines.append("#[repr(i32)]")
769
770 lines.append(f"pub enum {type_name} {{")
771
772 # Enum values (strip prefix for scoped enums)
773 for i, value in enumerate(enum.values):
774 if i == 0:
775 lines.append(" #[default]")
776 value_name = self._enum_value_identifier_cache[self._cache_key(enum)][
777 self._cache_key(value)
778 ]
779 lines.append(f" {value_name} = {value.value},")
780
781 lines.append("}")
782
783 return lines
784
785 def generate_union(
786 self,

Callers 2

generate_moduleMethod · 0.95

Calls 3

get_type_identifierMethod · 0.95
_cache_keyMethod · 0.95
appendMethod · 0.45

Tested by

no test coverage detected