kotlin-result
warp
Our great sponsors
kotlin-result | warp | |
---|---|---|
33 | 66 | |
934 | 9,124 | |
- | - | |
8.9 | 6.3 | |
10 days ago | 12 days ago | |
Kotlin | Rust | |
ISC 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.
kotlin-result
-
How do you define errors?
Sealed classes in combination with a library like https://github.com/michaelbull/kotlin-result will get you what you need. Essentially at that point you'll be doing error handling the way you would in Rust, where a 1-level deep sealed class containing data classes as children act as the root error type and each of its variants. If you have errors coming from two different domains you just create a wrapper error type for each domain.
-
Result Class with Generic Type for both Success and Failure States
This is a great result lib: https://github.com/michaelbull/kotlin-result
-
Is runCatching in use in any of your projects ? My team is abusing it
Lastly I do not like kotlin's Result and we use the kotlin-result library which is more expressive and not tied to Throwable (similar to Arrow's Either).
-
Struggling with software robustness with Kotlin
In my own code, I started to use explicit error handling. I'm currently experimenting with Result (from https://github.com/michaelbull/kotlin-result) and Raise (from https://arrow-kt.io/).
-
Thoughts on Kotlin Multiplatform?
un-related to multiplatform i've found it extremely helpful to wrap things in a Result type. If something can throw an error, it get's a Result return type. It sounds like that would help your use case too. The built in Result may be useful too
-
Programming with Result
This is a better impl.
- It seems like I'm forced to make this choice at least once a day
-
Are nearly all your functions suspend?
Using a result type can help to differentiate quite nicely. https://github.com/michaelbull/kotlin-result
-
Kotlin Nitpicks: Language and Standard Library
kotlin-result
- Almost Everything I've Learned About Error Handling in Kotlin
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.
-
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?
result4k
axum - Ergonomic and modular web framework built with Tokio, Tower, and Hyper
kotlin-monads - Monads for Kotlin
actix-web - Actix Web is a powerful, pragmatic, and extremely fast web framework for Rust.
Result - The modelling for success/failure of operations in Kotlin and KMM (Kotlin Multiplatform Mobile)
Rocket - A web framework for Rust.
Arrow Meta - Functional companion to Kotlin's Compiler
hyper - An HTTP library for Rust
Komprehensions - Do comprehensions for Kotlin and 3rd party libraries [STABLE]
hyperterm - A terminal built on web technologies
Kategory - Λrrow - Functional companion to Kotlin's Standard Library
kitty - Cross-platform, fast, feature-rich, GPU based terminal