Mojo trait
Movable
The Movable trait denotes a type whose value can be moved.
Implement the Movable
trait on Foo
which requires the __moveinit__
method:
struct Foo(Movable):
fn __init__(out self):
pass
fn __moveinit__(out self, deinit existing: Self):
print("moving")
You can now use the ^ suffix to move the object instead of copying it inside generic functions:
fn return_foo[T: Movable](var foo: T) -> T:
return foo^
var foo = Foo()
var res = return_foo(foo^)
moving
Implemented traits
AnyType
,
UnknownDestructibility
Aliases
__del__is_trivial
alias __del__is_trivial
A flag (often compiler generated) to indicate whether the implementation of __del__
is trivial.
The implementation of __del__
is considered to be trivial if:
- The struct has a compiler-generated trivial destructor and all its fields
have a trivial
__del__
method.
In practice, it means that the __del__
can be considered as no-op.
__moveinit__is_trivial
alias __moveinit__is_trivial
A flag (often compiler generated) to indicate whether the implementation of __moveinit__
is trivial.
The implementation of __moveinit__
is considered to be trivial if:
- The struct has a compiler-generated
__moveinit__
and all its fields have a trivial__moveinit__
method.
In practice, it means the value can be moved by moving the bits from one location to another without side effects.
Methods
__moveinit__
__moveinit__(out self: _Self, var existing: _Self, /)
Create a new instance of the value by moving the value of another.
Args:
- existing (
_Self
): The value to move.
Returns:
_Self
Was this page helpful?
Thank you! We'll create more content like this.
Thank you for helping us improve!