# Protox v2.0.4 - Table of Contents A fast, easy to use and 100% conformant Elixir library for Google Protocol Buffers (aka protobuf) ## Pages - [Repository Guidelines](agents.md) - [Changelog](changelog.md) - [How to contribute to protox](contributing.md) - [Protox](readme.md) - [Protox Benchmark](launch_benchmark.md) - [Generated code reference](reference.md) - [Types mapping](types_mapping.md) - [Migration guide (v1 to v2)](v1_to_v2_migration.md) ## Modules - [Protox](Protox.md): Use this module to generate the Elixir structs corresponding to a set of protobuf definitions and to encode/decode instances of these structures. - [Protox.Default](Protox.Default.md): Default values of Protocol Buffers types. - [Protox.Field](Protox.Field.md): The definition of a protobuf field (e.g. tag, type, etc.). - [Protox.Kind](Protox.Kind.md): Defines the kind of a field. - [Protox.MergeMessage](Protox.MergeMessage.md): This module provides a helper function to merge messages. - [Protox.MessageSchema](Protox.MessageSchema.md): Represents the schema of a Protocol Buffers message once it has been processed by Protox. - [Protox.OneOf](Protox.OneOf.md): Represents a [oneof field](https://protobuf.dev/programming-guides/proto3/#oneof) in protobuf. - [Protox.Scalar](Protox.Scalar.md): Represents a scalar field in a Protocol Buffer message. - [Protox.Types](Protox.Types.md): This module describes the types that define a protobuf message. - Exceptions - [Protox.DecodingError](Protox.DecodingError.md): This error is thrown when a data could not be decoded. - [Protox.EncodingError](Protox.EncodingError.md): This error is thrown when a message could not be encoded. - [Protox.IllegalTagError](Protox.IllegalTagError.md): This error is thrown when decoding data with a field which tag is 0. - [Protox.InvalidFieldAttributeError](Protox.InvalidFieldAttributeError.md): This error is thrown when a field is constructed with an invalid atribute. - [Protox.RequiredFieldsError](Protox.RequiredFieldsError.md): This error is thrown when encoding or decoding a Protobuf 2 message with unset required fields (that is, that have the value `nil`). ## Mix Tasks - [mix protox.generate](Mix.Tasks.Protox.Generate.md): Generate Elixir code from `.proto` files.