O método __moveinit__
Defina como seu tipo será movido.
O método __moveinit__ é uma aula grátis de Mojo Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Mojo Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Mojo Academy inclui 4 aulas no total.
Partes desta aula ainda não foram traduzidas e aparecem em inglês.
Defining How to Move
To move a value, Mojo calls a special method named __moveinit__. It builds a new instance by taking over an old one. 🚚
It Runs on Transfer
When you use the caret transfer operator, __moveinit__ fires. It relocates the value instead of duplicating its data.
var b = a^ # calls __moveinit__The Method Signature
It receives the new instance and the owned source value. Because the source is owned, you may consume it directly.
fn __moveinit__(out self, owned existing: Self):
self.ptr = existing.ptrSteal, Do Not Copy
The trick is to transfer resources like a heap pointer from the source to the new instance, rather than allocating again.
No Double Free
After the move, the source must not free the data it gave away. Mojo handles this so the buffer is owned by exactly one instance.
Cheap for Big Values
Because __moveinit__ shuffles ownership instead of cloning bytes, moving a huge buffer costs almost nothing. That is the speed win.
Source Becomes Invalid
Once moved from, the source is consumed. Mojo stops you from reading it, guaranteeing you never touch relocated data.
Often Derived for You
Like copying, you usually do not write this. Conforming to Movable lets Mojo synthesize a field-wise __moveinit__ for you.
When to Write It Yourself
Customize __moveinit__ when your type owns a resource that needs explicit hand-off, such as a manually managed pointer.
Pairs with Copy
A type can define both copy and move. Mojo then picks the cheaper one, choosing a move whenever the source is no longer needed.
Enables Cheap Ownership
__moveinit__ is what makes ownership transfer fast and safe. It lets values flow through your program without wasteful duplication.
Quick Check
Lets check the move initializer.
Recap
__moveinit__ defines how your type moves, handing resources to a new instance cheaply and consuming the source. 🎯
Perguntas Frequentes
A aula “O método __moveinit__” é grátis?
Sim — o texto completo de “O método __moveinit__” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Mojo Academy, atualize para CoddyKit PRO. O curso de Mojo Academy inclui 4 aulas no total.
O que vou aprender em “O método __moveinit__”?
Defina como seu tipo será movido. Você pratica Mojo Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Mojo Academy?
Nenhuma experiência prévia é necessária. Mojo Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “O método __moveinit__”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Mojo Academy?
Sim. Cada aula de Mojo Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Semântica de cópia versus movimentação
- O método __copyinit__
- O método __moveinit__
- Destruição e __del__