Structs, enums y traits

Rust Methods and impl Blocks

Attach behavior to a struct: methods with &self, changes with &mut self and constructors like new.

  • Intermedio
  • 4 min de lectura
  • 1 ejemplo ejecutable
Lo que aprenderás
  • impl blocks
  • &self and &mut self
  • Associated functions
Receiver → what the method can do
fn area(&self)read
fn scale(&mut self, f)change
fn new(w, h) -> Selfcreate

Functions that belong to a type

An impl block holds the functions that belong to a type. A method takes self as its first parameter and is called with a dot. A function without self, such as new, is called with the type name and ::.

&self borrows the rectangle for reading and &mut self borrows it for changing, which is why rect must be mut to call scale. Self is a short name for the type of the impl block. new and square are associated functions used as constructors.

Puntos clave

  1. &self reads the value.
  2. &mut self changes it.
  3. Rectangle::new has no self: it is a constructor.

Ejemplo ejecutable de Rust

Rust
Ejecutar código →
main.rs
struct Rectangle {
    width: f64,
    height: f64,
}

impl Rectangle {
    fn new(width: f64, height: f64) -> Self {
        Self { width, height }
    }

    fn square(size: f64) -> Self {
        Self::new(size, size)
    }

    fn area(&self) -> f64 {
        self.width * self.height
    }

    fn scale(&mut self, factor: f64) {
        self.width *= factor;
        self.height *= factor;
    }
}

fn main() {
    let mut rect = Rectangle::new(3.0, 4.0);
    println!("area: {}", rect.area());

    rect.scale(2.0);
    println!("scaled: {} x {} = {}", rect.width, rect.height, rect.area());
    println!("square: {}", Rectangle::square(5.0).area());
}
Obtén un botón Run para este ejemplo Resultado de ejecutar el código
area: 12
scaled: 6 x 8 = 48
square: 25

Practica

Abre el ejemplo en el compilador online, cambia un valor o añade una línea y predice la salida antes de ejecutarlo. Después rompe el código a propósito y lee el mensaje del compilador.

¿Terminaste esta lección?

Márcala como aprendida para seguir tu progreso.

Siguiente: Enums →

Practica con un reto

Usa lo que cubre esta lección para resolver un problema real. Cada reto se ejecuta en el navegador, con pruebas al instante y una revisión de IA.

Todos los retos