# `Snakepit.ZeroCopyRef`
[🔗](https://github.com/nshkrdotcom/snakepit/blob/v0.11.1/lib/snakepit/zero_copy_ref.ex#L1)

Opaque handle for zero-copy payloads.

The handle metadata travels through the runtime so adapters can resolve
DLPack or Arrow buffers without copying.

# `device`
[🔗](https://github.com/nshkrdotcom/snakepit/blob/v0.11.1/lib/snakepit/zero_copy_ref.ex#L10)

```elixir
@type device() :: :cpu | :cuda | :mps
```

# `kind`
[🔗](https://github.com/nshkrdotcom/snakepit/blob/v0.11.1/lib/snakepit/zero_copy_ref.ex#L9)

```elixir
@type kind() :: :dlpack | :arrow
```

# `t`
[🔗](https://github.com/nshkrdotcom/snakepit/blob/v0.11.1/lib/snakepit/zero_copy_ref.ex#L25)

```elixir
@type t() :: %Snakepit.ZeroCopyRef{
  bytes: non_neg_integer() | nil,
  copy: boolean() | nil,
  device: device() | nil,
  dtype: atom() | String.t() | nil,
  kind: kind(),
  metadata: map() | nil,
  owner: :elixir | :python | nil,
  ref: reference(),
  shape: tuple() | list() | nil
}
```

---

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