Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Standout
A CLI framework for Rust that enforces separation between logic and presentation.
Test your data. Render your view.
use ;
use handler;
use Serialize;
// Test the handler directly—no stdout capture needed
In a full application, storage and application behavior belong in a
CLI-free library. The handler belongs in the binary package and adapts library
results into CLI-owned serializable view models. See the
production-shaped example.
What is Standout?
Standout combines two standalone libraries into a cohesive framework:
- standout-dispatch — Execution pattern where handlers return data, renderers produce output
- standout-render — Terminal rendering with templates, themes, and adaptive styles
The framework provides the glue: clap integration, --output flag handling, auto-dispatch from derive macros, questionnaire-backed command surfaces, and the AppBuilder configuration API.
Why Standout?
CLI code that mixes logic with println! is impossible to unit test. With Standout:
- Handlers return structs, not strings—test them like any other function
- Multiple output modes from the same handler: rich terminal, JSON, YAML, CSV
- MiniJinja templates with hot reload during development
- CSS/YAML themes with automatic light/dark mode support
- Incremental adoption—migrate one command at a time
Quick Start
[]
= "9"
= { = "4", = ["derive"] }
= { = "1", = ["derive"] }
= "1"
The one standout dependency carries the macros; standout-dispatch and
standout-render are only needed by a project that uses them without the
framework.
use ;
use Serialize;
use ;
use ;
The List variant registers the command under its kebab-case name, list;
#[dispatch(pure)] points it at the wrapper #[handler] generates,
handlers::list__handler; and with no template named, the convention renders
src/templates/list.jinja. Themed help is on by default.
Documentation
- Book: standout.magik.works
Framework Topics
- App Configuration — AppBuilder API
- Derived Questionnaires — Typed answer sheets and questionnaire command wiring
- Output Modes — --output flag and format handling
Crate Documentation
- standout-render — Templates, themes, tabular layouts
- standout-dispatch — Handlers, hooks, command routing
API Reference
- API Documentation — Full API reference
Standalone Crates
Each component can be used independently:
- standout-render — Use the rendering system without the framework
- standout-dispatch — Use the execution pattern with your own renderer
License
MIT