TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Rust is a hard way to make a web API

331 点作者 tmcw超过 4 年前

39 条评论

Animats超过 4 年前
Yes. That&#x27;s what Go is for. Go is for doing the things that Google does on servers, which mostly means web apps of one kind of another. It has all the parts for that, and they&#x27;re well-exercised because they&#x27;re doing billions of operations per second on Google&#x27;s own work. It&#x27;s hard-compiled, so you don&#x27;t have all the extra overhead of the interpreted languages. Also, Go has a better async story than most web-oriented systems. Goroutines, or &quot;green threads&quot;, do both the job of threads and &quot;async&quot;. In async land, if anything blocks or uses much CPU time, you&#x27;re stalled. Not so in Go. A goroutine can block without stalling other goroutines.<p>Right now, I&#x27;m writing a client for a virtual world in Rust. There&#x27;s a big need for concurrency, but, unlike web stuff, it&#x27;s all tightly interrelated. There&#x27;s a GPU to keep busy. There&#x27;s network traffic of several different kinds. There are compute-bound tasks which need to be kept out of the frame refresh loop.<p>Rust is good for this. The existing C++ client is too much of a mess to make concurrent; people looked at it and gave up. In Rust, it&#x27;s coming along nicely.<p>Use the right tool for the job.
评论 #25799424 未加载
评论 #25798941 未加载
评论 #25801680 未加载
评论 #25799808 未加载
评论 #25799304 未加载
评论 #25799764 未加载
评论 #25798906 未加载
评论 #25799478 未加载
评论 #25801053 未加载
评论 #25802575 未加载
评论 #25799679 未加载
评论 #25799204 未加载
评论 #25802208 未加载
评论 #25798860 未加载
评论 #25799707 未加载
评论 #25799761 未加载
评论 #25801295 未加载
评论 #25798657 未加载
评论 #25798979 未加载
评论 #25798717 未加载
评论 #25799412 未加载
评论 #25799025 未加载
评论 #25798739 未加载
LegNeato超过 4 年前
I&#x27;m the maintainer of Juniper. Juniper is a library, not a framework. As such it is agnostic to how you want to solve N+1. You get a lookahead and can do what you want...dataloader (like Facebook), eager loading all data up front (like Rails), generating efficient SQL on the fly (like prisma).<p>There are projects and examples to do all three but we don&#x27;t want to assume one solution is right for all domains.<p>We take this to the extreme...Juniper doesn&#x27;t even require a web server and isn&#x27;t tied to a particular serialization format! Of course, we provide optional integrations with popular web frameworks using json but the key is they are optional.
epage超过 4 年前
&gt; But Rust’s memory rules aren’t more secure than Node.js’s or Python’s. Your web application written in Rust isn’t going to be systematically more or less secure than an application in Python or Ruby.<p>Just want to call out that I&#x27;ve heard a horror story of a very bad security bug due to implicit shared mutability in Python.<p>(vague to protect the innocent)<p>&gt; Heck, if you ask some people, Rust is less secure than a GC’ed language for web apps if you use any crates that have unsafe code - which includes Actix, the most popular web framework, because unsafe code allows things like deferencing raw pointers.<p>You can write unsafe code in Python (and some of the web frameworks use this) and nothing helps you with auditing it, unlike unsafe blocks in Rust.
评论 #25800572 未加载
评论 #25800554 未加载
评论 #25804022 未加载
smolder超过 4 年前
Yeah, unless I am building a very performance sensitive web service, either in terms of memory or CPU efficiency, js&#x2F;typescript or some other web centric language is a much easier choice, and is less costly to build in.<p>I&#x27;m still choosing to write some web stuff in Rust for the experience, for the fact I can compile parts to .wasm and re-use them in a browser too, I enjoy tuning things for performance, and I am not under time constraints for it.
评论 #25798575 未加载
评论 #25801889 未加载
评论 #25801378 未加载
评论 #25799881 未加载
评论 #25799879 未加载
filereaper超过 4 年前
Most of the author&#x27;s article comes down a disagreement of values between what the author values and what Rust&#x27;s language engineers value, and that&#x27;s perfectly okay.<p>I highly encourage everyone to watch Steve Klabnik&#x27;s video on how Rust Views Tradeoffs [1]<p>Rust has these core values that they refuse to compromise on in this order of precedence:<p>- Memory Safety<p>- Speed (compiled binary execution speed, <i>not</i> compile time)<p>- Productivity<p>And because of these core values, other aspects emerge such as the long compile time as they value memory safety as the language&#x27;s highest core value and are accepting the tradeoff of long compile times.<p>The talk goes on to say, we should ourselves reflect and ask what our core values are that we can&#x27;t compromise on? What are the secondary values and so on... And then find the language&#x2F;tool that lines up with our values.<p>I really can&#x27;t emphasize enough to go watch the talk.<p>[1] <a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=2ajos-0OWts" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=2ajos-0OWts</a>
评论 #25800511 未加载
评论 #25799458 未加载
jph超过 4 年前
For Rust web APIs, Actix and Rocket are both very good.<p>For adjunct pieces such as web app authentication, including some common features such as user sign up via email or phone, recover a password, multi-factor auth, social sign in, and the like, there&#x27;s not yet a good solution (AFAIK).<p>I will gladly donate money toward developers working on this, especially if it&#x27;s something simple such as Elixir Phoenix `mix phx.gen.auth` doing a one-time setup with good defaults, then fully customizable.
评论 #25798634 未加载
评论 #25798663 未加载
评论 #25800215 未加载
hardwaregeek超过 4 年前
I agree with this article a lot. I wrote a comment on Rust for web previously that covers similar ground: <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=23776855" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=23776855</a><p>One problem that I noticed, which may become a serious issue in the future, is that a lot of libraries add abstractions via macros. Macros don&#x27;t always compose or debug well. I had some experiences getting errors in my macros that had extremely confusing debug messages, often pointing to files that didn&#x27;t exist. Hopefully there will be a trend of moving back to plain old functions. Nom for instance has converted its combinators into regular functions, which I like a lot.<p>I&#x27;d love love love for there to be a language that gets in between Rust and TypeScript. It&#x27;d have the strictness over mutability like Rust, but the GC of JS&#x2F;TS. It wouldn&#x27;t have 3+ string types. It&#x27;d have enum variants and pattern matching but maybe not macros. Gleam is pretty close!
评论 #25798984 未加载
评论 #25807677 未加载
评论 #25801521 未加载
评论 #25799498 未加载
评论 #25799932 未加载
评论 #25802235 未加载
ibraheemdev超过 4 年前
I agree that using Rust to build a web API is harder than in say Node&#x2F;Rails&#x2F;Django. However, you have to understand that Rust is a new language. Rails was first released in 2004 (and used in production before that) and Django in 2005. On the other hand, actix-web was first released in 2017, and the language itself went 1.0 just 5 years ago. The Rust web ecosystem is very young, and while there is a lot of work going on in this space, these things take time. Don&#x27;t be too quick to judge - it doesn&#x27;t make sense to write off Rust for mainstream web development yet.
评论 #25799625 未加载
评论 #25799853 未加载
rascul超过 4 年前
I&#x27;ve been writing rust for several years now and I still enjoy it. No other language has given me that satisfaction. I don&#x27;t care if it&#x27;s hard because, for me, it&#x27;s the fun kind of hard.
评论 #25799704 未加载
评论 #25800412 未加载
评论 #25799481 未加载
karulont超过 4 年前
&gt; Heck, if you ask some people, Rust is less secure than a GC’ed language for web apps if you use any crates that have unsafe code - which includes Actix, the most popular web framework, because unsafe code allows things like deferencing raw pointers.<p>The presence of _unsafe_ is okay, it just means that this is a part of code, that the compiler cannot verify itself. Usually the unsafe part (verified by human) is wrapped in a API that is safe to use.<p>PS: You can still have memory leaks in GC-d languages by reference cycles.
评论 #25799474 未加载
评论 #25799780 未加载
评论 #25799284 未加载
评论 #25800088 未加载
jayy-lmao超过 4 年前
I can agree with some of this up to a point. The stuff about compiler slowness is nothing new, and I will happily admit its one of my pain points for working in Rust.<p>However for getting c++ish performance for a relatively high level syntax I think this fills a different niche than GC&#x27;d alternatives. The web-server libraries are still evolving, and I too would love to see a few crates designed for handling auth.<p>A lot of the issues with difficulty writing&#x2F;safe practice will just improve once there&#x27;s more examples&#x2F;books&#x2F;tutorials. It takes a little for this stuff to catch up.<p>Finally I really struggle to see the point about dataloaders - they may be a little confronting initially but its the same thing you often have to do in Nodejs. There&#x27;s public examples on Github of how to use them with both Juniper and Async-Graphql.<p>I can understand a lot of this as &quot;its just not there yet&quot;. Rust has a much smaller community than Golang&#x2F;Python&#x2F;Js, I think its understandable if its taking a little longer to have equivalents in tooling etc. I still enjoy writing it
brink超过 4 年前
I don&#x27;t blame anyone for wanting one language that solves everything. Rust is already good at so many things. I too want Rust and web to be better than it is.<p>My day job consists of a hybrid of Rust&#x2F;React&#x2F;JS&#x2F;CSS&#x2F;HTML&#x2F;Ruby&#x2F;Rails&#x2F;SQL (in no particular order). I don&#x27;t like having to remember so much. I would love to see one language be the best at everything, but I doubt that will ever happen.
评论 #25799554 未加载
neilv超过 4 年前
&gt; <i>Rust has a fair number of web server frameworks, database connectors, and parsers. But building authentication?</i><p>Oddly enough, this was the exact missing off-the-shelf piece -- traditional built-in Web authn&amp;autho, not OAuth2&#x2F;OpenID&#x2F;etc. -- that last week made me (reluctantly) abandon plans to use Rust for a rapid Web backend project, and at least delay trying to do most of our new software work in Rust.<p>The Web authn was sorta the last straw, on top of enough additional known-extra-work and known-uncertainties, so I couldn&#x27;t justify going Rust at this point, for our needs right now. I decided I had to go with a framework and language that was already heavily proven (if boring) for this kind of application (and, incidentally, one of the framework&#x27;s off-the-shelf authn&amp;autho packages turned out to be a breeze to use, so far).<p>(Were I doing a brand new startup demo&#x2F;MVP, or an R&amp;D project within a comfortably established company, I might&#x27;ve taken on additional risk here, and tried to power through the extra work and unknowns, but we are an early startup nevertheless in B2B critical production already.)<p>(One reason not using Rust yet was disappointing to me is, just as I&#x27;d personally prefer to be mastering Rust right now, using Rust would be a recruiting carrot, somewhat like beloved fringe language Lisp&#x2F;Scheme&#x2F;Racket&#x2F;OCaml&#x2F;Haskell&#x2F;etc. would be. I could also see Rust soon letting us do all our backend, much of Web frontend, embedded&#x2F;appliance systems with device interfacing and some creative networking, and even mobile apps, rather than the mix of too many languages we have now. And I also suspected that most developers we&#x27;d hire would end up creating fewer defects in Rust code, since language semantics and static checking would <i>force</i> us to think harder <i>before</i> the alternative led to runtime failures, and&#x2F;or to encumbering our ability to evolve things fast without breaking production.)<p>(I&#x27;d probably enjoy the job of helping build out the platform&#x2F;ecosystem of Rust or another newish interesting language I liked. I&#x27;ve done building-out before, including lots of authn from scratch. And of course sometimes it makes sense, in the context of a project in one platform, to build generic pieces that would be off-the-shelf in some other platforms; but other times that makes less sense.)
striking超过 4 年前
The point about GraphQL seems misdirected. GraphQL works fine with Postgres as long as you are using (working) dataloaders appropriately, I promise. I&#x27;m afraid I don&#x27;t understand why a non-Postgres DB should be chosen for GraphQL here, or why it was necessary to mention in a Rust article.
评论 #25799254 未加载
thayne超过 4 年前
Regarding compile times, if you are considering rust you probably want it to be fast at runtime, and are willing to put up with a slower compile time to get that. That said, 10 minutes seems like a long time for a simple api unless you are using a lot of procedural macros or something.<p>Regarding safety, rust&#x27;s lifetime system protects you against more than just preventing the invalid memory accesses, which GC languages also do. But several classes of race conditions that are easy to introduce in almost any other multi-threaded language are impossible in rust&#x27;s type system (unless there is incorrect unsafe code). And in a web app with high levels of concurrency, that is kind of important.
solson4超过 4 年前
In my spare time over the fall I put together a CRUD app to learn rust. Yew frontend and an actix&#x2F;diesel backend. I must say, I actually really liked working with actix. There was a bit of a learning curve, but after I&#x27;d figured out the rust workflow, I felt very productive. Sure, could have gotten up and running faster in Django, but the rust app felt much more solid, like the compiler had my back. If there was something like Phoenix to help with the initial setup as others here have suggested, it would probably be my goto for this sort of thing. Yew on the other hand... it&#x27;s got a ways to go before I would recommend it.
lovasoa超过 4 年前
If what you are building is a graphql crud api over a postgres database, you may be wasting your time, whatever language you are writing it in. This is a generic problem that doesn&#x27;t need a custom solution. You can probably just install Hasura and move on to writing your business logic.
danbruder超过 4 年前
I’ve been building&#x2F;maintaining a rust&#x2F;graphql&#x2F;postgres api for the last year with a moderately complex domain - it is very uneventful.<p>That thing just works all the time. I don’t have to track down issues very often.<p>It was harder to build for sure, but man it is a joy to work on.
CyberRabbi超过 4 年前
&gt; Rust code can be just as fast as that C code, but protect that memory access, and without the cost of a garbage collector or some kind of runtime checking.<p>Not technically true. Rust must do a runtime bounds check when it cannot prove that the input index goes above bounds at compile time
评论 #25799946 未加载
ldiracdelta超过 4 年前
My experience parallels the writer&#x27;s... I did a foray over the holidays to try to make some base-layer and generic on top of rocket then actix-web then tide. I can get any of their toy examples to work, but building up a complex system with mixins to genericize some boiler plate code wasn&#x27;t possible for my tiny brain. I may be hide-bound, but the lack of inheritance is a pain. I know I&#x27;m not right, but OO inheritance solves some problems well.<p>In the django ecosystem, I can take an existing component with a vast API surface, inherit from it, tweak a tiny part of it and then put it back in the system and I&#x27;m off to the races. With rust, you have to re-implement the entire API surface to experiment with a tweak or go upstream and modify the original source, which isn&#x27;t a great long-term solution -- maintaining patches. The diesel ORM is great, but it seems that each api returns a different type and doing a builder pattern generically across different functions and getting the types correct is like being in the worst C++ templating hell.<p>I love the speed of execution, the type checking, the borrow checker, but the coding friction is real. I&#x27;d love to see more complex examples in all the rust web frameworks that do real work with good function partitioning in addition to the simple examples.
评论 #25800082 未加载
brundolf超过 4 年前
A few points:<p>&gt; Once your code is compiled, everything’s amazing! But in my case, this basic API - which wasn’t even feature-complete and was by no means a complex system - took more than ten minutes to compile...Caching helps as long as you don’t have to rebuild cached dependencies.<p>The author glossed over that last part, but at least from a workflow perspective, the build cache makes a <i>huge</i> difference. In my experiments developing a web server in Rust, I used cargo-watch (<a href="https:&#x2F;&#x2F;github.com&#x2F;passcod&#x2F;cargo-watch" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;passcod&#x2F;cargo-watch</a>) to automatically rebuild each time I made a change. The turnaround time was usually 1-2 seconds - nearly as fast as restarting a Node server, and about the same amount of time it takes me to alt-tab and test the change. I was using Serde, a high-level HTTP framework, and several other crates. It didn&#x27;t matter, because they never had to be rebuilt. My own code was small, but still.<p>&gt; Rust makes you think about dimensions of your code that matter tremendously for systems programming...It makes you think about real but unlikely corner cases and make sure that they’re handled...These are all valid concerns. But for most web applications, they’re not the most important concerns.<p>I disagree strongly (at least about corner cases). Maybe you don&#x27;t want to bother with this stuff when you&#x27;re still in the prototyping phase, but once a service is fairly well established, it&#x27;s definitely beneficial to be forced to think about corner-cases (both in libraries&#x2F;IO, and in your own business logic that you&#x27;ve hopefully modeled with Rust&#x27;s powerful type system). Not only is your API usually the authoritative source of truth for your application&#x2F;service, it&#x27;s exposed to the whole internet by design, just begging to be prodded for logic holes. This IMO is one of Rust&#x27;s main benefits; it&#x27;s been called &quot;the practical Haskell&quot; before, and while its ecosystem isn&#x27;t yet the most practical one for web servers, it is still much more so than Haskell&#x27;s.<p>&gt; Lots of missing pieces<p>This is the strongest point, in my opinion. Rust&#x27;s web ecosystem is definitely still in the early days, and this is partly because Rust&#x27;s benefits aren&#x27;t nearly as extreme in this usecase as they are in other usecases. There is for sure a chicken-and-egg problem as not enough companies are using Rust for web servers, which means not as much time is getting invested in the relevant libraries. I hope this changes; I don&#x27;t know for sure that it will. It feels like it is, but very slowly. That said:<p>&gt; Unfortunately, a lot of the incredibly exciting work in the Rust ecosystem has nothing to do with web application servers. There are some promising web frameworks - even a somewhat higher-level framework - but they’re undoubtedly in a niche. Even Actix, the main web framework, has a very top-heavy set of contributors.<p>The author failed to mention or wasn&#x27;t aware of Rocket (<a href="https:&#x2F;&#x2F;rocket.rs&#x2F;" rel="nofollow">https:&#x2F;&#x2F;rocket.rs&#x2F;</a>), an up-and-coming Rust web framework that&#x27;s <i>extremely</i> exciting and provides a programming experience strikingly similar to that of Flask or Express. It&#x27;s still in 0.X releases, the current release doesn&#x27;t build on stable rustc (though the master branch does!), you&#x27;re still going to have a hard time finding SDKs for auth and payment and cloud, etc.<p>But the important thing is that it shows what&#x27;s possible. Web servers <i>can</i> be ergonomic to write in Rust, benefiting from its wonderful type system and performance, with very few sacrifices. We just need the ecosystem to catch up. Hopefully enough companies will realize the opportunity and that will happen.<p>In summary: Yeah. Rust is a hard way to make a web API right now. But I don&#x27;t think it has to be.
smonff超过 4 年前
Don&#x27;t believe the hype. Rust and Go are nice, but 95% of the time you don&#x27;t need those. Especially when I read about the fact that it is &quot;developed by Google for their own needs&quot;, I mean, you surely not work for Google. Same with React: you are (maybe) not a Facebook engineer that must work on one of the most complex front end of the world.<p>Just use stuff that works, and that most people already know. Python, Perl, Ruby, jQuery, PHP, etc. Any of those have all the tools you need, proper documentation, millions of Stack Overflow discussions, and exceptional ecosystems and communities.<p>I am a Perl enthusiast since more than ten years. Personnal opinion, feel free to ignore it. It got the incredible [Mojolicious](<a href="https:&#x2F;&#x2F;mojolicious.org" rel="nofollow">https:&#x2F;&#x2F;mojolicious.org</a>) framework that makes possible to deploy a full API through a oneliner. I know everybody hates Perl (especially for web development), but I am really tired of all the re-inventing the wheels.<p>I would never study another languages. I am forty. I am tired.
评论 #25801869 未加载
bestinterest超过 4 年前
On his point about payment gateways possibly being better for Rust I currently work in a system with a &lt;10s SLA for a payment flow and boring old Java works fine with the whole Kafka&#x2F;OpenShift&#x2F;Microservice craze setup. And this setup runs through a bunch of microservices and talks to external API&#x27;s.<p>And even the real time messaging stuff? It probably depends on how real time you need, e.g WhatsApp is heavy on Elixir I believe and is the better choice for real time messaging due to its amazing actor concurrency model.<p>Rust is a niche language for most programming domains imo but when you have a use case it really shines. But it also is such an attractive language because it brings out the engineer in all of us.<p>The addicting process of optimizing every bit of code when in reality you probably should of just spun up a Rails app for your service and scaled horizontally eating your sadness of the performance engineer within yourself over the business logic that needs to get done yesterday.
评论 #25799752 未加载
评论 #25799233 未加载
luizparreira超过 4 年前
Rust certainly wasn&#x27;t created with web development in mind. But the developers of the language and libraries made it simple and nice enough that its constructs are very close to what you would call a high-level language. I have been using rust for my company&#x27;s project backend server and even though I don&#x27;t have all the libs that I need as crates, they are simple enough that I can code them myself. I wouldn&#x27;t choose any other language, the sheer peace-of-mind Rust and its compiler gives me when my build is successful and my tests pass is hard to give up. Rust is awesome and I expect most of the web dev frameworks to be built in the next 5 years, I hope my company is able to help with that :)
mwcampbell超过 4 年前
&gt; Some people will say well, X language is so good you can just write an SDK yourself in a weekend! To which I must reply, no.<p>This is what has me contemplating moving away from Elixir. The top three web back-end languages, judging by the availability of certain SDKs, seem to be Python, Java, and JS (via Node). Now I just have to choose between those three, for a full-stack, mostly server-rendered, web app.
tinselcity超过 4 年前
I wrote a REST-ful C++ http(s) server library with support for url routes&#x2F;json etc: <a href="https:&#x2F;&#x2F;github.com&#x2F;verizondigital&#x2F;is2" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;verizondigital&#x2F;is2</a> It&#x27;s been useful for me if I&#x27;ve needed to use C++. It&#x27;s similar to libmicrohttpd.
tamalsaha001超过 4 年前
This sounds like an opportunity for someone to create a &quot;rails&#x2F;laravel&#x2F;django&quot; for Rust.
评论 #25799889 未加载
评论 #25803626 未加载
评论 #25799876 未加载
vietvu超过 4 年前
I don&#x27;t use C to make web API, the same for Rust. Not because it&#x27;s impossible, but there are better suitable tools for the job.
Groxx超过 4 年前
&gt;<i>The Rust ecosystem is not web-centric</i><p>TBH I think this is the primary reason why Rust isn&#x27;t as nice as e.g. Node. <i>Convenient</i> (and safe and decently performant) web libraries need to do a <i>lot</i> of complicated stuff under the hood, and the community hasn&#x27;t (yet?) put in enough effort to reach parity with more web-oriented communities.<p>(edit: I&#x27;m honestly kinda confused why this is getting downvoted so quickly. do people disagree that Rust <i>can</i> be nice?)
评论 #25799198 未加载
snicksnak超过 4 年前
<a href="https:&#x2F;&#x2F;www.arewewebyet.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.arewewebyet.org&#x2F;</a>
sheeshkebab超过 4 年前
As with all software languages and frameworks - they are good for some things, bad for everything else.
pjmlp超过 4 年前
Rust is a good language for low level systems programming, like C++ is being used in mobile OSes.<p>For anything else, just use a language with automatic memory management and tooling capable of doing AOT&#x2F;JIT compilation.<p>Doing it in Rust while doable, feels more like trying to prove a point than doing any kind of usable work at scale.
vallas超过 4 年前
Anyone talking about new NodeJS: Deno.land, written in Rust?
rcurry超过 4 年前
That’s why we have an easy way - just pull up IntelliJ, select Express App, and be done with it.
gameswithgo超过 4 年前
I am a big Rust enthusiast and I agree. It will be efficient and fast but it will he harder than using C#&#x2F;Go etc
评论 #25799228 未加载
ketamine__超过 4 年前
10 minutes to compile? Intense.
评论 #25798851 未加载
评论 #25799490 未加载
juststeve超过 4 年前
Yes, and this article proposes no solutions and is kind of whinge-y. edit: downvotes? ok, got it.
EugeneOZ超过 4 年前
I’m writing 5+ years REST APIs in Rust and this article was just ridiculous to read. Especially part about GraphQL.
nprateem超过 4 年前
Rust should have a GC mode where you can forget about the borrow checker and just write code like in Go, etc. I don&#x27;t want to invest my time learning a language that only justifies its complexity in certain high performance use cases. If Rust was able to go into a GC mode I&#x27;d use it more, and then I&#x27;d already know it on those rare occasions performance was critical.