Rust te permite asociar funciones con tus nuevos tipos. Hacemos esto con un bloque impl:
#[derive(Debug)]
struct Person {
name: String,
age: u8,
}
impl Person {
fn say_hello(&self) {
println!("Hello, my name is {}", self.name);
}
}
fn main() {
let peter = Person {
name: String::from("Peter"),
age: 27,
};
peter.say_hello();
}
Los métodos se llaman en una instancia de un tipo (como una estructura o enumeración), el primer parámetro representa la instancia como self.
Los desarrolladores pueden optar por utilizar métodos para aprovechar la sintaxis del receptor de métodos y ayudar a mantenerlos más organizados. Al utilizar métodos, podemos mantener todo el código de implementación en un lugar predecible.
self es un término abreviado y es de tipo &Person, por lo tanto podemos escribir esto como :
impl Person {
fn say_hello(self : &Person) {
println!("Hello, my name is {}", self.name);
}
}