# `PB.Schema.Info.Field`
[🔗](https://github.com/hansihe/pb_ex/blob/v0.2.0/pb/lib/pb/schema/info.ex#L1)

Public projection of a compiled protobuf field or extension.

# `scalar`

```elixir
@type scalar() ::
  :double
  | :float
  | :int32
  | :int64
  | :uint32
  | :uint64
  | :sint32
  | :sint64
  | :fixed32
  | :fixed64
  | :sfixed32
  | :sfixed64
  | :bool
  | :string
  | :bytes
```

# `t`

```elixir
@type t() :: %PB.Schema.Info.Field{
  cardinality: PB.cardinality(),
  default: term() | :none,
  extendee: PB.message_name() | nil,
  json_name: String.t() | nil,
  name: PB.field_name() | PB.extension_name(),
  number: PB.field_number(),
  oneof: PB.field_name() | nil,
  options: map(),
  presence: PB.presence(),
  type: type()
}
```

# `type`

```elixir
@type type() ::
  {:scalar, scalar()}
  | {:message, PB.message_name()}
  | {:enum, PB.enum_name()}
  | {:map, type(), type()}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
