Como analisar um arquivo YAML na ferrugem

Como analisar um arquivo YAML na ferrugem
Os arquivos de configuração são frequentemente escritos na linguagem de serialização de dados YAML. YAML é uma abreviação que é uma linguagem de marcação, não um documento. Devido à sua natureza e simplicidade legíveis por humanos, a YAML é uma linguagem de computador bem conhecida. Além de ser usado sozinho, também pode ser combinado com os outros idiomas de script. Aqui com este artigo, o arquivo YAML será analisado em ferrugem. Uma caixa chamada ferrugem é usada para carregar texto localizado de uma coleção de arquivos baseados em mapas da YAML. No momento da compilação, os mapeamentos são transformados em dados que os programas de ferrugem podem entender, e o texto localizado pode ser carregado posteriormente invocando a macro fornecida. A ferrugem tem alguns módulos que podem ler arquivos YAML. Este artigo demonstrou como analisar os arquivos YAML em Rust usando o pacote YAML_RUST. O yaml_rust é o analisador puro para yaml em ferrugem.

Como obter o pacote YAML na linguagem Rust no Ubuntu 20.04

Rust nos fornece um pacote chamado yaml_rust, que temos que implementar dentro do nosso programa enquanto analisava qualquer arquivo YAML. Um recurso de segurança de memória e outras vantagens da linguagem ferrugem estão presentes no YAML_RUST, uma implementação pura de ferrugem do YAML 1.2. Vamos usar o comando de carga para construir um novo projeto dentro. Demos um comando "$ cargo novo exemplo1_cargo". Este comando cria um novo diretório chamado exemplo1_cargo. Para nomear o projeto, usamos o comando “$ cd exemplo1_cargo”.

Os arquivos que a carga cria são armazenados em um diretório com o mesmo nome que nosso projeto, exemplo1_cargo, pelo segundo comando. Liste os arquivos digitando o Exemplo1_Cargo Directory. Você notará que a carga produziu uma carga.Toml File e SRC Directory com o principal.arquivo rs. Para adicionar o Yaml-Rust dentro da ferrugem, abra a carga.Toml Arquivo e insira o “YAML-RUST = 0.4 ”na seção de dependências. À medida que a dependência da faixa de inhame é adicionada em nossa carga.Arquivo Toml, salve -o e vamos escrever um código no SRC principal.arquivo rs para analisar Yaml.

Exemplo 1
Com esta solução, queremos oferecer analisadores YAML 100% compatíveis com YAML 1.2. Existem apenas alguns problemas conhecidos que impedem o analisador de analisar corretamente quase todos os exemplos na especificação. Em algumas circunstâncias, um escalar simples vazio é uma exceção. Pode não ser um problema importante para a maioria dos usuários, pois a biblioteca popular Líbia também tem problemas para analisar essas amostras.

Aqui, temos que importar a dependência da YAML-RUST com a caixa externa. Uma dependência YAML-RUST escrita com a caixa externa é especificada por uma declaração de caixa externa. O identificador dado da declaração de caixa externa é então usada para ligar a caixa externa ao escopo de declaração. Depois disso, os documentos da YAML são carregados usando Yaml :: Yamlloader e acessados ​​como um VEC/Hashmap. Então, dentro do FN Main () do Programa Rust, temos uma declaração Let usada para criar os dados da estrutura YAML. Há outra declaração Let que é chamada com os documentos variáveis. Dentro dessa variável de documentos, desembrulhamos os dados da YAML, que são carregados dentro da variável "s".

A função Unwrap é usada para fornecer os resultados do cálculo e do pânico de retorno, se algo inesperado ocorrer. A variável DOC seleciona o primeiro documento, que é definido pela expressão LET. Com o comando println, a depuração do documento é tratada. Com o “assert_eq!”Expressão, temos acesso ao índice para o mapa e a matriz. A matriz ou chave inválida também é verificada pelo método assert, que lança a mensagem de BadValue se eles não existir. Então, o objeto YAML é despejado na string.

O código anterior compila com o comando Cargo Run, que gera os mapas e a matriz do documento YAML no formato de ferrugem. Além disso, o documento YAML é impresso dentro da figura a seguir:

Exemplo # 2
O exemplo anterior demonstra a análise de um documento YAML dentro do programa Rust. Aqui, criamos um arquivo YAML separado que a ferrugem processará. Observe que mantenha o arquivo YAML dentro do diretório onde a pasta SRC e a carga.O arquivo Toml está localizado ou então o compilador não conseguiu analisar o arquivo. Temos um Students_result.Arquivo Yaml para a análise em ferrugem. O documento dentro deste arquivo YAML é o seguinte:

Aqui, temos o programa de ferrugem para analisar o arquivo YAML. Antes disso, temos que adicionar a dependência yaml_rust na carga.Arquivo Toml.

Aqui, incluímos o pacote yaml_rust com a declaração de criação externa e também declaramos o yaml_rust, que tem os objetos YAML Loader e Yaml Emissor. O Yamlloader carrega o documento YAML e o emissor YAML atuam como o fluxo de saída. Em seguida, inserimos nossa implementação principal da função, onde o erro de IO é atribuído para a falha de operações do sistema de arquivos. Dentro do fn main (), deixamos declarações declararem as variáveis. A variável DOCS possui o comando std :: fs para copiar o arquivo “student_results.yaml ”.

Há outros dados variáveis ​​que carregam o arquivo YAML. Com o método Unwrap, exibimos os resultados do cálculo. Através da variável DOC, acessamos o documento YAML. Em seguida, iteramos os valores da chave do mapa e obtivemos a soma dos valores. As marcas dentro do documento YAML serão a soma da operação de iteração do mapa. Então, o padrão de correspondência da ferrugem para o caso: YAML :: Hash Operation. Além disso, para o Yaml :: Array, Yaml :: String e The Yaml :: Integer.

Conclusão

O artigo é tudo sobre a análise do arquivo YAML em ferrugem. A linguagem de ferrugem suporta arquivos e documentos YAML. Com a dependência da Yaml-Rust, podemos facilmente manipular os arquivos ou documentos da YAML em ferrugem. Temos que configurar a dependência da Yaml-Rust dentro da carga.Arquivo Toml, que pode nos permitir acessar o módulo YAML da ferrugem. Damos dois exemplos com a sintaxe da YAML e os analisamos com a linguagem de ferrugem.