# `String.Chars`
[🔗](https://github.com/elixir-lang/elixir/blob/v1.20.0-rc.3/lib/elixir/lib/string/chars.ex#L7)

The `String.Chars` protocol is responsible for
converting a structure to a binary (only if applicable).

The only function required to be implemented is
`to_string/1`, which does the conversion.

The `to_string/1` function automatically imported
by `Kernel` invokes this protocol. String
interpolation also invokes `to_string/1` in its
arguments. For example, `"foo#{bar}"` is the same
as `"foo" <> to_string(bar)`.

# `t`

```elixir
@type t() :: term()
```

All the types that implement this protocol.

# `to_string`

```elixir
@spec to_string(t()) :: String.t()
```

Converts `term` to a string.

---

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