Send e Sync

Como o Rust sabe proibir o acesso compartilhado entre threads? A resposta está em duas características:

  • Send: um tipo T é Send se for seguro mover um T entre threads
  • Sync: um tipo T é Sync se for seguro mover um &T entre threads

Send e Sync são unsafe traits. O compilador os derivará automaticamente para seus tipos desde que contenham apenas os tipos Send e Sync. Você também pode implementá-los manualmente quando souber que são válidos.

  • One can think of these traits as markers that the type has certain thread-safety properties.
  • They can be used in the generic constraints as normal traits.