# LibTmux.Selection.one/2

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

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

Returns exactly one match, or a structured cardinality error; stops at the second match.

## 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> {:ok, pane} = Selection.one(panes, id: "%1")
iex> pane.id
"%1"
iex> {:error, error} = Selection.one(panes, id: "%9")
iex> error.kind
:no_match
iex> {:error, error} = Selection.one(panes)
iex> error.kind
:multiple_matches
```

## Type parameters

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

## Parameters

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