snx
snx is an experimental batteries-included web framework for Rust.
design goals
snx is designed to fill the gap of non-async batteries-included web frameworks in the Rust ecosystem.
high level features
non-async
snx does not use async Rust at all and achieves asynchronous execution using
threading. snx not using async has numerious benefits like: not being locked
into an async runtime's ecosystem such as tokio, not requiring an async
runtime at all and not having to manage the added complexity of async as a whole
allowing you to focus on your application and domain logic rather than fighting
over lifetimes.
this does come with a couple of trade-offs, namely ... TBA
flexible routing
snx provides a fast, ergonomic and macro-free routing system based on matchit
that supports dynamic route segments, wildcards, prefixes and middleware.
builder
.prefix
.build
.unwrap
non-features
HTTP/2, HTTP/3 and TLS/SSL
snx is designed to sit behind a reverse proxy and thus only supports HTTP/1.1 without TLS/SSL. configure a reverse proxy (e.g. nginx or Caddy) for HTTP/2, HTTP/3 and TLS/SSL.