# `Musubi.State`
[🔗](https://github.com/fahchen/musubi/blob/v0.3.0/lib/musubi/state.ex#L1)

Compile-time DSL entrypoint for Musubi reusable state modules.

# `__using__`
*macro* 

```elixir
@spec __using__(keyword()) :: Macro.t()
```

Sets up a module to declare reusable Musubi state with `state do ... end`.

## Examples

    defmodule ExampleState do
      use Musubi.State

      state do
        field :title, String.t()
      end
    end

# `runtime_module?`

```elixir
@spec runtime_module?(module()) :: boolean()
```

Returns whether `module` is an `Musubi.State` runtime-ineligible module.

## Examples

    iex> defmodule RuntimeStateExample do
    ...>   use Musubi.State
    ...>   state do
    ...>     field :title, String.t()
    ...>   end
    ...> end
    iex> Musubi.State.runtime_module?(RuntimeStateExample)
    true
    iex> Musubi.State.runtime_module?(Musubi.Socket)
    false

---

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