Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Introducao

English | 中文 | 日本語 | 한국어 | Français | Deutsch | Español | Português | Svenska | Suomi | Nederlands

rust-config-tree fornece carregamento reutilizavel de arvores de configuracao e auxiliares de CLI para aplicacoes Rust que usam arquivos de configuracao em camadas.

O crate e projetado em torno de uma pequena divisao de responsabilidades:

  • confique e dono das definicoes de esquema, padroes de codigo, validacao e geracao de modelos de configuracao.
  • figment e dono do carregamento em tempo de execucao e dos metadados de origem em tempo de execucao.
  • rust-config-tree e dono da travessia recursiva de includes, resolucao de caminhos de include, carregamento de .env, descoberta de destinos de modelo e comandos clap reutilizaveis.

O crate e util quando uma aplicacao quer um layout natural de arquivos de configuracao como este:

include:
  - config/server.yaml
  - config/database.yaml

log:
  level: info

Cada arquivo incluido pode usar o mesmo formato de esquema, e caminhos de include relativos sao resolvidos a partir do arquivo que os declarou. A configuracao final continua sendo um valor normal de esquema confique.

Principais recursos

  • Travessia recursiva de includes com deteccao de ciclos.
  • Caminhos de include relativos resolvidos a partir do arquivo declarante.
  • Carregamento de .env antes que provedores de ambiente sejam avaliados.
  • Variaveis de ambiente declaradas no esquema sem divisao por delimitador.
  • Metadados Figment para rastreamento de origem em tempo de execucao.
  • Eventos de rastreamento de origem em nivel TRACE por tracing.
  • Geracao de JSON Schema Draft 7 para completamento e verificacoes basicas de esquema no editor.
  • Validacao de valores de campo no codigo da aplicacao com #[config(validate = Self::validate)], executada por load_config ou config-validate.
  • Geracao de modelos YAML, TOML, JSON e JSON5.
  • Diretivas TOML #:schema, modelines YAML Language Server e campos JSON/JSON5 $schema para modelos gerados.
  • Divisao opt-in de modelos YAML para secoes marcadas com x-tree-split.
  • Subcomandos clap embutidos para modelos de configuracao, JSON Schema e shell completions.
  • Uma API de arvore de nivel mais baixo para chamadores que nao usam confique.

Pontos de entrada publicos

Use estas APIs para a maioria das aplicacoes:

  • load_config::<S>(path) carrega o esquema final.
  • load_config_with_figment::<S>(path) carrega o esquema e retorna o grafo Figment usado para rastreamento de origem.
  • write_config_templates::<S>(config_path, output_path) grava o modelo raiz e modelos filhos descobertos recursivamente.
  • write_config_schemas::<S>(output_path) grava JSON Schemas Draft 7 raiz e de secao.
  • handle_config_command::<Cli, S>(command, config_path) manipula comandos clap de configuracao embutidos.

Use load_config_tree quando precisar do primitivo de travessia sem confique.