# `BB.Error.Kinematics.UnknownLink`
[🔗](https://github.com/beam-bots/bb/blob/main/lib/bb/error/kinematics/unknown_link.ex#L5)

Link not found in robot topology.

Returned when a lookup names a link the robot does not have.

`:role` says which parameter was at fault, so a lookup taking both ends of a
chain — `BB.Robot.path_between/3` — can report an unknown source as a source
rather than misattributing it to the target. It is `nil` for lookups that take
only one link.

# `role`

```elixir
@type role() :: :source | :target
```

# `t`

```elixir
@type t() :: %BB.Error.Kinematics.UnknownLink{
  __exception__: term(),
  bread_crumbs: term(),
  class: term(),
  link: atom(),
  path: term(),
  robot: atom() | nil,
  role: role() | nil,
  splode: term(),
  stacktrace: term(),
  vars: term()
}
```

# `exception`

```elixir
@spec exception(opts :: Keyword.t()) :: %BB.Error.Kinematics.UnknownLink{
  __exception__: term(),
  bread_crumbs: term(),
  class: term(),
  link: term(),
  path: term(),
  robot: term(),
  role: term(),
  splode: term(),
  stacktrace: term(),
  vars: term()
}
```

Create an `Elixir.BB.Error.Kinematics.UnknownLink` without raising it.

## Keys

- :link
- :role
- :robot

---

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