Love your content. The whole way through this video I was certain there would be a performance hit i.e. type coercion (sorry PHP and JS dev here) Then you mentioned it is taken care of! Loving this - thank you so much!
Yep. Compiling multiple versions is standard for generics in compiled languages. In C++ though, it's a pain in the *** to use generics declared in a separate binary that's linked dynamically. I suppose, dynamic linking is a pain in the *** regardless. I'm brand new to rust so I don't know how it handles it yet (does it?)
Fabulous Man !!! I was going through the rust book for quite some time, but the topics I was able to cover using ur playlist is far more in great pace !!! tysm , just love ur teaching style !! Can see lot of traction of using rust in blockchain, could you make something building common concepts in blokchain using RUST, I guess this will bring lot of traction to ur channel too :)
question: 11:18, why fn mixup can not have &self argument? it fails due to T does not implemnt Copy Trait, but why this missing Copy Trait works with self as not a reference? I though that T has no Copy Trait no matter self is a reference or not.
I really think traits are a really good way to limit your template and make them safer, wish we had those in java too (we have something similar but not close, i.e., we can extend from prebuilt classes so that the T type can be only of a child type of only a particular class)
You mentioned that the all needed versions of a generic are created at compile time. So are generics implemented using type erasure like in java or how does it work under the hood?
would be really cool, but not yet :( right now the way rust handles variadic arguments for functions is not to write a function but a macro instead. macros are able to match a variable number of arguments and often expand recursively. you *could* write a macro that creates something based on a variable number of types, but you'd lose the things that make normal generics good: when you use a normal generic, a new type is automatically inferred and created.
impl Point means "for every point whose x is any type and y is any type" impl Point would mean "for every point whose x and y are the same type" impl Point would mean "for every point whose x is f32 and y is any type"
@@coldsir5406 The response doesn't really answer the question. The generic types after the struct name (Point) refer to the fields of the struct, while the generict types after impl (impl) define those types for the methods, etc. inside the impl. For example you may have a Point but you want to be able to add to it with either an int or a float: impl Point { fn add(&self, x: T, y: U) {...} }
I have started learning RUST and your videos help me immensely. I follow your explanations and those as well from the PDF files on my desktop. Here is one question for you about structures. In C, I can define a structure as a typedef. Is the typedef facility or prototyping function definitions also available in Rust?
Reads straight from Rust book for entire video. "If you don't understand just pause the video and read through." People who read rust book and still don't understand: !?!?! Serioiusly? That's why were here
📝 Get your *FREE Rust cheat sheet* : www.letsgetrusty.com/cheatsheet
Your explanation is really easy to understand, thank you!
I recently discovered your channel I like it so far. I'm big fan of Rust, I cannot say I'm still good at it though. Keep up the good work.
no such thing as want or duplication or concise or short or etc, outx, can outx infix any nmw and any s perfect
This was very well explained. Thank you Bogdan!
Love your content. The whole way through this video I was certain there would be a performance hit i.e. type coercion (sorry PHP and JS dev here) Then you mentioned it is taken care of! Loving this - thank you so much!
The obvious drawback is that for each concrete type the compiler generates "duplicate" code, leading to a bigger executable.
Yep. Compiling multiple versions is standard for generics in compiled languages. In C++ though, it's a pain in the *** to use generics declared in a separate binary that's linked dynamically.
I suppose, dynamic linking is a pain in the *** regardless. I'm brand new to rust so I don't know how it handles it yet (does it?)
@@SemiMono It's a pain in the pointer, and a pain in the dereference.
Great explaination finally understood how generics work
as a C# Developer this looks just like im using it in C#, Rust is really awesome
This was a super helpful overview - great job!
Fabulous Man !!! I was going through the rust book for quite some time, but the topics I was able to cover using ur playlist is far more in great pace !!! tysm , just love ur teaching style !!
Can see lot of traction of using rust in blockchain, could you make something building common concepts in blokchain using RUST, I guess this will bring lot of traction to ur channel too :)
Excellent video on a topic that can be difficult for some.
How do you cast generic type to primitive? Example minutes 09:41, line 8, &self.x + 1
question: 11:18, why fn mixup can not have &self argument? it fails due to T does not implemnt Copy Trait, but why this missing Copy Trait works with self as not a reference? I though that T has no Copy Trait no matter self is a reference or not.
7:17
For Structs, why do we have to define Types T and U if both are used to take any type, and why not just let it be i32 and f32
Thank YOu Bogdan You are really doing superb.
10:51 That is so cool
why doesnt my refactoring menu show the "extract function" method? any extension i need to install except rust-analyzer?
rust-cocnballz It's really helpful extension
I really think traits are a really good way to limit your template and make them safer, wish we had those in java too (we have something similar but not close, i.e., we can extend from prebuilt classes so that the T type can be only of a child type of only a particular class)
Not sure what exactly you are missing in Java.
@@31redorange08 I don't know if there is a way to limit a genric class's method to only work with a particular class
@@sahilverma4077 Don't make it generic then.
@@31redorange08 have you ever noticed we can have a stream of any class but not of characters
I want that kind of feature
Looks pretty much like swift ) thank you for your tuts
Same person created both Swift and Rust.
YES! I love Swift that is why I fall in love with Rust.
yoooo nicely explained! subscribed
Welcome aboard!
You mentioned that the all needed versions of a generic are created at compile time. So are generics implemented using type erasure like in java or how does it work under the hood?
Do you have an Option and Result enums as a tattoos on your arms?
what is the music in the background?
Is there a variadic generic type?
:( i think not yet i hope it will be soon.
would be really cool, but not yet :(
right now the way rust handles variadic arguments for functions is not to write a function but a macro instead.
macros are able to match a variable number of arguments and often expand recursively.
you *could* write a macro that creates something based on a variable number of types, but you'd lose the things that make normal generics good: when you use a normal generic, a new type is automatically inferred and created.
Can anyone share some reference for inheritance like functionality in rust
What are you doing with your audio? Sounds so clean
Nothing special, just using the Blue Yeti mic!
Two eggs in the morning and a glass of whiskey at night 😉
@@ozanmuyes Does this really works or just sarcasm?
Why doesn’t the last example throw an error at line 21, arent x and y private?
men you are better than undemy tutorials.
background music name???
c++ added similar feature in c++20. Basically, this feature is introduced to programming after 2015. People waited for it for at least 20 years.
At mixup(), I want the first parameter to be &self, not just self. p1.mixup(p2) consumes both p1 and p2 because of move :(
this channel as become a school for me
Why do we need to define the type of impl can't we just write witrhout generics like ```impl Point```
impl Point means "for every point whose x is any type and y is any type"
impl Point would mean "for every point whose x and y are the same type"
impl Point would mean "for every point whose x is f32 and y is any type"
@@raffimolero64 thank you sir
@@coldsir5406 The response doesn't really answer the question. The generic types after the struct name (Point) refer to the fields of the struct, while the generict types after impl (impl) define those types for the methods, etc. inside the impl.
For example you may have a Point but you want to be able to add to it with either an int or a float:
impl Point {
fn add(&self, x: T, y: U) {...}
}
@@kevinmbtbass got it in the end, thanks
I have started learning RUST and your videos help me immensely. I follow your explanations and those as well from the PDF files on my desktop.
Here is one question for you about structures. In C, I can define a structure as a typedef. Is the typedef facility or prototyping function definitions also available in Rust?
If I understand typedef correctly, it'S a type alias. Those exist in Rust as well by using the type keyword:
type TypeAlias = MyStruct;
Hi.. great video.. thanks !
I just learnt that John Wick is a programmer
Nice Morgan !!!
Loved it
Great video
Nice job
очень полезные видео, спасибо
is self in rust similar to this in javascript?
Yes. self / this both refer to the object/struct that the method is defined for.
Nice video
New music! :D
It doesn't slow down performance but it should be noted that heavy use of generics makes your binaries larger.
Instead of taking in a vector of integers, we want to take in a vector of TEA.
Excellent video. Is there a faint background music behind? Quite irritating when you want to concentrate. Thanks. 🙏
Music is improved in future videos!
@@letsgetrusty No worry. Thx for your excellent video which I would definitely watch first before dive into the detail doc.
@@letsgetrusty Oh, perhaps without any music would be better? Thx.
@@letsgetrusty I’m the opposite I find the background music helps me to concentrate more on what you said in the video 😂😂😂
I’m the opposite I find the background music helps me to concentrate more on what he said in the video 😂😂😂
awesome
backgroud music is very distracting..please try to avoid it
chad bogdan
better use Ord instead. Partial order doesn't guarantee global maximum exist (mathemetically)
everything is great, except background music is annoying. Makes it hard to focus.
you need to work on the lighting: you seem to be wearing a mask around your eyes or having been up all night...
Dude background music isn’t appropriate for coding tutorial videos please 🤣
Reads straight from Rust book for entire video. "If you don't understand just pause the video and read through."
People who read rust book and still don't understand: !?!?! Serioiusly? That's why were here