The borrow checker handles more than just freeing allocated memory, it will also prevent data races and invalid concurrent access aso. I personally don't have any issues with using garbage collected languages, but the fearless concurrency is nothing I'm willing to give up.
If I look at what I use and what annoys me, I would have like to see focus on 'Dyn async trait' and 'Traits for being generic over runtimes'. I think it is quite annoying that you have to decide on a whole eco-system when you are doing async code. I have had times when I have search for a very niched library, only to find that it is written for the wrong async runtime. And the longer it takes to correct this, the more cemented it will be.
Have you tried to run it as root?
I see this post as an advice to learn gradually, and to write sloppy but painless code initially. Then when you have the basics, you can add the more idiomatic and tricky parts.
deleted by creator
Why are you doing
cards.iter_mut().for_each(|card| {
I don't see that you mutate card anywhere, am I missing something?
Just looked at the screenshot on the Victor Mono page and the kerning makes me want to rip my eyes out....
Ok, after reading some comments on other places, I think I get it now. While you are free to use their open sourced tool chain, which is what they have certified, you still doesn't fulfilling the legal requirements unless you buy the certified tool chain. Just because it is open source, doesn't legally guarantee that is what's certified.
So, you pay to get the legal status of the certification. Did I understand this somewhat correct?
I must say I am a bit confused. They are open source, and some previous blog post said they are certifying upstream. Yet, they sell quality managed licenses. So, what are these licenses and why are they needed?
It's LLMs all the way down.
FYI: Not the author, just found it to be an interesting read. Notified the author, so lets hope he joins in for a nice discussion.
And the Copy question.It is not that s reference has to implement Copy. A reference IS Copy, by the simple fact that it is a primitive value on the stack.
A reference &T holds a pointer, ie. the memory adress to the actual content of T
So, in the example x doesn't hold the value 42, it holds the memory adress to the memory there the integer value 42 is stored. So, to access the value, you need to dereference the reference. Which is why you need to use *x when you assign the value.
wouldn't it be better to use
#[cfg(target_os = "windows")]
instead of checking an env variable?
Reference: https://doc.rust-lang.org/rust-by-example/attribute/cfg.html
Always happy to see more projects being open source.
Now, I don't have any experience with Axum, but my experience is that the frameworks are quite similar, so much of the porting tend to be in parameters and types, authentication and session (of course, this may vary from project to project). So if you are familiar with Axum this might be a good way to start contributing to Kellnr. Well, I guess if you just want to learn Axum, it might also be a good way to start, it will just be a little slower.... but I guess it is a good way to learn a new framework if you have the time to invest.
Great to see that this moves forward in a steady pace. And being able to compile Rust for Linux seems like a nice milestone, especially since many objections initially against rust in the kernel was about GCC support.
It might be interesting to watch the Jackie Chan episode of Every Frame is a Painting, for an analysis of the difference between Hollywood and Hong Kong. This will explain why Jackie Chan is so much better in his Hong Kong movies.
https://m.youtube.com/watch?v=Z1PCtIaM_GQ
That is all dependent on the program, but the simplest scenario is by an API with two requests at the same time. But it may also be like if you scan for new files, and use inotify, then you may also have a scanning loop as a fallback. Then the scan and inotify may trigger at almost the same time, so if that then results in a db create or insert you can get in to this problem. So, there are multiple ways to get in to trouble, and life always find new ways 😀
Librsvg did the rewrite incrementally, so you can choose to only use rust for new code in an existing codebase.