Руст је један од најбољих избора за прављење ЦЛИ апликација. Започните тако што ћете направити основну апликацију за преузимање крипто података.

ЦЛИ (Интерфејс командне линије) је кључан у развоју софтвера и администрацији система. ЦЛИ су лагани програми засновани на тексту који нуде поједностављен начин интеракције са рачунарима који су повољни за програмере и напредне кориснике за вишеструке случајеве употребе, укључујући аутоматизацију, скриптовање и даљинско управљање администрација.

Руст постаје све популарнији за прављење ЦЛИ апликација. Руст пружа моћне функције као што су фино зрнаста контрола над алокацијом меморије и безбедношћу нити, безбедност меморије, истовременост и паралелизам које можете да искористите за прављење моћних ЦЛИ апликација. Руст се такође може похвалити напредним екосистемом библиотека и оквира који су експлицитно скројени за изградњу ЦЛИ апликација.

Почетак изградње ЦЛИ апликација са Руст-ом

Постоји неколико пакета независних произвођача за прављење ЦЛИ апликација у Русту, укључујући

instagram viewer
Пљесак, СтруцтОпт, и Термион сандуке. Ови сандуци пружају функције које су вам потребне за развој модерних ЦЛИ алата.

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

Помоћу стд:: енв сандука, ваши Руст програми могу да комуницирају са окружењем и прилагођавају своје понашање на основу различити фактори, укључујући променљиве окружења, аргументе командне линије и тренутни рад именик.

Покрените ову команду да бисте креирали нови Руст пројекат за своју ЦЛИ апликацију са Царго, Руст-овим алатом за управљање пакетима:

царго нови црипто_цли

Научићете како да направите ЦЛИ апликацију која позива Цоинмаркетцап АПИ са Реквест сандук који пружа карактеристике за израду ХТТП захтеви у Русту.

Отвори свој Царго.томл датотеку и додајте реквест и токио сандуке према зависностима вашег пројекта:

[зависности]
токио = {верзија = "1.15", карактеристике = ["пун"] }
реквест = {верзија = "0.11", карактеристике = ["јсон"] }
серде = {верзија = "1.0", карактеристике = ["извести"] }
серде_јсон = "1.0"

Тхе токио црате је асинхрона библиотека времена извршавања која интероперише са реквест за асинхроно програмирање. Тхе серде и серде_јсон сандуке помажу са ЈСОН серијализација и десеријализација.

У срц фолдер вашег Руст пројекта, креирајте апи.рс и цли.рс датотеке у којима ћете имплементирати АПИ позив и ЦЛИ функционалност.

додирните срц/апи.рс срц/цли.рс

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

Израда АПИ захтева за ЦоинМаркетЦап АПИ са Реквест-ом

ЦоинМаркетЦап-ов АПИ омогућава вам да приступите и интегришете податке о криптовалутама у њихове апликације. АПИ обезбеђује крајње тачке за листе, тржишне котације, информације о размени, алате за конверзију, историјске податке и метаподатке.

Када се пријавите, можете се пријавити за ЦоинМаркетЦап налог и преузети свој АПИ кључ на страници програмера Цоинмаркетцап-а. Такође можете погледати документацију за детаљна упутства и ограничења стопе.

Да бисте послали АПИ захтев за /v2/cryptocurrency/quotes/latest крајња тачка која враћа најновију тржишну понуду за једну или више криптовалута, мораћете да дефинишете структуре за податке које желите да издвојите из АПИ-ја и наведите атрибуте са Сердеовим деривним својством.

Затим можете затражити АПИ до крајње тачке и користити серде_јсон црате да десериализује ЈСОН податке у структуру за лакше операције на типовима података Руст.

Ево дефиниција структуре који преузима ид, име, симбол, и цитат податке наведених криптовалута

#[дериве (Дебуг, Десериализе, Сериализе)]
струцтАпиРеспонсе {
подаци: Подаци,
}

#[дериве (Дебуг, Десериализе, Сериализе)]
струцтПодаци {
// Додајте поља која су вам потребна из објекта података
#[серде (преименуј = "1")]
крипто_1: криптовалута,

#[серде (преименуј = "2")]
крипто_2: криптовалута,

#[серде (преименуј = "3")]
крипто_3: криптовалута,

#[серде (преименуј = "4")]
крипто_4: криптовалута,
}

#[дериве (Дебуг, Десериализе, Сериализе)]
струцткриптовалута {
ид: у32,
име: Низ,
симбол: Низ,
// Додајте друга поља по потреби
цитат: Цитат,
}

#[дериве (Дебуг, Десериализе, Сериализе)]
струцтЦитат {
УСД: КуотеДетаилс,
}

#[дериве (Дебуг, Десериализе, Сериализе)]
струцтКуотеДетаилс {
Цена: ф64,
волуме_24х: ф64,
// Додајте друга поља по потреби
}

АПИ враћа податке који могу бити више него што вам је потребно, али са серде сандука, можете одредити тачне податке који су вам потребни, као што је приказано изнад.

Сада можете да затражите крајњу тачку помоћу Реквест-а тако што ћете креирати новог клијента који прави ГЕТ захтев са потребним параметрима.

користити реквест:: Клијент;
користити реквест:: Грешка;

пубасинцфнкрипто() -> Резултат {
дозволити клијент = Клијент:: нев();

дозволити урл = " https://pro-api.coinmarketcap.com/v2/cryptocurrency/quotes/latest";

дозволити парамс = [
("ид", "1,2,3,4"),
("претворити", "АМЕРИЧКИ ДОЛАР"), // Конвертујте тржишне вредности у УСД
];

дозволити одговор = цлиент.гет (урл)
.хеадер(„Кс-ЦМЦ_ПРО_АПИ_КЕИ“, „ВАШ АПИ КЉУЧ ОВДЕ“)
.куери(&парамс)
.сенд().чекати?;
;

дозволити резултат: АпиРеспонсе = серде_јсон:: фром_стр(&*респонсе.тект().чекати?;).унврап();

принтлн!("{:#?}", резултат);
Ок(())
}

Тхе крипто функција је токио-омогућена асинхрона функција која захтева крајњу тачку са клијент.добити функцију након креирања клијентске инстанце са Клијент:: ново методом.

Тхе заглавље позив функције на инстанци градитеља захтева преузима ваш АПИ кључ, тхе упит функција узима параметре, а послати функција шаље захтев.

Тхе крипто функција десеријализује ЈСОН одговор помоћу серде_јсон фром_стр метод који узима ЈСОН стринг.

Коначно, крипто функција штампа резултат операције десеријализације на конзоли.

Преузимање ЦЛИ аргумената у Руст-у

У вашем цли.рс датотеку, увезићете крипто функција из апи.рс датотеку и позовите функцију ако корисник унесе „крипто“ као аргумент за покретање пројекта са царго рун команда.

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

користити стд:: енв;
користити црате:: апи:: црипто;

пубасинцфнцли() {
дозволити аргументи: Вец<Низ> = енв:: аргс().цоллецт();

ако аргс.лен() > 1 && аргс[1] == "крипто" {
црипто().чекати.унврап();
} друго {
принтлн!(„Неважећа команда. Употреба: царго рун црипто");
}
}

Тхе цли функција преузима све аргументе из командне линије са енв:: аргс().цоллецт() функција. Тхе ако друго изјава проверава да ли постоји додатни аргумент, „крипто“. Ако услов вреди тачно, цли функција позива крипто функција; иначе, тхе цли функција штампа стринг на конзоли.

Коначно, можете позвати цли функција у главни функција. Морате додати #[токио:: маин] атрибут пошто главни функције не могу бити асинхроне у Русту.

мод апи;
мод цли;
користити сандук:: цли:: цли;

#[токио:: маин]
асинцфнглавни() {
цли().чекати;
}

Тхе главни функција позива цли функција са чекати функција која суспендује извршење до резултата а Будућност спремно је.

Ево резултата покретања царго рун крипто команда:

Можете да направите софистициране веб апликације у Русту

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