Our great sponsors
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
dylananthony.com
The source code for Dylan Anthony's website, as well as a place to discuss blog posts! Blog topics generally include (but are not limited to) OpenAPI, Rust, and Python.
-
typescript-action
Create a TypeScript Action with tests, linting, workflow, publishing, and versioning
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
This section highlights the worst part of Rust today—it is still a very young programming language, so it's missing a lot of resources available to other languages. After this project, I made a template and a corresponding blog post so that future developers (probably me) will have a much easier time implementing Rust actions. However, this template wasn't available to me yet, so it doesn't count for this experiment.
I wanted to write a reusable GitHub Action which runs some quick checks on GraphQL servers. I've authored actions before, but they're usually short Python scripts distributable via composite actions. This new action is too complex for a simple script.
I intend to do something similar for other types of projects and languages. If there's a particular comparison you'd like to see, please let me know!
Every library I've used in Rust has docs on https://docs.rs generated with the standard cargo doc tool. You always know what to expect, examples can be tested with cargo test, and links to other dependencies are kept up to date. This is also the same format that the standard library is documented with. Overall, it's easy to learn how to use a new library.
On the TypeScript side, setup was much easier. There was already a template from GitHub that took care of the basics. Most of the time spent here was updating dependencies and getting my editor to play nicely with it—18 minutes, about 10% of the total.