sailfish
warp
sailfish | warp | |
---|---|---|
5 | 66 | |
717 | 9,140 | |
1.7% | - | |
5.4 | 6.3 | |
27 days ago | 25 days ago | |
Rust | Rust | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
sailfish
-
Hyper – A fast and correct HTTP implementation for Rust
Any recommendations for rust template engines? I'd like something that can easily render labeled fragments of a template instead of requiring me to split a page into a dozen little files. Kinda like inline {{block}} definitions in Go's html/template. Speed is also nice.
From template-benchmark-rs [0] I found sailfish [1] (fast, but no fragments(?)). render-rs [2] and syn-rsx [3] (2022) both let you write html in rust macros which is cool (maybe that can substitute for fragments?). Then there's gtmpl-rust [4] which is just Go templates reimplemented in rust.
[0]: https://github.com/rosetta-rs/template-benchmarks-rs
[1]: https://github.com/rust-sailfish/sailfish
[2]: https://github.com/render-rs/render.rs last updated Jul 2020
[3]: https://github.com/stoically/syn-rsx last updated Nov 2022
[4]: https://github.com/fiji-flo/gtmpl-rust
-
Full-Stack-Rust: Which approach in Frontend?
Sailfish (very fast, but lots of unsafe usages)
-
Any web frameworks that could compare to Symfony?
(Sailfish is fastest, but it's syntax is of the more traditional <%= msg %> flavour and Markup.rs is second-fastest with a Maud-like syntax but the author apparently doesn't have time to rewrite the syntax reference, so you have to follow a link from the open issue to an old version of the README.)
-
What has been your experience creating a web app with Rust vs other languages
Using [Actix](actix.rs/), Sailfish, thiserror, and a bunch of supporting libraries reminds me of when I was building a project using Pylons and Mako (now replaced with Pyramid), except without the SQL.
-
What is the idiomatic way of embed files into Rust binary?
If you're OK with a template engine that can't be used in any sort of "if debug builds, support hot reloading" mode, Sailfish compiles its templates to native code and it's the fastest option around.
warp
-
Hyper – A fast and correct HTTP implementation for Rust
I tried warp [0] and I am unimpressed so far. Pretty complex, limited documentation, buggy. The builder paradigm they used feels pretty constrained and, in my opinion, achieve the opposite of the simplicity it is supposed to bring. I was surprised it is so popular.
Maybe I need more time or a favorable comparison to another framework to appreciate it.
[0] https://github.com/seanmonstar/warp
-
How in hell can Warp be considered "super easy"?
Have you gone through the (examples)[https://github.com/seanmonstar/warp/blob/master/examples/]? There's actually a lot of explicit instructions here on how to use Warp, and all of them are very straightforward to read (e.g., (this example with route parameters and a POST'ed body)[https://github.com/seanmonstar/warp/blob/master/examples/body.rs])
-
Custom Warp error messages
There are numerous guides how to do custom error messages using the routes .recover() method (including the official one ), but it seems quite inflexible since I can't (seem to?) pass the actual error messages back to user.
-
Rendering a Rust project's file dependency tree in the terminal
$ brew install gabotechs/taps/dep-tree $ git clone https://github.com/seanmonstar/warp $ dep-tree render warp/src/lib.rs lib.rs◁─────────────┬────────────────────────────────┬──────┬┐ │ │ │ ││ ├▷filter/and.rs◁────────────────────────────┐ │ ││ ├▷│filter/map_err.rs◁───────────────────────┤ │ ││ ├▷││filter/or.rs◁───────────────────────────┤ │ ││ ├▷│││filters/mod.rs◁─────────────┬──────┬───────────────────┼┤ ├▷││││test.rs───────┘ │ │ │ │ ││ │ │││││ │ │ │ │ ││ │ │││├│▷filters/addr.rs │ │ │ │ ││ │ │││├│▷│filters/any.rs │ │ │ │ ││ │ │││├│▷││filters/body.rs │ │ │ │ ││ │ │││├│▷│││filters/compression.rs│ │ │ │ ││ │ │││├│▷││││filters/cookie.rs────┘ │ │ │ ││ │ │││├│▷│││││filters/cors.rs │ │ │ ││ │ │││├│▷││││││filters/ext.rs │ │ │ ││ │ │││├│▷│││││││filters/fs.rs │ │ │ ││ │ │││├│▷││││││││filters/header.rs │ │ │ ││ │ │││├│▷│││││││││filters/host.rs │ │ │ ││ │ │││├│▷││││││││││filters/log.rs │ │ │ ││ │ │││├│▷│││││││││││filters/method.rs │ │ │ ││ │ │││├│▷││││││││││││filters/multipart.rs│ │ │ ││ │ │││├│▷│││││││││││││filters/path.rs────┤ │ │ ││ │ │││├│▷││││││││││││││filters/query.rs │ │ │ ││ │ │││├│▷│││││││││││││││filters/reply.rs │ │ │ ││ │ │││├│▷││││││││││││││││filters/sse.rs──┘ │ │ ││ │ │││├│▷│││││││││││││││││filters/trace.rs │ │ ││ │ │││││ ││││││││││││││││││ │ │ ││ ├─────────────────────────▷filter/boxed.rs◁─┤ │ ││ ├─────────────────────────▷│filter/map.rs◁──┤ │ ││ ├─────────────────────────▷││filter/wrap.rs◁┼───────────────┼─┐ │ │││││ ││││││││││││││││││ │││ │ │ │││ ├─────────────────────────────▷filter/mod.rs◁──────┬┬┼───────┤│ │ │││││ ││││││││││││││││ ││ │ │││ │││ │ │││││ ││││││││││││││││ ││ ├▷filter/and_then.rs┤││ │││ │ │││││ ││││││││││││││││ ││ ├▷│filter/or_else.rs┘││ │││ │ │││││ ││││││││││││││││ ││ ├▷││filter/recover.rs┘│ │││ ├───────────────────────────────▷│││filter/service.rs◁──────┼─┤ │ │││││ ││││││││││││││││ ││ ├▷││││filter/then.rs──┤ │││ │ │││││ ││││││││││││││││ ││ ├▷│││││filter/unify.rs┘ │││ │ │││││ ││││││││││││││││ ││ ├▷││││││filter/untuple_one.rs┤││ │ │││││ ││││││││││││││││ ││ │ │││││││ │││ ├───────────────────────────────────────▷reply.rs◁───┬──────────┐ ├───────────────────────────────────────▷│route.rs───│──────┤││ │ │ │││││ ││││││││││││││││ ││ │ │││││││ │ │ │││ │ ├──────────────────────────────────────────▷server.rs◁────────┤ │ │ │││││ ││││││││││││││││ ││ │ │││││││ │ │ │ │││ │ ├────────────────────────────────────────────▷tls.rs─┴──────┘││ │ │ │││││ ││││││││││││││││ ││ │ │││││││ │ │ │ ││ │ ├──────────────────────────────────────────────▷filters/ws.rs◁│ │ ├──────────────────────────────────────────────▷│transport.rs││ │ │ │││ │ ││││││││││││││││ ││ │ │││││││ │ │ │ │ ││ │ ├─────────────────────────────────────────────────▷generic.rs││ │ ├─────────────────────────────────────────────────▷reject.rs─┴┘ │ │ │ │ │ │ ├───────────────────────────────────────────────────▷error.rs │ └───────────────────────────────────────────────────▷redirect.rs┘
-
Is there a more practical way to let warp respond to incoming requests?
What I see on the examples for the warp crate is that the examples do this:
-
I turned The Rust Book into a crate
You might want to consider using Alacritty instead of Warp. Warp is VC-funded, macOS only, closed source, and it phones home. They also kinda stole the name of a web framework.
-
I made rust-webapp-template
warp server,
-
Help with warp routes
Hello, I'd need some help with warp routes since I'm not familiar with the framework. If somebody knows how to do this I'd appreciate very much.
-
Any Rust based forum software?
If one were to undertake a project of developing something like this, which is the best web framework for it. I did some cursory research and discovered these back-end frameworks - actix, axum, poem, salvo, warp, gotham and rocket.
-
shuttle v0.7.1 has been released (improved isolation, new supported frameworks, QOL improvements)
We've added support for the warp, salvo & thruster frameworks
What are some alternatives?
askama - Type-safe, compiled Jinja-like templates for Rust
axum - Ergonomic and modular web framework built with Tokio, Tower, and Hyper
jelly-actix-web-starter - A starter template for actix-web projects that feels very Django-esque. Avoid the boring stuff and move faster.
actix-web - Actix Web is a powerful, pragmatic, and extremely fast web framework for Rust.
rust-embed - Rust Macro which loads files into the rust binary at compile time during release and loads the file from the fs during dev.
Rocket - A web framework for Rust.
diesel - A safe, extensible ORM and Query Builder for Rust
hyper - An HTTP library for Rust
tp-note - Minimalistic note taking: save and edit your clipboard content as a note file (Gitlab mirror)
hyperterm - A terminal built on web technologies
template-benchmarks-rs - Collected benchmarks for templating crates written in Rust
kitty - Cross-platform, fast, feature-rich, GPU based terminal