Hvordan du kan analysere en yaml -fil i rust

Hvordan du kan analysere en yaml -fil i rust
Konfigurasjonsfiler er ofte skrevet i data serialiseringsspråk yaml. YAML er en forkortelse som er et markeringsspråk, ikke et dokument. På grunn av sin menneskelige lesbare natur og enkelhet, er Yaml et kjent dataspråk. I tillegg til å bli brukt alene, kan det også kombineres med de andre skriptspråkene. Her med denne artikkelen vil YAML -filen bli analysert i rust. En kasse kalt Rust brukes til å laste inn lokal tekst fra en samling av YAML-kartbaserte filer. Ved kompileringstidspunktet blir kartleggingen omdannet til data som rustprogrammer kan forstå, og lokalisert tekst kan deretter lastes inn ved å påkalle den medfølgende makroen. Rust har noen moduler som kan lese YAML -filer. Denne artikkelen har demonstrert hvordan du kan analysere YAML -filer i Rust ved hjelp av YAML_RUST -pakken. Yaml_rust er den rene parseren for Yaml i rust.

Hvordan få YAML -pakken i rustspråket i Ubuntu 20.04

Rust gir oss en pakke som heter YAML_RUST, som vi må implementere i programmet vårt mens vi analyserer en hvilken som helst YAML -fil. En minnesikkerhetsfunksjon og andre fordeler med rustspråket er til stede i YAML_RUST, en ren rustimplementering av YAML 1.2. La oss bruke lastekommandoen til å bygge et nytt prosjekt inne. Vi har gitt en kommando “$ Cargo New Exploy1_cargo”. Denne kommandoen oppretter en ny katalog som heter eksempel1_cargo. For å nevne prosjektet har vi brukt kommandoen “$ CD Eksempel1_cargo”.

Filene som Cargo oppretter er lagret i en katalog med samme navn som vårt prosjekt, Eksempel1_cargo, etter den andre kommandoen. Liste opp filene ved å legge inn Exploy1_cargo -katalogen. Du vil merke at last har produsert en last.Toml -fil og SRC -katalogen med hoved.RS -fil. For å legge Yaml-rust inne i rusten, åpne lasten.Toml-filen og sett inn “YAML-rust = 0.4 ”i avhengighetsdelen. Ettersom yam-rustavhengigheten legges til i lasten vår.Toml -fil, lagre den, og la oss flytte for å skrive en kode i SRC -hoved.RS -fil for å analysere Yaml.

Eksempel 1
Med denne løsningen ønsker vi å tilby YAML -analysere som er 100% i samsvar med YAML 1.2. Det er bare noen få kjente problemer som forhindrer analysøren i å analysere nesten alle eksempler i spesifikasjonen. I noen tilfeller er en tom vanlig skalar et unntak. Det er kanskje ikke et stort problem for de fleste brukere, siden det populære biblioteket Libyaml også har problemer med å analysere disse prøvene.

Her må vi importere Yaml-rust-avhengigheten med ekstern kasse. En avhengighet Yaml-rust skrevet med den eksterne kassen er spesifisert av en ekstern kasse-erklæring. Den eksterne kasserklæringen som er gitt identifikator brukes deretter til å binde den ytre kassen i det erklærende omfanget. Etter det lastes YAML -dokumentene med YAML :: Yamlloader og får tilgang til som en VEC/Hashmap. Deretter, innenfor FN Main () av ​​Rust -programmet, har vi en Let -uttalelse som brukes til å lage YAML -strukturdataene. Det er en annen Let -uttalelse som kalles med de variable dokumentene. Inne i at Docs -variabelen har vi pakket ut YAML -dataene, som er lastet inn i variabelen “S”.

Unnpakningsfunksjonen brukes til å gi resultatene av beregningen og returpanikken hvis noe uventet oppstår. DOC -variabelen velger det første dokumentet, som er definert av Let Expression. Med Println -kommandoen blir feilsøking av dokumentet håndtert. Med “assert_eq!”Uttrykk, vi har tilgang til indeksen for kartet og matrisen. Den ugyldige matrisen eller tasten er også bekreftet av Assert Method, som kaster BadValue -meldingen hvis de ikke eksisterer. Deretter dumpes YAML -objektet i strengen.

Den forrige koden sammenstiller med Cargo Run -kommandoen, som genererer kartene og utvalget av YAML -dokumentet i rustformatet. YAML -dokumentet er også skrevet ut i følgende figur:

Eksempel nr. 2
Det forrige eksemplet demonstrerer analysering av et YAML -dokument inne i Rust -programmet. Her har vi laget en egen YAML -fil som Rust vil behandle. Merk at oppbevar YAML -filen i katalogen der SRC -mappen og lasten.Toml -filen er lokalisert, ellers kunne ikke kompilatoren analysere filen. Vi har en student_result.YAML -fil for analysering i rust. Dokumentet i denne YAML -filen er som følger:

Her har vi Rust -programmet for å analysere YAML -filen. Før det må vi legge til YAML_RUST -avhengigheten i lasten.Toml -fil.

Her har vi inkludert YAML_RUST -pakken med Extern Create -erklæringen og erklært også YAML_RUST, som har YAML Loader og YAML emitterobjekter. Yamlloaderen laster YAML -dokumentet og YAML -emitteren som utgangsstrømmen. Deretter skrev vi inn vår viktigste funksjonsimplementering, der IO -feilen er tilordnet for feil i filsystemoperasjonene. Inne i FN Main () har vi latt uttalelser erklære variablene. Docs -variabelen har STD :: FS -kommandoen for å kopiere filen “Student_results.yaml ”.

Det er en annen variabel data som laster YAML -filen. Med utpakkemetoden har vi vist resultatene av beregningen. Gjennom variabelen har vi fått tilgang til YAML -dokumentet. Deretter itererte vi kartets nøkkelverdier og fikk summen av verdiene. Merkene inne i YAML -dokumentet vil være summen av kart iterasjonsoperasjonen. Deretter rustkampmønsteret for saken: YAML :: Hash -operasjonen. Også for Yaml :: Array, Yaml :: String, og Yaml :: heltall.

Konklusjon

Artikkelen handler om parse for YAML -filen i rust. Rustspråket støtter YAML -filer og dokumenter. Med YAML-rustavhengighet kan vi enkelt manipulere YAML-filene eller dokumentene i rust. Vi må konfigurere YAML-rustavhengigheten inne i lasten.Toml -filen, som kan tillate oss å få tilgang til YAML -modulen til rust. Vi har gitt to eksempler med YAML -syntaks og analysert dem med rustspråket.