Уверите се да су ваши Руст пројекти добро организовани тако да се временом лакше одржавају.
Руст је одличан избор за изградњу сложених и поузданих апликација. Једна од основних вештина за развој Руст апликација је ефикасно структурирање ваших пројеката, укључујући укључивање пакета трећих страна.
Ефикасна организација пројекта је кључна за развој Руст апликација. Добро структуриране Руст апликације побољшавају сарадњу и лаку интеграцију апликација трећих страна, значајно смањујући време и труд који су потребни за развој апликација. Руст обезбеђује уграђени менаџер пакета и друге алате за ефикасну организацију и управљање кодом.
Постављање Руст пројеката
Постављање Руст пројеката је једноставно када инсталирате Руст на своју машину; можете користити Царго (Руст-ов уграђени менаџер пакета и систем изградње) да креирате и конфигуришете Руст пројекат. Слично је другим менаџерима пакета као што су нпм за Ноде.јс и пип за Питхон. Царго управља зависностима, компајлира код и генерише документацију, што га чини основним алатом за развој Руста.
Покрените ову команду да бисте потврдили инсталацију Царго-а:
царго --версион
Команда приказује инсталирану Царго верзију.
Можете креирати нови Руст пројекат са терет нов команда. Мораћете да наведете назив пројекта.
царго нев ми_пројецт
Команда ће креирати нови директоријум у тренутном директоријуму који садржи основне датотеке које су вам потребне за ваш Руст пројекат, укључујући царго.томл датотеку за управљање зависностима вашег пројекта.
Простор имена пакета Руст
Пакети и сандуци су битне компоненте у Русту. Сандуци су библиотеке или бинарне датотеке које Руст програмери могу користити и компајлирати за неку специфичну употребу, а пакети су колекција сандука. Пакети обично садрже сандук који садржи код за вишекратну употребу и бинарни фајл који обезбеђује ЦЛИ за сандук библиотеке.
Сандуци морају да садрже Царго.томл датотека која садржи метаподатке о пакету, као што су његово име, верзија, зависности и скрипте за прављење.
Руст пакети прате конвенцију именовања да би се избегли сукоби имена између пакета. Имена пакета морају бити глобално јединствена, мала слова и морају да садрже само слова, цифре и цртице. Ако назив пакета садржи више речи, раздвојите их цртицама, нпр. хипер-сервер.
Можете приступити коду унутар именског простора Руст пакета помоћу користити кључна реч праћена именима пакета и сандука.
Ево примера увоза Рнг функција из а ранд сандук:
користити ранд:: Рнг;
Можете креирати више именских простора за пакете. Када креирате фасциклу, креирате нови простор имена којем можете приступити помоћу ознаке тачке да бисте одредили путању до идентификатора.
У Русту може постојати више именских простора за пакете. Када креирате фасциклу, креирате нови простор имена. Да бисте приступили коду из другог именског простора, користите нотацију тачке да бисте навели путању до идентификатора.
Ево примера приступа функцији из другог именског простора:
// датотека у именском простору фолдера1
пубфнфолдер() -> у32 {
// неко тело функције овде
повратак0;
}// датотека у именском простору фолдера2
користити фолдер1::фолдер;
пубфнименик() {
// приступ функцији фолдера из именског простора фолдер1
дозволити фолдер_фунц = фолдер();
}
Програм дефинише два Руст модула у различитим именским просторима, фолдер1 и фолдер2 редом. Тхе фолдер1 модул садржи јавну функцију фолдер који враћа 32-битну неозначену целобројну вредност.
Тхе фолдер2 модул увози фолдер функција из фолдер1 именског простора са користити кључну реч, која омогућава именик функцију за приступ фолдер функција из фолдер1 модул. Тхе именик функција позива фолдер функцију, а повратна вредност је додељена фолдер_фунц променљива.
Мораћете да пишете великим словима назив идентификатора из пакета или сандука да бисте их извезли. Када извезете идентификатор, чините га доступним у другим пакетима који користе код.
Ево примера јавне функције која се може извести.
// функција експортована у друге пакете и сандуке
пубфнМиФунцтион() {
// неко тело функције овде
}
Такође ћете морати да користите пуб кључна реч. У Русту, тхе пуб кључна реч је скраћеница за јавности. Када функција, структура, енум, било који тип података Руст или је модул означен кључном речи пуб, постаје доступан ван свог модула. Ставка је приватна за свој модул без кључне речи пуб и може јој се приступити само из ње.
Дефинисање модула за контролу опсега и приватности
Можете користити модуле за контролу обима и приватности у Руст програмима. Модули вам омогућавају да организујете код у логичке јединице којима је лакше управљати и одржавати их.
Можете декларисати модуле са мод кључна реч праћена именом модула и витичастим заградама. Дефинисањем новог модула ствара се нови простор имена за његов садржај, што значи да функције, структуре или остале ставке дефинисане унутар модула су доступне само унутар модула осим што експлицитно извозите њих.
Модули помажу у спречавању сукоба имена, чинећи код интуитивнијим за разумевање.
Ево синтаксе за једноставан модул:
мод мој_модул {
// садржај модула иде овде
}
Унутар модула можете дефинисати променљиве, функције, структуре, енуме и друге типове.
мод мој_модул {
фнадд_нумберс(а: и32, б: и32) -> и32 {
а + б
}
}
Можете користити пуб кључну реч за извоз функције и приступ функцији у другим деловима програма.
мод мој_модул {
пубфнадд_нумберс(а: и32, б: и32) -> и32 {
а + б
}
}
Сада можете позвати адд_нумберс функције из других делова вашег програма.
Такође можете да контролишете приватност модула помоћу пуб кључна реч за дефиниције модула.
пубмод мој_модул {
пубфнадд_нумберс(а: и32, б: и32) -> и32 {
а + б
}
}
Сада ми_модуле модул је јаван и можете приступити модулу из других модула.
Ако желите да модул или ставку учините доступним одређеном модулу или скупу модула, можете користити паб (гајба) кључна реч. Тхе паб (гајба) кључна реч чини ставку доступном из модула унутар истог сандука, али не и из модула у другим сандуцима.
мод мој_модул {
пубструцтМиСтруцт {
пуб(сандук) соме_фиелд: у32,
}
}
Сада можете приступити одређеној ставци (у овом случају, неко_поље поље на МиСтруцт струцт) у другим деловима вашег програма.
фнглавни() {
дозволити ми_струцт = ми_модуле:: МиСтруцт { соме_фиелд: 42 };
принтлн!("{}", ми_струцт.соме_фиелд);
}
Тхе ми_струцт променљива је инстанца МиСтруцт струцт. Променљива приступа структури помоћу сепаратора путање (::). Тхе главни функција штампа неко_поље поље структуре са принтлн! макро.
Рустов модел власништва осигурава сигурност меморије
Организовање Руст кода је један од начина да осигурате да је ваш код лак за одржавање и подршку током времена. Лакше је ухватити се у коштац са грешкама и осигурати сигурност у добро организованом коду који прати правила и конвенције Руст заједнице.
Подразумевано, Руст обезбеђује да су програми безбедни у меморији са уграђеним моделом власништва. Модел власништва осигурава сигурност меморије тако што осигурава да варијабле у меморији имају једног јединственог власника. Модел власништва спречава трагове података и многе врсте грешака у меморији.