Тёмный
Jon Gjengset
Jon Gjengset
Jon Gjengset
Подписаться
We're building libraries and tools in the Rust programming language!

The streams are intended for users who are already somewhat familiar with Rust, but who want to see something larger and more involved be built. You can see earlier related videos by looking at the playlists and uploads on this channel. I post about upcoming streams and ideas for new ones at discord.jonhoo.eu, as well as on Twitter, Mastodon, and LinkedIn! Q&A tends to happen using wewerewondering.com/.

You can sponsor my work at github.com/sponsors/jonhoo/.

Streaming schedule: calendar.google.com/calendar/embed?src=719b6cf08a9f11da4a732083a43aa00a61a7943ea864a57417b5da13b1fc8ccb%40group.calendar.google.com&ctz=Europe%2FOslo

The hope of this channel is to help serve the Rust 2018 Roadmap goal of better serving intermediate Rustaceans: blog.rust-lang.org/2018/03/12/roadmap.html#better-serving-intermediate-rustaceans

Also known as (for search purposes): jonhoo
Implementing a Lox interpreter in Rust
7:53:42
Месяц назад
Open Source Maintenance, 2024-07-14
6:32:29
2 месяца назад
Q&A May 2024
3:10:09
4 месяца назад
May 2024 Q&A
3:10:09
2 месяца назад
Decrusting the tokio crate
3:31:48
5 месяцев назад
Implementing (parts of) git from scratch in Rust
4:29:28
6 месяцев назад
Decrusting the tracing crate
2:57:25
7 месяцев назад
Hardware and software [2024 edition]
1:37:27
8 месяцев назад
Q&A December 2023
2:38:17
9 месяцев назад
December 2023 Q&A
2:38:17
2 месяца назад
Implementing (part of) a BitTorrent client in Rust
4:09:16
11 месяцев назад
Open Source Maintenance, 2023-08-25
3:17:44
Год назад
Open Source Maintenance, 2023-08-13
3:11:17
Год назад
Open Source Maintenance, 2023-08-06
3:36:07
Год назад
Decrusting the axum crate
2:12:27
Год назад
Q&A July 2023
3:20:06
Год назад
July 2023 Q&A
3:20:06
2 месяца назад
Crust of Rust: std::collections
2:45:04
Год назад
Decrusting the serde crate
1:51:21
Год назад
Q&A December 2022
3:12:32
Год назад
December 2022 Q&A
3:12:31
2 месяца назад
Q&A November 2022
3:14:04
Год назад
November 2022 Q&A
3:14:04
2 месяца назад
Комментарии
@luckystrike91
@luckystrike91 12 часов назад
34:56 you probably need to use a std::sync::Barrier and arm processor for such purpose
@adrienpelfresne9820
@adrienpelfresne9820 День назад
can someone tell me what font he is using ? thanks a lot
@reybontje2375
@reybontje2375 2 дня назад
I love how you struggle most with coming up with the name, rather than distributed systems programming. 😅
@Truth-p7c
@Truth-p7c 2 дня назад
You need to grow your hair back man!
@pmulard
@pmulard 4 дня назад
I was extending a bunch of handlers in my web server tonight, and was stuck with compiler errors that I couldn’t figure out. “Handler trait wasn’t satisfied”… I took a much needed break, poured a glass of wine, and watched some RU-vid. Eventually this video came up and I thought, what the heck, I’m working with Axum. Turns out 53:50 was exactly the solution to my problem. I’m passing in State, Path, and Json into my handlers and the order was wrong. Json was first and it needed to be last. Talk about some divine intervention. Thank you so much for these videos and all you do Jon! They are always a pleasure to watch, even when you aren’t bailing me out.
@pooyannajafi
@pooyannajafi 4 дня назад
Hi Jon, your content is extremely superb for noobs. Could you please make a video of the latest Secrecy package. I see lots of improvements has been made to make Secret not cloneable and exposed in the memory, unlike previous versions. I ask this because perhaps a lot of people are going to be using it in their projects at work and hobby and might need help getting their head around.
@joeldsouzax
@joeldsouzax 4 дня назад
8 months in rust, and I am finally understanding rust world better, rust has made me such a good programmer and has opened my eyes to a lot of programming pradigms, I am just so grateful! and grateful to you for uploading such content to help us be better!! thank you!
@AdamFiregate
@AdamFiregate 4 дня назад
Thanks! (And I'm reading your book in paperback.)
@AbdulfatahMohammedSheikhMohamm
@AbdulfatahMohammedSheikhMohamm 7 дней назад
Thank you man
@gregoryedison4302
@gregoryedison4302 8 дней назад
missed the stream, so sad
@ev3rybodygets177
@ev3rybodygets177 8 дней назад
Saying cells are nice for flag state knowing refcell was going to use it in that fashion was a nice touch! Clever!
@CrapE_DM
@CrapE_DM 9 дней назад
Nice haircut. Looks good
@Tyilo
@Tyilo 9 дней назад
proptest has its own Arbitrary trait and doesn't use the arbitrary crate's Arbitrary trait.
@cat47
@cat47 9 дней назад
ok, but how does the rust compiler know what trait you are deriving? can't a derive macro just return arbitrary code that is appended after the item definition? or does this only apply to builtin derive macros? you can make a derive macro with any name you want...
@di380
@di380 9 дней назад
Rust has been trying to solve the old programming dilema that back in the 90s JAVA promised to solve. I have used a numbers of programming languages and there is always one language I keep going back to and that language is C. The reason being that other than assembly language you can find a C compiler for it I almost all cases. Again I don’t think languages should be chosen solely on preference but availability and flexibility should be considered before starting any project
@reybontje2375
@reybontje2375 9 дней назад
You're a great educator. Your videos remind me a lot about Ben Eater's, who I'd call the Bob Ross of Electronic Engineering. Your videos really helped introduce me to what I think is Intermediate Rust... though I'm not entirely sure, since I keep finding that Rust is deeper than I previously thought and finding out I'm still a beginner.
@erikgrundy
@erikgrundy 9 дней назад
a couple neat tricks: +1 on writing wrappers on a type for certain cases. e.g. you have a function that takes i32's, but there's a property that's only true when passed positive numbers, you can do: struct PositiveI32(i32); fn my_prop(PositiveI32(n): PositiveI32) { ... } oracle testing (mentioned at the end) is very good if you're doing a rewrite, and need to maintain the behaviour of the old version
@JaLikon65
@JaLikon65 9 дней назад
Woohoo! Thank you Jon. Insightful as always 🙌
@wesleychaffin4029
@wesleychaffin4029 9 дней назад
Every time I watch a jonhoo video I learn about some amazingly new and useful library
@daniellambert6207
@daniellambert6207 9 дней назад
1:21:00 For "why do I need to impl Arbitrary for my types", I'm thinking: you don't! If your type doesn't have specific invariants, then define the prop with primitive arguments, and construct your type inside the property function.
@weisbrja
@weisbrja 9 дней назад
Could we in theory write a property check function that returns a function that returns a bool? In the code for the Testable trait, the quickcheck library seems to call the prop function and check for success by running .result on the result of the prop function. Normally the result would just be bool, but since we have defined .result for Fn -> bool or something similar, could this work?
@jonhoo
@jonhoo 9 дней назад
I... think so!
@FieldBonnie-p9q
@FieldBonnie-p9q 9 дней назад
Davis Daniel Robinson Anna Martin Betty
@leonie9248
@leonie9248 9 дней назад
I'm so glad you keep on decrusting crates! <3
@Homeworkbad
@Homeworkbad 9 дней назад
Quick rust VOD. Check it out 😉
@TheWytzepakito
@TheWytzepakito 9 дней назад
Can't help but notice "rustige muziek" was one of your suggestions at 11:48. Are you a secret Dutchie?
@ewe-studios
@ewe-studios 9 дней назад
@jonhoo Would be awesome if you did a Decrusting the Bevy engine crate!
@LtdJorge
@LtdJorge 10 дней назад
Let’s goooo
@samaelhelel
@samaelhelel 10 дней назад
Babe, wake up. New Jonhoo video dropped and it's awesome
@itsawonderfullife4802
@itsawonderfullife4802 10 дней назад
Thanks for the upload. 10:57. That property of operators is called it being an involutory operator: P^2=I (identity operator). Also if P^2=P then the operator is idempotent (e.g. a projection operator is idempotent: applying it more than once has no effect).
@torsten_dev
@torsten_dev 9 дней назад
Great. TIL that an involute is not an involution.
@timfennis91
@timfennis91 12 дней назад
I started reading crafting interpreters in december 2023 and I've been working on my language off and on ever since. I've parted ways with Lox ever since I read that all nimbers are floats. Still it's super helpful to see you approach the challenge and see how you do things differently. It's also amazing to see you do something perfectly from the beginning that took me miltiple attempts to get right.
@OSSMaxB
@OSSMaxB 13 дней назад
Thank you. I now understand what variance means. I had some intuitive understanding of parts of it, but this made it concrete.
@aliakbarmostafaei
@aliakbarmostafaei 14 дней назад
Would love an episode dedicated to tokio channels and async synchronization of a multi threaded tokio program.
@RobertKing
@RobertKing 15 дней назад
Thanks
@SiddhanthMate-yw6dy
@SiddhanthMate-yw6dy 16 дней назад
could you do one for mac osx since its not been maintained there for n2n
@shuangzhu907
@shuangzhu907 16 дней назад
Thanks the great tutorial!
@meowsqueak
@meowsqueak 17 дней назад
Not showing a website because it’s bright and “people don’t like that” is the STUPIDEST thing I’ve heard all week. At what point did we start caring about what some small group of small-minded people prefer when they’re watching videos at 3am?
@rsalmei
@rsalmei 20 дней назад
@jonhoo At 26:30, it triggered UB! Miri reports an error. It seemed to work because the reference was overwritten (UnsafeCell is repr(transparent)).
@emnul8583
@emnul8583 20 дней назад
I didn't realize just how informative the standard lib documentation was. You've inspired me to study the documentation for the entire Rust standard library. See y'all in about 4 months 🫡
@LB-mf4bs
@LB-mf4bs 20 дней назад
At #2:00:34, what does it mean "whoever reads it first has it" talking about Receiver of mpsc? there is just one receiver, there is no second or third receiver.
@bouraouiyacine1359
@bouraouiyacine1359 20 дней назад
Jon is a rust beast , incredibly skilled you rock
@aliakbarmostafaei
@aliakbarmostafaei 21 день назад
This isn't available in HD or something wrong with my RU-vid?!
@jonhoo
@jonhoo 20 дней назад
It should be, so that may then be a problem on your end.
@aliakbarmostafaei
@aliakbarmostafaei 19 дней назад
@@jonhoo It was, HD is available on my desktop browser. Thank you for the quality Rust content!
@pwalski
@pwalski 22 дня назад
3:08:52 Regarding inefficiency of processing data one by one with `mpsc` instead of doing it in batches (in a form of e.g. `Mutex<Vec<T>>`) I believe methods `mpsc::Receiver::recv_many` and `poll_recv_many` have been created to solve exactly this problem.
@jonhoo
@jonhoo 20 дней назад
Looks like that's only on tokio channels, not std ones? Even so, those are helpful, but they only help with the acquisition cost - they don't let you do things like work compaction (eg, if a later update replaces an older one rather than add to it).
@buildingblockdev
@buildingblockdev 23 дня назад
Please do descripting actix and actix-web
@YuruCampSupermacy
@YuruCampSupermacy 23 дня назад
did he actually did this in one 8hr sitting?
@jonhoo
@jonhoo 20 дней назад
Yep, can confirm!
@endogeneticgenetics
@endogeneticgenetics 23 дня назад
proptest is *destructively* obtuse -- it's very 'python testing' style -- adds a ton of oscurity and complciation and takes way more work and leaves you with something that is unobvious to maintain. I see what tehy're going for, but it's a bad model in most cases. QuickCheck is what's on the tin with straightforward ways to clean things up. QuickCheck is also inline with the idea of type based fuzing it ... fuzes the *type* by default. Not substructures within a type. -- PropTest has useful elements, but it adds more weight than value given that QuickCheck exists, in most cases imo
@DavidSmith-ef4eh
@DavidSmith-ef4eh 23 дня назад
These tutorials are a great advertisement for golang.
@93davve93
@93davve93 23 дня назад
1:39:45 - Convert text to uppercase and lowercase with U or u in visual select.
@leob554
@leob554 25 дней назад
where is he running vim on?
@OccultDemonCassette
@OccultDemonCassette 26 дней назад
Okay what is going on in Japan and why are so many Tokyo workers running around grabbing futures. I just woke up and I'm half asleep and RU-vid autoplay this and I do not understand anything that is being said. Who is waking up Japanese poll workers and why?
@JG-nm9zk
@JG-nm9zk 26 дней назад
This is one crusty corner of rust.