Mojo trait
Copyable
The Copyable trait denotes a type whose value can be copied.
Example implementing the Copyable
trait on Foo
which requires the __copyinit__
method:
struct Foo(Copyable):
var s: String
fn __init__(out self, s: String):
self.s = s
fn __copyinit__(out self, other: Self):
print("copying value")
self.s = other.s
You can now copy objects inside a generic function:
fn copy_return[T: Copyable](foo: T) -> T:
var copy = foo
return copy
var foo = Foo("test")
var res = copy_return(foo)
copying value
Implemented traits
AnyType
,
ExplicitlyCopyable
,
UnknownDestructibility
Aliases
__copyinit__is_trivial
alias __copyinit__is_trivial
A flag (often compiler generated) to indicate whether the implementation of __copyinit__
is trivial.
The implementation of __copyinit__
is considered to be trivial if:
- The struct has a compiler-generated trivial
__copyinit__
and all its fields have a trivial__copyinit__
method.
In practice, it means the value can be copied by copying the bits from one location to another without side effects.
__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.
Methods
__copyinit__
__copyinit__(out self: _Self, existing: _Self, /)
Create a new instance of the value by copying an existing one.
Args:
- existing (
_Self
): The value to copy.
Returns:
_Self
copy
copy(self: _Self) -> _Self
Explicitly construct a copy of self.
Returns:
_Self
: A copy of this value.
Was this page helpful?
Thank you! We'll create more content like this.
Thank you for helping us improve!