You Should Really Know These Traits in Rust

  Рет қаралды 16,166

Oliver Jumpertz

Oliver Jumpertz

Күн бұрын

Пікірлер: 116
@Hellbending
@Hellbending 8 ай бұрын
Thank GOD someone that ACTUALLY explains how these things work is making videos on it - you’re a blessing man Ty Ty ❤❤❤❤
@oliverjumpertzme
@oliverjumpertzme 8 ай бұрын
Thank you! Stay ready for the next one. We're going to explore a lot more in-depth things about Rust. 😁🙌🏻
@xenofly94
@xenofly94 8 ай бұрын
Actually sad that this isn't a series already. You've explained those traits perfectly and it would be awesome to have similar videos for other common std lib traits
@oliverjumpertzme
@oliverjumpertzme 8 ай бұрын
Thank you! Well…I might have gotten a few more content ideas now. 💛 Already working on the next video BUT I will definitely take a look at the std lib and see what else is worth being explained and explored a little more. ☺️
@irlshrek
@irlshrek 6 ай бұрын
@@oliverjumpertzme I agree, you did an amazing job explaining these traits! can I politely provide a bit of feedback? While the sounds every time a new element shows up on screen was fancy it was a bit overwhelming and distracting.
@CuriousSpy
@CuriousSpy 8 ай бұрын
You can write From btw
@john.dough.
@john.dough. 8 ай бұрын
10:14 -> For code snippets intended for language learners, it may help to not use font ligatures, so that people know what to type. In this case, the key ligatures "••" means ".." and "⟹" means "=>"
@john.dough.
@john.dough. 8 ай бұрын
Great video though! Super helpful! :]
@oliverjumpertzme
@oliverjumpertzme 8 ай бұрын
Thank you. :) Yea, I'll definitely change the font next time. Great feedback!
@PennyEvolus
@PennyEvolus Ай бұрын
@@oliverjumpertzme dont change it the key ligatures look rly nice and its easier for people who have dyslexia like me
@oliverjumpertzme
@oliverjumpertzme Ай бұрын
@@PennyEvolus oh, that's a great info for me. Thank you 🙏🏻
@joeymea
@joeymea 8 ай бұрын
Hey man, thanks for taking the time to make this! Rust is definitely lacking in short, advanced topical videos like this. I already knew of the Into trick, but I had never heard of the others! Bonus points for showing usage examples because theory isn't quite enough to get through my thick skull!
@oliverjumpertzme
@oliverjumpertzme 8 ай бұрын
Thank you! Oh, and don't forget, you can always do more than only Into! ☺️💛
@Avogadro37540
@Avogadro37540 8 ай бұрын
17:03 Perfect! Should be my new wallpaper moving forward ^^
@oliverjumpertzme
@oliverjumpertzme 8 ай бұрын
Haha, I can send you the png if you want. 😜
@Seacrest.
@Seacrest. 8 ай бұрын
love that amount of creators about Rust grows here
@oliverjumpertzme
@oliverjumpertzme 8 ай бұрын
Rust is just worth it. Such a beautiful language! ☺️
@maingateway2308
@maingateway2308 2 ай бұрын
Looks at title and thumbnail.. ah it's another basic beginner topic. Let's give the guy a minute to talk ... Video starts.. video ends.. liked and subscribed ❤ Thanks
@oliverjumpertzme
@oliverjumpertzme 2 ай бұрын
Damn, thanks a lot! 😁💛
@equu497
@equu497 8 ай бұрын
You know man, I've been trying and trying and trying to learn traits and why I need them for a loooong time now. Always found ways around it but I'm glad I came across your video, it helped more than I can express. Id love to see more from you
@oliverjumpertzme
@oliverjumpertzme 8 ай бұрын
Super happy to read that, man! 💛 My next video might have a few more reasons for you then. Still working on it, but I think it will teach you a few more things. ☺️
@yapayzeka
@yapayzeka 3 ай бұрын
16:59 very important graph
@irlshrek
@irlshrek 6 ай бұрын
omg. mind blown! AsRef has always been floating in my head as a fuzzy vague thing and you demystified it for me! thank you!
@oliverjumpertzme
@oliverjumpertzme 5 ай бұрын
Super happy to read that! 💛🙌🏻
@Proprogrammer001
@Proprogrammer001 8 ай бұрын
Absolutely brilliant video. So many concepts are now clear now
@oliverjumpertzme
@oliverjumpertzme 8 ай бұрын
Super happy to hear that!
@JorgetePanete
@JorgetePanete 8 ай бұрын
8:14 HTTP/3 (HTTPS only) works over UDP/IP
@oliverjumpertzme
@oliverjumpertzme 8 ай бұрын
That's true, but it only accounts for ~30% of internet traffic. http(s) and http2 still account for ~68% of all traffic. :)
@kaziibrahimkhalil1011
@kaziibrahimkhalil1011 8 ай бұрын
Beautifully explained. Everytime u publish a video my heart goes... Yayy a complete tutorial on rust🎉...but not😢...I can not explain how good i feel working with u...keep up ur good work and heart❤😋❤. Thanks for ur contribution.
@oliverjumpertzme
@oliverjumpertzme 8 ай бұрын
Thank you ☺️
@petrusion2827
@petrusion2827 Ай бұрын
It would be awesome if you could make a sequel to this video about Borrow, Deref, ToOwned and Cow.
@oliverjumpertzme
@oliverjumpertzme Ай бұрын
Thanks! And absolutely noted as an idea! 💛
@deryilz
@deryilz 8 ай бұрын
great! 3:00 is my favorite part of the rust std lib
@oliverjumpertzme
@oliverjumpertzme 8 ай бұрын
Rust's std is incredible as a whole! 💛 Not much bs, the minimum required, but the best quality possible. ☺️
@lcssbr
@lcssbr 3 ай бұрын
Just found your channel and I'll definitely look into the other videos. Thanks for the content!
@oliverjumpertzme
@oliverjumpertzme 3 ай бұрын
Thanks a lot! 💛
@alanbaumann
@alanbaumann 5 ай бұрын
I found this very useful, thank you! Also, I'm a big fan of MonoLisa.
@oliverjumpertzme
@oliverjumpertzme 5 ай бұрын
Super happy you find it useful! 💛🙌🏻
@LinkiPinkiWasTaken
@LinkiPinkiWasTaken Ай бұрын
What about cases where you want to convert something into a new owned object, from a borrowed value? Is `impl From for MyOtherStruct` bad practise or did you just not mention it? If it is, why is it bad?
@oliverjumpertzme
@oliverjumpertzme Ай бұрын
You can well do that. A common impl I see (and also use) is From, for example, and even String implements From. :) The only thing From implies (by the docs is): The conversion MIGHT not be cheap, or you MUSTN'T rely on it being cheap. It does not specifically say anything about the base value, although in theory, From is meant to take ownership. But in the end, it's perfectly fine to do that. The docs just list a few requirements that are usually associated with the conversion: 1. The conversion is *infallible* 2. The conversion is *lossless* 3. The conversion is *value-preserving* 4. The conversion is *obvious*
@meowsqueak
@meowsqueak 8 ай бұрын
Nice video - thanks, I learned something, and your explanation style is very good. For what it's worth, I think the frequent sound effects are cute at first, but become highly distracting and in at least one case genuinely alarming. Maybe they should be a lot quieter, and/or have some subtle variation to make them less jarring?
@oliverjumpertzme
@oliverjumpertzme 8 ай бұрын
Thank you for this feedback. I'll experiment with the sound a little more in my next video and see whether I can blend it more in. 🙏🏻
@abd0-omar420
@abd0-omar420 8 ай бұрын
Another great video, very educational with lots of examples and straight to the point.
@oliverjumpertzme
@oliverjumpertzme 8 ай бұрын
Thank you! 💛🙏🏻 Glad you like it!
@OlegLecinsky
@OlegLecinsky 8 ай бұрын
Could you add some explosions to those whoosh sounds and shake animations please? It just feels incomplete w/o explosions.
@oliverjumpertzme
@oliverjumpertzme 8 ай бұрын
More explosions, noted!
@dalanxd
@dalanxd 5 ай бұрын
Omg thank you so much, man, I'm loving your content. It really helps 🙏🏻🌱
@oliverjumpertzme
@oliverjumpertzme 5 ай бұрын
Thank you! Super happy you like it! 💛
@SomethingSomething1337
@SomethingSomething1337 8 ай бұрын
this is so clear now! thank you!
@oliverjumpertzme
@oliverjumpertzme 8 ай бұрын
Hey, super happy you find it useful! 💛
@DanielSantanaBjj
@DanielSantanaBjj Ай бұрын
Fantastic work
@jaw_develops
@jaw_develops 17 күн бұрын
Omg what a great content, thanks for your effort!!!!
@helleye311
@helleye311 8 ай бұрын
This is pretty good, thanks! I keep forgetting you can have the parameter as impl Into instead of just String. And then I'm annoyed when I constantly need to do .to_string() or .to_owned() or into() on my hardcoded text. Is there a difference between fn foo(s: impl Into) and fn foo(s: T) where T: Into whether that be something semantic or functional? Which is preferred for a simple example like this? Also I found you can do fn foo(s:T) and that gets translated to the where syntax. Good, bad, thoughts?
@oliverjumpertzme
@oliverjumpertzme 8 ай бұрын
Hey, thanks a lot!
@helleye311
@helleye311 8 ай бұрын
​@@oliverjumpertzmeThat's great to know, thank you! I'm personally fond of putting the bound in the generic, but that's probably just because I'm primarily a typescript dev, and that's how typescript does it. Happy to know it's just "whatever you like" and not "well if you use where it's one behavior, and if you use impl it's another, and putting it in generic is the same as where but it implies something else". Hopefully there's a clippy rule to enforce using the same thing everywhere. I could get used to where or impl, but I would hate having all 3 scattered about the codebase if working with a team.
@oliverjumpertzme
@oliverjumpertzme 8 ай бұрын
@@helleye311 definitely stick to it then! Feeling comfortable and ”at home” in your code is more important than any conventions. The old mantra: do what works best for you. That's the beauty of Rust. You are usually not penalized for doing it one or the other way. ☺️
@RiwenX
@RiwenX 8 ай бұрын
Thanks, I really needed this video as a refresher of my dormant knowledge
@oliverjumpertzme
@oliverjumpertzme 8 ай бұрын
Super happy to hear that. Thanks a lot for watching! 💛
@MaiklPolk
@MaiklPolk 8 ай бұрын
Great video, thank you!
@oliverjumpertzme
@oliverjumpertzme 8 ай бұрын
Thank you for taking your time to watch it! 💛
@norude
@norude 8 ай бұрын
Is there any way to make a conversion from MyStruct to a String? You can't `impl Into for MyStruct`, because a String is not From You can't `impl From for String`, because of orphan rules I am stuck
@oliverjumpertzme
@oliverjumpertzme 8 ай бұрын
That's not entirely correct. :) If MyStruct is really YOUR struct, means, a local type (which is a type that you created and have under your control, read: its source is in one of your project's files), you can implement From for MyStruct as well as From for String. But I assume you mean that MyStruct is from a lib not under your control and now you want to implement From for either side? In that case, you can still work with the newtype principle. Create a new struct: struct Wrapper(ForeignType); and implement From for either side now, as Wrapper is now a local type, which means that orphan rules don't apply. :) An example: impl From for String { fn from(value: Wrapper) -> Self { // convert ForeignType to String } } Hope this helps?
@norude
@norude 8 ай бұрын
​@@oliverjumpertzmeI understood now, I didn't have a proper understanding of the orphan rules. They state that if any of the type parameters is a local type, the impl is allowed. I assumed that since From and String are not local, the impl is not allowed
@APerson-jf2md
@APerson-jf2md 4 ай бұрын
3:04 - that got me confused for a moment :D You meant the opposite: Into implies From T: Into -> T: From but not the other way around.
@APerson-jf2md
@APerson-jf2md 4 ай бұрын
ok.. - with the TryFrom you said it again, but now I understand what you mean.. You were talking about the blanket impls and not the type in itself.. So "a type that is Into implies it is From", but "implementing From" automatically "creates an implementation for Into", meaning "it implies the existence of an implementation of Into". But maybe my brain is wrong, or too nit-picky ;) Anyway, great videos!
@APerson-jf2md
@APerson-jf2md 4 ай бұрын
more nit-picking... sorry :) 14:30 this is not the "newtype idiom", but standard struct composition newtype is a thin wrapper around a type, mostly a zero-cost abstraction, so most of the time a tuple type like: struct Bytes(u32); struct Kilobytes(u32); (with possible conversions implemented) to prevent accidental mismatches in fn copy_data(data: ..., length: Kilobytes) {...
@APerson-jf2md
@APerson-jf2md 4 ай бұрын
17:17 and my OCD says: "P" should be "T" .. ok.ok.. I'll shut up!... ;)
@oliverjumpertzme
@oliverjumpertzme 4 ай бұрын
doc.rust-lang.org/rust-by-example/generics/new_types.html ☺️
@oliverjumpertzme
@oliverjumpertzme 4 ай бұрын
😜
@polanas1879
@polanas1879 8 ай бұрын
That's just top tier Rust content
@oliverjumpertzme
@oliverjumpertzme 8 ай бұрын
Thank you! 💛🙌🏻
@KylePrinsloo
@KylePrinsloo 8 ай бұрын
I don't know Rust, but you covered it well and looks interesting :) thanks for the vid!
@oliverjumpertzme
@oliverjumpertzme 8 ай бұрын
Thank you, Kyle! Oh, and congratulations on your new Podcast! Haven't had the time to watch it yet but it's the next on my list. 💛
@KylePrinsloo
@KylePrinsloo 8 ай бұрын
@@oliverjumpertzme thanks man :)
@anneallison6402
@anneallison6402 8 ай бұрын
Very good explanation!
@oliverjumpertzme
@oliverjumpertzme 8 ай бұрын
Thanks a lot! 💛🙌🏻
@kevincarvalhodejesus4473
@kevincarvalhodejesus4473 5 ай бұрын
Really good content, thank you so much for the explanation!
@oliverjumpertzme
@oliverjumpertzme 5 ай бұрын
Thank you so much for these kind words! 💛🙏🏻
@sypher4912
@sypher4912 8 ай бұрын
Very nice explanation!!!
@oliverjumpertzme
@oliverjumpertzme 8 ай бұрын
Thank you. Glad you liked it! 💛
@cthutu
@cthutu 8 ай бұрын
Excellent video and great presentation of some fundamental concepts in Rust.
@oliverjumpertzme
@oliverjumpertzme 8 ай бұрын
Thank you very much! Super happy to read that you liked it. It really means a lot to me! 💛
@bayoneta10
@bayoneta10 4 ай бұрын
Good video! Congrats!
@oliverjumpertzme
@oliverjumpertzme 4 ай бұрын
Thanks a lot! 💛🙏🏻
@avalagum7957
@avalagum7957 8 ай бұрын
Thank you very much. I just subscribed to your channel. Hope to have more videos like this from you. Thanks again.
@oliverjumpertzme
@oliverjumpertzme 8 ай бұрын
Hey, thanks a lot! You can count on me creating many more videos ☺️ Already working on the next!
@luiscarlosjayk
@luiscarlosjayk 6 ай бұрын
Very useful! Thanks
@OfficialViper
@OfficialViper 4 ай бұрын
Keep up the good work! This video is great! :)
@oliverjumpertzme
@oliverjumpertzme 4 ай бұрын
Thanks a lot! 💛 Doing my best to keep it up ☺️
@WhiteSponge
@WhiteSponge 8 ай бұрын
Really good video! subscribed!
@oliverjumpertzme
@oliverjumpertzme 8 ай бұрын
Thank you! 💛🙏🏻
@marcopaolovaleriovezzoli5776
@marcopaolovaleriovezzoli5776 8 ай бұрын
Amazing and really important.
@oliverjumpertzme
@oliverjumpertzme 8 ай бұрын
Thank you very much! 💛🙏🏻
@TooFatToKidnap
@TooFatToKidnap 8 ай бұрын
another banger video. keep up the good work Oliver 👍
@oliverjumpertzme
@oliverjumpertzme 8 ай бұрын
Thank you very much! Already working on the next. Trying to improve every time. 💛🙏🏻
@mateocalvo6138
@mateocalvo6138 8 ай бұрын
Using strings in factory methods I thought "there must be a better way to do this". I now know the way, thanks
@leifelliott1500
@leifelliott1500 8 ай бұрын
nice vid 👍
@meanmole3212
@meanmole3212 Ай бұрын
Interesting, maybe I will use AsRef now at some point, or I just forget about it like with associated trait types and never use it.
@oliverjumpertzme
@oliverjumpertzme Ай бұрын
Rust has a lot of features that even I sometimes tend to forget about (and I use Rust daily 😂). It's like muscle memory. If you've just other languages for long enough, you first need to get used to new systems. Rust, eg. Has a pretty solid one, but that, admittedly, comes with many things to keep in the back of our heads. ☺️
@catsolstice
@catsolstice 4 ай бұрын
Good content 👍
@oliverjumpertzme
@oliverjumpertzme 4 ай бұрын
Thank you!
@laycookie-f6i
@laycookie-f6i 8 ай бұрын
Just started learning rust and I feel like I just leveled up lol
@oliverjumpertzme
@oliverjumpertzme 8 ай бұрын
I guess that's a perfect start then!
@emdeization
@emdeization 8 ай бұрын
Good stuff
@oliverjumpertzme
@oliverjumpertzme 8 ай бұрын
Thank you! ❤️‍🔥🙏🏻
@inversebrah
@inversebrah 8 ай бұрын
cool
@simonkalu
@simonkalu 8 ай бұрын
Awesome
@oliverjumpertzme
@oliverjumpertzme 8 ай бұрын
Thank you! 💛
@LibreGlider
@LibreGlider 7 ай бұрын
Just so you know I was the 1000th sub. Congrats from a future Rustacean!
@oliverjumpertzme
@oliverjumpertzme 7 ай бұрын
Wooohooooo! Thanks a lot! 💛🙌🏻
@jpp855
@jpp855 4 ай бұрын
Não entendi porra nenhum, mas acho que você explicou bem, me falta fundamentos.
@oliverjumpertzme
@oliverjumpertzme 4 ай бұрын
First of all: thank you. Second: super sorry you think you lack the fundamentals. Any way I can try to help you to improve the situation? ☺️
@jpp855
@jpp855 4 ай бұрын
@@oliverjumpertzme still learning Rust, I have just a basic idea about From, Try, Into… thank you concern! I will visit your video on future. So, you already helped.
Is Nushell Worth The Hype?
16:00
DevOps Toolbox
Рет қаралды 39 М.
This is my favorite feature in Rust
12:45
Oliver Jumpertz
Рет қаралды 9 М.
Каха и лужа  #непосредственнокаха
00:15
Why It (Mostly) Doesn't Matter How You Code In Rust
22:57
Oliver Jumpertz
Рет қаралды 14 М.
Choose the Right Option
18:14
Logan Smith
Рет қаралды 73 М.
Is Functional Programming DEAD Already?
21:07
Continuous Delivery
Рет қаралды 68 М.
Rust Data Modelling Without Classes
11:25
No Boilerplate
Рет қаралды 179 М.
Use Arc Instead of Vec
15:21
Logan Smith
Рет қаралды 152 М.
Embedded Rust setup explained
23:03
The Rusty Bits
Рет қаралды 90 М.
Rust: Generics, Traits, Lifetimes
35:34
The Dev Method
Рет қаралды 49 М.
but what is 'a lifetime?
12:20
leddoo
Рет қаралды 78 М.
Tonic makes gRPC in Rust stupidly simple
19:08
Dreams of Code
Рет қаралды 52 М.