# avro.encoder

> A module of avro's API.

The Avro binary encoder — the inverse of `avro.decoder`.

## Structs

### `Encoder`

```mojo
struct Encoder
```

Appends Avro binary data to an owned `List[UInt8]`.

Implements: `Copyable`, `Defaultable`, `Movable`, `Sized`

Fields:

- `out: List[UInt8]`

#### `__init__`

```mojo
def __init__(out self)
```

```mojo
def __init__(out self, capacity: Int)
```

#### `__len__`

```mojo
def __len__(self) -> Int
```

#### `take`

```mojo
def take(deinit self) -> List[UInt8]
```

#### `bytes`

```mojo
def bytes(self) -> List[UInt8]
```

#### `reset`

```mojo
def reset(mut self)
```

#### `write_boolean`

```mojo
def write_boolean(mut self, v: Bool)
```

#### `write_long`

```mojo
def write_long(mut self, v: Int64)
```

Zigzag varint.

#### `write_int`

```mojo
def write_int(mut self, v: Int32)
```

#### `write_float`

```mojo
def write_float(mut self, v: Float32)
```

#### `write_double`

```mojo
def write_double(mut self, v: Float64)
```

#### `write_fixed`

```mojo
def write_fixed(mut self, v: Span[UInt8])
```

#### `write_bytes`

```mojo
def write_bytes(mut self, v: Span[UInt8])
```

#### `write_string`

```mojo
def write_string(mut self, v: StringSpan)
```

#### `write_value`

```mojo
def write_value(mut self, schema: Schema, value: Value)
```

#### `write_value_at`

```mojo
def write_value_at(mut self, schema: Schema, i: Int, value: Value)
```

## Functions

### `encode_value`

```mojo
def encode_value(schema: Schema, value: Value) -> List[UInt8]
```

One-shot: encode `value` against `schema` into a fresh buffer.
