Skip to main content

Crate serverust_core

Crate serverust_core 

Source
Expand description

Core do framework serverust — APIs HTTP e AWS Lambda em Rust, com a ergonomia do FastAPI e a arquitetura do NestJS.

Este crate concentra as peças que você usa em todo handler:

  • App — builder principal: acumula rotas, registra services no Container, expõe /openapi.json, /docs e /redoc.
  • Route / IntoRoute — tipo emitido pelas macros #[get]/#[post]/etc (definidas em serverust-macros).
  • extract::Json — extractor validante: roda validator::Validate antes do handler e responde HTTP 422 padronizado em falha.
  • ApiError / validation_error_response — payload de erro JSON consistente. Use com #[derive(ApiError)] em enums de domínio.
  • Guard / Pipe / Interceptor — primitivas de pipeline.
  • ServerustConfig — config typed lida de serverust.toml via figment.

Exemplo mínimo servindo HTTP local. Em produção, combine com o crate serverust-lambda (trait AppRuntime) para um .run() que detecta entre Lambda e HTTP automaticamente:

use serverust_core::App;
use serverust_macros::get;

#[get("/")]
async fn hello() -> &'static str { "hello" }

#[tokio::main]
async fn main() -> std::io::Result<()> {
    App::new().route(hello).run_http("127.0.0.1:3000").await
}

Mais exemplos e tutorial completo em https://github.com/JaimeJunr/serverust/blob/main/docs/guides/lambda-tutorial.md.

Re-exports§

pub use config::ServerustConfig;

Modules§

config
Carregamento de configuração via figment (serverust.toml + env vars).
extract
Extractors tipados expostos pelo framework.

Structs§

App
Builder principal do framework.
Container
State do axum::Router: mapa TypeIdArc<dyn Any> carregando os serviços registrados via crate::App::provide.
GuardCheck
Extractor zero-cost que dispara a verificação do guard G como parte do pipeline de extractors do axum. Usado pelas macros #[guard(G)]; raramente instanciado diretamente.
Json
Extractor JSON com validação automática.
ParseUuidPipe
Pipe que converte uma String em uuid::Uuid. Falha → HTTP 400 com payload { "error": "invalid_uuid", "input": "<valor>" }.
PipePath
Extractor que aplica um Pipe<String> sobre um único segmento da URL (extraído via axum::extract::Path<String>).
Route
Metadata de uma rota registrável no crate::App.

Traits§

ApiError
Trait implementada por enums de erro de domínio. Normalmente não é implementada manualmente — use #[derive(ApiError)] do crate serverust-macros, que lê #[status(N)] e #[message("...")] por variante e emite simultaneamente impl ApiError + impl IntoResponse.
Guard
Verificação de autorização/permissão executada antes do handler.
Injectable
Marker trait emitida por #[injectable]. Não impõe método; apenas confirma intenção de injeção e habilita verificações de tipo nos testes.
Interceptor
Middleware com semântica de “wrap” sobre a execução: pode inspecionar a request antes do handler e/ou modificar a response depois.
IntoRoute
Implementado pelas structs geradas pelas macros #[get], #[post], etc.
Pipe
Transformação tipada aplicada a um input antes de chegar ao handler.

Functions§

validation_error_response
Constrói a resposta HTTP 422 padronizada a partir de erros do validator.