Skip to main content
Log in

Mojo decorators

A Mojo decorator is a higher-order function that modifies or extends the behavior of a struct, a function, or some other code. Instead of actually calling the higher-order function, you simply add the decorator (such as the @value decorator) above your code (such as a struct). The Mojo compiler then uses the decorator function to modify your code at compile time.

The following pages describe each built-in decorator with examples.

@always_inline

Copies the body of a function directly into the body of the calling function.

@__copy_capture

Captures register-passable typed values by copy.

@implicit

Marks a constructor as eligible for implicit conversion.

@nonmaterializable

Declares that a type should exist only in the parameter domain.

@parameter

Executes a function or if statement at compile time.

@register_passable

Declares that a type should be passed in machine registers.

@staticmethod

Declares a struct method as static.

@value

Generates boilerplate lifecycle methods for a struct.

Was this page helpful?