Master enums across every programming language

From C's typedef enum to Rust's algebraic types, from Python's StrEnum to database enum fields, enum.cc provides a comprehensive guide to enums across all languages. Whether you're writing low-level drivers, building Web APIs, or designing data models, you'll find practical guidance here.

1 Language-specific enum cheat sheets
2 Schema design & serialization patterns
3 Deep-dive glossary & Q&A sections

Enums by Language

Curated enum tutorials, examples, and best practices for popular programming languages. Covers naming conventions, value conversion, serialization, and practical guidance for working with language-specific features.

Need definitions? Jump to FAQ
C & C++ typedef, enum class

Master `typedef enum`, scoped enums, `enum class`, and `sizeof enum` to solve type safety and conversion issues.

Covers type definitions, string conversion, and modern scoped enums—the most common scenarios in C/C++ projects.

C# flags, TryParse

Complete guide covering `enum.TryParse`, string mapping, Flags enums, `enum to list`, and Swagger/OAS mapping.

Includes string mapping, description attributes, numeric conversion, and common techniques for API documentation.

Java enum constructors

From basic definitions to `enum with values`, `valueOf`, and switch expressions, deep dive into enterprise Java enums.

Covers custom methods, ordinal values, string representations, and common issues in enterprise applications.

Python Enum & StrEnum

Practical guide to `Enum`, `IntEnum`, `StrEnum`, and `auto()`, covering Pydantic, FastAPI, serialization, and more.

Focuses on auto-assignment, type hints, string serialization, and framework integration best practices.

JavaScript & TypeScript const enums, string enums

Covers `as const`, `const enum`, Zod, OpenAPI/Swagger mapping, and frontend serialization compatibility strategies.

From `const enum` to `as const`, to how enums work with JSON Schema and validation libraries—complete guide.

Rust & Go enums & iota

Rust enum pattern matching, serialization, and trait constraints; Go's constant+iota enum simulation, JSON mapping, and validation strategies.

Deep dive into Rust's pattern matching and serialization, Go's `iota` constants, and string representation design.

SQL & Databases MySQL, Postgres, SQLite

Learn to create `CREATE TYPE ... AS ENUM`, best practices for `ENUM` columns, migration strategies, and enum definitions in Prisma and SQLAlchemy.

Covers Postgres type definitions, MySQL native enums vs lookup tables, and migration and compatibility strategies.

Frameworks & Tooling Rails, Swagger, Prisma

Covers Rails enum, Laravel, GraphQL, OpenAPI/Swagger Enum Schema, Zod validators, Pydantic models, and ecosystem tools.

Focuses on backend frameworks, API documentation, validation libraries, and multi-language toolchain integration.

Enum Fundamentals Definitions & FAQs

Basic terminology, enum semantics, quick reference for common questions, covering core Q&A like "what is enum", "define enum", "enum meaning".

Provides definitions, terminology, and explanations of common misconceptions to help you get started quickly and build a unified understanding.

Database Enum Patterns

Focus on MySQL, PostgreSQL, SQLite, and ORM frameworks like Prisma and SQLAlchemy to unlock enum field design, migration strategies, and compatibility solutions.

Enum FAQ

Direct, practical answers to the most commonly asked fundamental questions.

What does enum mean?

Enum (Enumeration) represents a set of named constants. It associates meaningful labels with underlying numeric or string values, helping code express business semantics and restrict value ranges. Different languages vary in syntax and underlying types, but share the same core goal: making code more readable and safer.

What is an enum in programming?

In programming, an enum is a data type used to define a finite set of named values. Examples include order status, permission levels, colors, etc. Compared to using raw numbers or strings, enums provide compiler checks, autocomplete, and clearer business semantics.

How do enums differ across languages?

C/C++ enums default to integer mapping, with `enum class` improving scope and type safety; Java/C# support methods, properties, and OOP integration; Python uses the `Enum` module to work with dynamic features; TypeScript uses `const enum` and `as const` for lightweight enums; Rust enums support algebraic data types (ADT). enum.cc provides dedicated guides for each language.

How to choose enum names?

Maintain consistent naming patterns (e.g., `PAID`, `CANCELLED`), avoid redundant meanings, and ensure values align with business semantics. Refer to our naming checklist and language-specific style guides, such as Java enums using UPPER_SNAKE_CASE and TypeScript considering PascalCase.

How to convert enum to string or int?

Different languages provide built-in or extension methods: C# uses `Enum.GetName`, `Enum.Parse`; Java uses `name()` and `valueOf()`; Python accesses `EnumMember.name`, `EnumMember.value`; C/C++ requires manual mapping or macros; TypeScript can use `Object.keys` / `Object.values`. See language-specific pages for details.