Receptor de método
&self
indica que el método toma prestado el objeto de forma inmutable. Hay otros posibles receptores para un método:
&self
: toma prestado el objeto del llamador utilizando una referencia compartida e inmutable. El objeto se puede volver a utilizar después.&mut self
: toma prestado el objeto del llamador mediante una referencia única y mutable. El objeto se puede volver a utilizar después.self
: asume el ownership del objeto y lo aleja del llamador. El método se convierte en el propietario del objeto. El objeto se eliminará (es decir, se anulará la asignación) cuando el método devuelva un resultado, a menos que se transmita su ownership de forma explícita. El ownership completa no implica automáticamente una mutabilidad.mut self
: igual que lo anterior, pero el método puede mutar el objeto.- Sin receptor: se convierte en un método estático de la estructura. Normalmente se utiliza para crear constructores que se suelen denominar
new
.
Además de las variantes self
, también hay tipos de envoltorios especiales que pueden ser tipos de receptor, como Box<Self>
.
Considera recalcar los conceptos “compartido e inmutable” y “único y mutable”. Estas restricciones siempre vienen juntas en Rust debido a las reglas del borrow checker, y self
no es una excepción. No es posible referenciar una estructura desde varias ubicaciones y llamar a un método mutable (&mut self
) en ella.