Métodos

Los métodos son funciones asociadas a un tipo. El argumento self de un método es una instancia del tipo al que está asociada:

struct Rectangle {
    width: u32,
    height: u32,
}

impl Rectangle {
    fn area(&self) -> u32 {
        self.width * self.height
    }

    fn inc_width(&mut self, delta: u32) {
        self.width += delta;
    }
}

fn main() {
    let mut rect = Rectangle { width: 10, height: 5 };
    println!("old area: {}", rect.area());
    rect.inc_width(5);
    println!("new area: {}", rect.area());
}
  • Abordaremos en mayor profundidad los métodos en el ejercicio de hoy y en la clase de mañana.
  • Añade un método estático denominado Rectangle::new y llámalo desde main:

    fn new(width: u32, height: u32) -> Rectangle {
        Rectangle { width, height }
    }
  • Aunque técnicamente Rust no tiene constructores personalizados, los métodos estáticos se utilizan habitualmente para inicializar estructuras, pero no es obligatorio. El constructor real, Rectangle { width, height }, podría llamarse directamente. Consulta el Rustnomicon.

  • Añade un constructor Rectangle::square(width: u32) para mostrar que esos métodos estáticos puede utilizar parámetros arbitrarios.