Читаоци попут вас помажу у подршци МУО. Када обавите куповину користећи везе на нашем сајту, можда ћемо зарадити провизију за партнере. Опширније.

Једна кључна карактеристика која Руст чини моћним и привлачнијим је његова подршка за структуре. Структуре су сложени типови података за груписање повезаних података. Они вам омогућавају да дефинишете прилагођене типове података са именованим пољима која побољшавају организацију кода и олакшавају манипулацију подацима.

Можете користити структуре за представљање различитих објеката, укључујући типове података и конфигурације које дефинише корисник. Структуре су флексибилније од многих других структура података. Њихова способност да инкапсулирају повезане податке чини их корисним јер стварају логичнији модел објеката из стварног света.

Дефинисање структура и поља структуре

Ви ћете дефинисати структуру користећи струцт кључна реч праћена именом структуре. Пратите ово тако што ћете навести имена поља структуре и њихова Руст типови података унутар пара витичастих заграда.

instagram viewer
струцтОсоба {
име: Низ,
старост: у8,
је_студент: боол,
}

Ово Особа структура има три поља. Тхе име поље је стринг, тхе старости поље је 8-битни цео број без предзнака, а је_студент поље је боолеан.

Можете користити структурне литерале да креирате инстанце структуре након дефиниције структуре. Литерали структуре одређују вредности поља структуре.

дозволити особа = Особа {
име: Низ::од("Јован"),
старост: 27,
је_студент: истина,
};

Тхе особа променљива је инстанца Особа струцт, креиран помоћу струцт литерала. Овај литерал инстанцира сва поља структуре са вредностима њиховог одговарајућег типа података.

Коришћење конструктора за креирање структура

Такође можете користити функцију конструктора да креирате инстанцу структуре.

импл Особа {
// Дефинишите функцију конструктора `нев` која узима `наме`, `аге` и
// параметри `ис_студент`
фнНова(име: Низ, старост: у8, је_студент: боол) -> Селф {
// Креирајте нову инстанцу структуре `Персон` и иницијализујте њена поља
// са наведеним вредностима
Селф {
име,
године,
је_студент,
}
}
}

// Позовите функцију конструктора `нев` структуре `Персон` и доделите
// резултујућа инстанца за `особу`
дозволити особа = Особа:: ново(Низ::од("Јован"), 27, истина);

Програм изнад дефинише конструктор за Особа струцт витх тхе импл кључна реч. Тхе Нова конструктор узима поља структуре као аргументе и враћа нову инстанцу структуре са иницијализованим вредностима.

Можете креирати а Особа пример са Нова конструктор, прослеђујући му одговарајуће аргументе.

Приступ и измена поља структуре

Можете приступити и мењати поља структуре користећи тачку. Једноставно користите тачку (.) иза којег следи име поља да бисте приступили или променили његову вредност.

// декларисање структуре Персон
струцтОсоба {
име: Низ,
старост: у8,
је_студент: боол,
}

фнглавни() {
// инстанцирање структуре
дозволитимут особа = Особа {
име: Низ::од("Јован"),
старост: 27,
је_студент: истина,
};

// исписује поља имена и старости структуре
принтлн!(„Име: {}“, персон.наме);
принтлн!(„Старост: {}“, персон.аге);

// модификује поље ис_студент
особа.ис_студент = лажно;

принтлн!(„Да ли је студент: {}“, персон.ис_студент);
}

Програм креира структуру, инстанцира структуру, штампа име, и старости поља и мења је_студент поље пре штампања поља.

Декларисање метода за структуре

за разлику од структуре у Ц, можете дефинисати методе на Руст структурама које раде на инстанци. Методе су функције које узимају референцу на структуру ради приступа и модификације. Такође можете користити тачку нотацију да позовете методе структуре и приступите њиховој функционалности.

Ево како можете декларисати методе за структуре и користити те методе за обављање операција:

струцтОсоба {
име: Низ,
старост: у8,
је_студент: боол,
}

импл Особа {
фнКажи Здраво(&селф) {
принтлн!(„Здраво, моје име је {} и имам {} година.“, селф.наме,
селф.аге);
}

фнхаве_биртхдаи(&мутселф) {
селф.аге += 1;
}
}

фнглавни() {
дозволитимут особа = Особа {
име: Низ::од("Јован"),
старост: 27,
је_студент: истина,
};

персон.саи_хелло();

персон.хаве_биртхдаи();

принтлн!("Ново доба: {}", персон.аге);
}

Програм дефинише две методе за Особа струцт. Тхе Кажи Здраво метода узима референцу на селф и штампа поздрав који укључује име и године особе. Тхе хаве_биртхдаи метода узима променљиву референцу на селф и повећава старост особе.

Рустов модел власништва оптимизује управљање меморијом

Структуре су разноврсне структуре података, које делују као нека врста минималног еквивалената класе.

Као и код других Руст структура података, требало би да се придржавате Руст-ових правила о власништву када радите са структурним варијаблама. Модел власништва осигурава да ефикасно управљате меморијом у својим програмима, спречавајући уобичајене проблеме као што су нулти и висећи показивачи.