Методы struct
Методы в Rust - это функции, которые объявляются внутри блока impl для конкретной структуры. Первым параметром метода всегда идёт self, который представляет экземпляр структуры. Параметром метод может принимать &self (заимствование), &mut self (изменяемое заимствование) или self (владение). Методы вызываются через точку: instance.method.
Синтаксис
impl StructName
{
fn method_name(&self, param: Type) -> ReturnType
{
// body
}
}
Пример
Давайте создадим структуру Rectangle с полями width и height, а затем определим метод area, который вычисляет площадь:
struct Rectangle
{
width: u32,
height: u32,
}
impl Rectangle
{
fn area(&self) -> u32
{
self.width * self.height
}
}
fn main()
{
let rect = Rectangle { width: 10, height: 5 };
let res = rect.area();
println!("{}", res);
}
Результат выполнения кода:
50
Пример
Давайте добавим метод scale, который изменяет размеры прямоугольника. Для этого используем &mut self:
struct Rectangle
{
width: u32,
height: u32,
}
impl Rectangle
{
fn scale(&mut self, factor: u32)
{
self.width *= factor;
self.height *= factor;
}
fn area(&self) -> u32
{
self.width * self.height
}
}
fn main()
{
let mut rect = Rectangle { width: 10, height: 5 };
rect.scale(2);
let res = rect.area();
println!("{}", res);
}
Результат выполнения кода:
200
Смотрите также
-
ключевое слово
impl,
которое используется для определения методов структуры -
ключевое слово
Self,
которое ссылается на текущий тип внутри impl -
параметр
&self,
который передаёт заимствованный экземпляр структуры -
ассоциированные функции
associated functions,
которые не принимают self и вызываются через ::