Skip to main content

Mojo trait

TrivialRegisterPassable

A marker trait to denote the type to be register passable trivial.

The compiler treats the type that conforms to this trait with the following constraints:

  • The type implicitly conforms to Copyable and the compiler synthesizes copy ctor that does a memcpy.
  • A trivial __del__ member is synthesized by the compiler too, so the type can’t be a linear type.
  • All declared members are required to also conforms to this trait, since you can’t memcpy or trivially destroy a container if one of its stored members has a non-trivial copy constructor.
  • You are not allowed to define a custom copy ctor or __del__.
struct Foo(TrivialRegisterPassable):
   ...

Implemented traits

AnyType, Copyable, ImplicitlyCopyable, ImplicitlyDestructible, Movable, RegisterPassable

Required methods

__init__

__init__(out self: _Self, *, copy: _Self)

Create a new instance of the value by copying an existing one.

Args:

  • copy (_Self): The value to copy.

Returns:

_Self

__init__(out self: _Self, *, deinit take: _Self)

Create a new instance of the value by moving the value of another.

Args:

  • take (_Self): The value to move.

Returns:

_Self

Provided methods

copy

copy(self: _Self) -> _Self

Explicitly construct a copy of self, a convenience method for Self(copy=self) when the type is inconvenient to write out.

Returns:

_Self: A copy of this value.

Was this page helpful?