Generic Types in Rust

Поделиться
HTML-код
  • Опубликовано: 4 янв 2025

Комментарии • 89

  • @letsgetrusty
    @letsgetrusty  3 года назад +8

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

  • @koustubh7476
    @koustubh7476 2 года назад +28

    Your explanation is really easy to understand, thank you!

  • @k3rnel_err0r
    @k3rnel_err0r 3 года назад +33

    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 2 года назад

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

  • @TheEmbeddedLinuxDude
    @TheEmbeddedLinuxDude 3 года назад +12

    This was very well explained. Thank you Bogdan!

  • @jaredrethman
    @jaredrethman 3 года назад +26

    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 2 года назад +1

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

  • @comicalleel4710
    @comicalleel4710 7 дней назад

    Great explaination finally understood how generics work

  • @Kollegah9997
    @Kollegah9997 2 года назад +15

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

  • @tombo615
    @tombo615 2 года назад +2

    This was a super helpful overview - great job!

  • @bjugdbjk
    @bjugdbjk 3 года назад +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 :)

  • @NFLStudy
    @NFLStudy 2 года назад +1

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

  • @Taetae_1717
    @Taetae_1717 2 года назад +1

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

  • @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.

  • @devOnHoliday
    @devOnHoliday 8 месяцев назад

    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

  • @teachforyou6489
    @teachforyou6489 3 года назад +2

    Thank YOu Bogdan You are really doing superb.

  • @tech3425
    @tech3425 4 месяца назад

    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?

  • @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

  • @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 8 месяцев назад

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

  • @dzibanart8521
    @dzibanart8521 3 года назад +3

    yoooo nicely explained! subscribed

  • @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?

  • @rotteegher39
    @rotteegher39 Год назад

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

  • @paperstars9078
    @paperstars9078 Год назад

    what is the music in the background?

  • @sc5shout
    @sc5shout 3 года назад +3

    Is there a variadic generic type?

    • @HermanWillems
      @HermanWillems 3 года назад +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.

  • @nirajgautam403
    @nirajgautam403 10 месяцев назад

    Can anyone share some reference for inheritance like functionality in rust

  • @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?

  • @natanfurman2467
    @natanfurman2467 2 года назад

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

  • @filipbarbaric1960
    @filipbarbaric1960 2 года назад

    men you are better than undemy tutorials.

  • @DMZT_dhruv
    @DMZT_dhruv 4 месяца назад

    background music name???

  • @hanyanglee9018
    @hanyanglee9018 8 месяцев назад

    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.

  • @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 :(

  • @cleverengineer2410
    @cleverengineer2410 8 месяцев назад

    this channel as become a school for me

  • @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 2 года назад +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 2 года назад

      @@kevinmbtbass got it in the end, thanks

  • @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 2 года назад

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

  • @JohnWick-mk4ve
    @JohnWick-mk4ve 3 года назад +2

    Hi.. great video.. thanks !

    • @exoticcoder5365
      @exoticcoder5365 3 года назад +1

      I just learnt that John Wick is a programmer

  • @walli33
    @walli33 Год назад

    Nice Morgan !!!

  • @tech3425
    @tech3425 4 месяца назад

    Loved it

  • @orhalimi
    @orhalimi 3 года назад

    Great video

  • @feliperios7536
    @feliperios7536 2 года назад

    Nice job

  • @IvanMorozov-f6w
    @IvanMorozov-f6w 10 месяцев назад

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

  • @christosbinos8467
    @christosbinos8467 2 года назад

    is self in rust similar to this in javascript?

    • @Gramini
      @Gramini 2 года назад

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

  • @muneebakhlaq3085
    @muneebakhlaq3085 3 года назад

    Nice 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.

  • @poonikarthu4988
    @poonikarthu4988 2 года назад

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

  • @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 3 года назад +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 3 года назад

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

  • @ramanShariati
    @ramanShariati 2 года назад

    awesome

  • @naitikmakwana4286
    @naitikmakwana4286 Год назад +15

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

  • @ehsanisa3759
    @ehsanisa3759 2 года назад

    chad bogdan

  • @WaiTingKuo0527
    @WaiTingKuo0527 2 года назад

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

  • @kmaximoff
    @kmaximoff 8 месяцев назад

    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...

  • @1234fewgfwe
    @1234fewgfwe 5 месяцев назад

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

  • @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