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 desdemain
: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.