ownership

API Reference

Protocols

protocol Borrowed

Marks a nominal value as a non-owning view for lowering and drop analysis.

protocol Owner

Marks a nominal handle as an owner of managed reference-counted storage.

protocol Copy

A value that duplicates freely: using it never moves it. Scalars conform intrinsically; a user type may conform when every field is Copy.

protocol Clone

A buffer-backed value whose clone is an O(1) refcount bump (copy-on-write). Conformance is legal only when every non-Copy field is itself Clone.

protocol Deinit

A destructor run when an owned value is dropped at scope exit. Linear types may not conform: they must be consumed explicitly.

protocol Send

Checked transfer capability (ADR 0050): an owned Send value may safely move to another worker. Conformance is structural by default — an aggregate is Send when every stored component is — and a safe-source claim is validated field-by-field, so it cannot lie. Raw pointers, 'heap references, closures, and non-atomic copy-on-write buffers are not Send; a linear declaration may claim explicitly but never derives automatically.

protocol Sync

Checked share capability (ADR 0050): shared references to a Sync value may safely be used by multiple workers. Sync(T) iff Send(&T). Same structural derivation and claim validation as Send.