Generate a Rust enum.
(
self,
enum: Enum,
parent_stack: Optional[List[Message]] = None,
)
| 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, |
no test coverage detected