# LibTmux.Selection.one_or_nil/2

- **Module:** LibTmux
- **Package:** libtmux
- **Language:** Elixir
- **Kind:** function
- **Source:** https://github.com/libtmux/libtmux-elixir/blob/66b9b1c3f3f3186428abdfda2c76f5cf87446710/lib/libtmux/selection.ex#L137
- **Page:** https://libtmux.org/en/elixir/latest/reference/libtmux-selection-one_or_nil-2/

```
one_or_nil(selection, criteria \\ [])
@spec one_or_nil(t(item), LibTmux.Filter.input()) ::
        {:ok, item | nil} | {:error, LibTmux.Error.t()}
      when item: LibTmux.Schema.observation()
```

Returns one match or nil; a second match remains an error.

## Examples

```elixir
iex> alias LibTmux.{Selection, Snapshot}
iex> {:ok, snapshot} = Snapshot.new(%{pane: [%{id: "%0"}, %{id: "%1"}]},
...>   server_instance: "example", captured_from: 0, captured_until: 0,
...>   fields: %{pane: [:id]})
iex> panes = Snapshot.panes(snapshot)
iex> Selection.one_or_nil(panes, id: "%9")
{:ok, nil}
iex> {:ok, pane} = Selection.one_or_nil(panes, id: "%0")
iex> pane.id
"%0"
iex> {:error, error} = Selection.one_or_nil(panes)
iex> error.kind
:multiple_matches
```

## Type parameters

- `item` (bound `LibTmux.Schema.observation()`)

## Parameters

- `selection` (`t(item)`)
- `criteria` (`LibTmux.Filter.input()`)
