Generic Types in Rust

แชร์
ฝัง
  • เผยแพร่เมื่อ 28 ก.ย. 2024

ความคิดเห็น • 88

  • @letsgetrusty
    @letsgetrusty  3 ปีที่แล้ว +7

    📝 Get your *FREE Rust cheat sheet* : www.letsgetrusty.com/cheatsheet

  • @Kollegah9997
    @Kollegah9997 2 ปีที่แล้ว +13

    as a C# Developer this looks just like im using it in C#, Rust is really awesome

  • @koustubh7476
    @koustubh7476 2 ปีที่แล้ว +26

    Your explanation is really easy to understand, thank you!

  • @antonioquintero-felizzola5334
    @antonioquintero-felizzola5334 3 ปีที่แล้ว +30

    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.

    • @zes7215
      @zes7215 ปีที่แล้ว

      no such thing as want or duplication or concise or short or etc, outx, can outx infix any nmw and any s perfect

  • @1986lawless
    @1986lawless 3 ปีที่แล้ว +24

    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!

    • @31redorange08
      @31redorange08 3 ปีที่แล้ว +9

      The obvious drawback is that for each concrete type the compiler generates "duplicate" code, leading to a bigger executable.

    • @SemiMono
      @SemiMono 2 ปีที่แล้ว +2

      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?)

    • @lacascadaobregon
      @lacascadaobregon ปีที่แล้ว +1

      @@SemiMono It's a pain in the pointer, and a pain in the dereference.

  • @TheEmbeddedLinuxDude
    @TheEmbeddedLinuxDude 3 ปีที่แล้ว +11

    This was very well explained. Thank you Bogdan!

  • @bjugdbjk
    @bjugdbjk 2 ปีที่แล้ว +2

    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 :)

  • @tombo615
    @tombo615 2 ปีที่แล้ว +2

    This was a super helpful overview - great job!

  • @NFLStudy
    @NFLStudy 2 ปีที่แล้ว +1

    Excellent video on a topic that can be difficult for some.

  • @sahilverma4077
    @sahilverma4077 3 ปีที่แล้ว +3

    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)

    • @31redorange08
      @31redorange08 3 ปีที่แล้ว

      Not sure what exactly you are missing in Java.

    • @sahilverma4077
      @sahilverma4077 3 ปีที่แล้ว

      @@31redorange08 I don't know if there is a way to limit a genric class's method to only work with a particular class

    • @31redorange08
      @31redorange08 3 ปีที่แล้ว

      @@sahilverma4077 Don't make it generic then.

    • @sahilverma4077
      @sahilverma4077 3 ปีที่แล้ว

      @@31redorange08 have you ever noticed we can have a stream of any class but not of characters

    • @sahilverma4077
      @sahilverma4077 3 ปีที่แล้ว

      I want that kind of feature

  • @tech3425
    @tech3425 หลายเดือนก่อน

    10:51 That is so cool

  • @WaiTingKuo0527
    @WaiTingKuo0527 2 ปีที่แล้ว +1

    why doesnt my refactoring menu show the "extract function" method? any extension i need to install except rust-analyzer?

  • @Taetae_1717
    @Taetae_1717 ปีที่แล้ว +1

    How do you cast generic type to primitive? Example minutes 09:41, line 8, &self.x + 1

  • @maksymrachytskyy1677
    @maksymrachytskyy1677 2 ปีที่แล้ว +2

    Looks pretty much like swift ) thank you for your tuts

    • @oyewodayo
      @oyewodayo 2 ปีที่แล้ว

      Same person created both Swift and Rust.

    • @kmaximoff
      @kmaximoff 4 หลายเดือนก่อน

      YES! I love Swift that is why I fall in love with Rust.

  • @cleverengineer2410
    @cleverengineer2410 5 หลายเดือนก่อน

    this channel as become a school for me

  • @devOnHoliday
    @devOnHoliday 5 หลายเดือนก่อน

    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

  • @nirajgautam403
    @nirajgautam403 7 หลายเดือนก่อน

    Can anyone share some reference for inheritance like functionality in rust

  • @dzibanart8521
    @dzibanart8521 3 ปีที่แล้ว +3

    yoooo nicely explained! subscribed

  • @lsatenstein
    @lsatenstein 2 ปีที่แล้ว +2

    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?

    • @Gramini
      @Gramini ปีที่แล้ว

      If I understand typedef correctly, it'S a type alias. Those exist in Rust as well by using the type keyword:
      type TypeAlias = MyStruct;

  • @tech3425
    @tech3425 หลายเดือนก่อน

    Loved it

  • @paperstars9078
    @paperstars9078 ปีที่แล้ว

    what is the music in the background?

  • @JohnWick-mk4ve
    @JohnWick-mk4ve 3 ปีที่แล้ว +2

    Hi.. great video.. thanks !

    • @exoticcoder5365
      @exoticcoder5365 2 ปีที่แล้ว +1

      I just learnt that John Wick is a programmer

  • @adrian_sp6def
    @adrian_sp6def ปีที่แล้ว

    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.

  • @DMZT_dhruv
    @DMZT_dhruv หลายเดือนก่อน

    background music name???

  • @jabuci
    @jabuci 2 ปีที่แล้ว

    At mixup(), I want the first parameter to be &self, not just self. p1.mixup(p2) consumes both p1 and p2 because of move :(

  • @IvanMorozov-f6w
    @IvanMorozov-f6w 6 หลายเดือนก่อน

    очень полезные видео, спасибо

  • @natanfurman2467
    @natanfurman2467 ปีที่แล้ว

    Why doesn’t the last example throw an error at line 21, arent x and y private?

  • @rotteegher39
    @rotteegher39 ปีที่แล้ว

    Do you have an Option and Result enums as a tattoos on your arms?

  • @sc5shout
    @sc5shout 2 ปีที่แล้ว +3

    Is there a variadic generic type?

    • @HermanWillems
      @HermanWillems 2 ปีที่แล้ว +1

      :( i think not yet i hope it will be soon.

    • @raffimolero64
      @raffimolero64 2 ปีที่แล้ว

      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.

  • @naitikmakwana4286
    @naitikmakwana4286 ปีที่แล้ว +14

    backgroud music is very distracting..please try to avoid it

  • @orhalimi
    @orhalimi 3 ปีที่แล้ว

    Great video

  • @SemiMono
    @SemiMono 2 ปีที่แล้ว

    New music! :D

  • @samuelwittlinger7790
    @samuelwittlinger7790 ปีที่แล้ว +2

    It doesn't slow down performance but it should be noted that heavy use of generics makes your binaries larger.

  • @christosbinos8467
    @christosbinos8467 2 ปีที่แล้ว

    is self in rust similar to this in javascript?

    • @Gramini
      @Gramini ปีที่แล้ว

      Yes. self / this both refer to the object/struct that the method is defined for.

  • @ramanShariati
    @ramanShariati 2 ปีที่แล้ว

    awesome

  • @poonikarthu4988
    @poonikarthu4988 2 ปีที่แล้ว

    Instead of taking in a vector of integers, we want to take in a vector of TEA.

  • @WaiTingKuo0527
    @WaiTingKuo0527 2 ปีที่แล้ว

    better use Ord instead. Partial order doesn't guarantee global maximum exist (mathemetically)

  • @kmaximoff
    @kmaximoff 4 หลายเดือนก่อน

    everything is great, except background music is annoying. Makes it hard to focus.

  • @pynchia4119
    @pynchia4119 2 ปีที่แล้ว

    you need to work on the lighting: you seem to be wearing a mask around your eyes or having been up all night...

  • @arthurtapper1092
    @arthurtapper1092 3 ปีที่แล้ว

    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

  • @teachforyou6489
    @teachforyou6489 2 ปีที่แล้ว +2

    Thank YOu Bogdan You are really doing superb.

  • @redcrafterlppa303
    @redcrafterlppa303 2 ปีที่แล้ว +1

    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?

  • @jayleejw1801
    @jayleejw1801 2 หลายเดือนก่อน

    Dude background music isn’t appropriate for coding tutorial videos please 🤣

  • @hanyanglee9018
    @hanyanglee9018 5 หลายเดือนก่อน

    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.

  • @GolangDojo
    @GolangDojo 3 ปีที่แล้ว +4

    What are you doing with your audio? Sounds so clean

    • @letsgetrusty
      @letsgetrusty  3 ปีที่แล้ว +3

      Nothing special, just using the Blue Yeti mic!

    • @ozanmuyes
      @ozanmuyes 3 ปีที่แล้ว +1

      Two eggs in the morning and a glass of whiskey at night 😉

    • @oyewodayo
      @oyewodayo 2 ปีที่แล้ว

      @@ozanmuyes Does this really works or just sarcasm?

  • @ehsanisa3759
    @ehsanisa3759 ปีที่แล้ว

    chad bogdan

  • @filipbarbaric1960
    @filipbarbaric1960 ปีที่แล้ว

    men you are better than undemy tutorials.

  • @walli33
    @walli33 ปีที่แล้ว

    Nice Morgan !!!

  • @muneebakhlaq3085
    @muneebakhlaq3085 2 ปีที่แล้ว

    Nice video

  • @feliperios7536
    @feliperios7536 2 ปีที่แล้ว

    Nice job

  • @coldsir5406
    @coldsir5406 2 ปีที่แล้ว

    Why do we need to define the type of impl can't we just write witrhout generics like ```impl Point```

    • @raffimolero64
      @raffimolero64 2 ปีที่แล้ว +7

      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
      @coldsir5406 2 ปีที่แล้ว

      @@raffimolero64 thank you sir

    • @kevinmbtbass
      @kevinmbtbass ปีที่แล้ว +1

      @@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) {...}
      }

    • @coldsir5406
      @coldsir5406 ปีที่แล้ว

      @@kevinmbtbass got it in the end, thanks

  • @caseyyeow1649
    @caseyyeow1649 3 ปีที่แล้ว +3

    Excellent video. Is there a faint background music behind? Quite irritating when you want to concentrate. Thanks. 🙏

    • @letsgetrusty
      @letsgetrusty  3 ปีที่แล้ว +2

      Music is improved in future videos!

    • @caseyyeow1649
      @caseyyeow1649 3 ปีที่แล้ว +1

      @@letsgetrusty No worry. Thx for your excellent video which I would definitely watch first before dive into the detail doc.

    • @caseyyeow1649
      @caseyyeow1649 3 ปีที่แล้ว

      @@letsgetrusty Oh, perhaps without any music would be better? Thx.

    • @exoticcoder5365
      @exoticcoder5365 2 ปีที่แล้ว +1

      @@letsgetrusty I’m the opposite I find the background music helps me to concentrate more on what you said in the video 😂😂😂

    • @exoticcoder5365
      @exoticcoder5365 2 ปีที่แล้ว

      I’m the opposite I find the background music helps me to concentrate more on what he said in the video 😂😂😂