Métodos

Rust permite que vocĂȘ associe funçÔes aos seus novos tipos. VocĂȘ faz isso com um bloco impl:

#[derive(Debug)]
struct Pessoa {
    nome: String,
    idade: u8,
}

impl Pessoa {
    fn dizer_ola(&self) {
        println!("OlĂĄ, meu nome Ă© {}", self.nome);
    }
}

fn main() {
    let pedro = Pessoa {
        nome: String::from("Pedro"),
        idade: 27,
    };
    pedro.dizer_ola();
}

Pontos Chave:

  • Pode ser Ăștil introduzir mĂ©todos comparando-os com funçÔes.
    • MĂ©todos sĂŁo chamados em uma instĂąncia de um tipo (como struct ou enum), o primeiro parĂąmetro representa a instĂąncia como self.
    • Os desenvolvedores podem optar por usar mĂ©todos para aproveitar a sintaxe do receptor do mĂ©todo e ajudar a mantĂȘ-los mais organizados. Usando mĂ©todos, podemos manter todo o cĂłdigo de implementação em um local previsĂ­vel.
  • Destaque o uso da palavra-chave self, um receptor de mĂ©todo.
    • Mostre que Ă© um termo abreviado para self:Self e talvez mostre como o nome da struct tambĂ©m poderia ser usado.
    • Explique que Self Ă© um apelido de tipo para o tipo em que o bloco impl estĂĄ e pode ser usado em qualquer outro lugar no bloco.
    • Observe como self Ă© usado como outras Structs e a notação de ponto pode ser usada para se referir a campos individuais.
    • Este pode ser um bom momento para demonstrar como &self difere de self modificando o cĂłdigo e tentando executar dizer_ola duas vezes.
  • Descreveremos a distinção entre os receptores de mĂ©todo a seguir.