Rust Collections & Iterators Demystified 🪄

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

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

  • @codetothemoon
    @codetothemoon  4 дня назад +3

    👉 To try everything Brilliant has to offer for free for a full 30 days, visit brilliant.org/CodetotheMoon/ You’ll also get 20% off an annual premium subscription. They have courses on LLMs and Quantum Computing!

    • @CrazyLuke11
      @CrazyLuke11 2 дня назад +1

      You little cheater! You implemented not listed a day before uploading and added the trait first comment before we even had a chance

    • @codetothemoon
      @codetothemoon  6 часов назад

      @@CrazyLuke11 haha guilty as charged!

  • @Cm0nd00d
    @Cm0nd00d 2 дня назад +23

    BIG YES to this kind of Rust knowledge. It bridges the gap for JS / Python devs nicely

    • @codetothemoon
      @codetothemoon  2 дня назад +2

      Nice, glad it resonated with you!

    • @Cm0nd00d
      @Cm0nd00d День назад

      Other things I think will really translate for a TS dev to Rust:
      1. build express server & compare to rust tokio
      2. read csv, parse, run aggregations, write file (compare)
      3. small cli tic-tac-toe game showing limitations of TS types & strength of Rust Traits
      4. Server in-memory operations showing how GC overhead for TS can be problematic at scale, and how Rust automagically removes variables when out of scope. Example usage, aggregator API. Input request is some collection, server queries 4 other APIs, aggregates data and returns collection

  • @flippert0
    @flippert0 2 дня назад +21

    I strongly disagree socks and coal are "junk". These items keep you warm in winter. Can't do that with diamonds and emeralds (unless you buy socks and coal with them).

    • @codetothemoon
      @codetothemoon  2 дня назад +3

      Touché, good point. My implicit frame of reference was an rpg-like video game, I should have made this clear 😎

  • @ryanswatson
    @ryanswatson 2 дня назад +9

    The quality of this video is awesome! Please please make more videos like this, the length and content covered is just right.
    While there are quality videos out there, they end up being very long and unfocused leading to videos closer to an hour long....

    • @codetothemoon
      @codetothemoon  2 дня назад +2

      Thank you, really happy it resonated with you!

  • @arctic_line
    @arctic_line 2 дня назад +8

    Just as a tip, it might be a good idea to disable code ligatures for the code snippets, at least for videos covering fairly fundamental parts of a language. It might not be hard for people who aren't used to it to figure them out, but it is a small barrier to reading them

    • @codetothemoon
      @codetothemoon  День назад

      Thanks for the feedback, this is something I hadn’t considered!

  • @AMusset
    @AMusset День назад +1

    Thank you SO MUCH for this video! It finally cleared up the confusion about all this iterator stuff!

    • @codetothemoon
      @codetothemoon  День назад

      nice! really happy you got someting out of it!

  • @sergeykuznetsov7688
    @sergeykuznetsov7688 2 дня назад +5

    Thanks! Really good explanation of collections and iterators!

  • @christerpherhunter930
    @christerpherhunter930 День назад +1

    i watched this video while on my coffee rush. I am intimately familiar with the topics you covered in this video. Thank you so much for connecting to me on a deep level!

    • @codetothemoon
      @codetothemoon  День назад

      nice, really glad you liked it despite already knowing much of the content!

  • @pancakedrivet
    @pancakedrivet 23 часа назад

    Super informative video, the only bit that I wasn't clear on was why the Result would stop iterating on the first error it encountered? It sort of makes sense from context but I don't know where that leaves things like the resulting vec or if you can no longer use the collection (as it's been consumed) and you can't access the elements as you only have the Err variant back?
    (I've been much more likely to use the Vec type so understanding the "rusty" way to do the same thing properly would be awesome!

  • @theycallmesloth
    @theycallmesloth День назад +1

    My favourite rust feature is exactly this.
    The type system and other features that accomodate it.

    • @codetothemoon
      @codetothemoon  День назад

      Agree, the Rust type system is amazing 🤩

  • @sususu9
    @sususu9 День назад +1

    I love this channel
    Taught me so much stuff about rust.
    I always recommend it to other people who learn rust
    Thank you so much

    • @codetothemoon
      @codetothemoon  День назад

      awesome, really happy you got something out of it! and thanks for the kind words!

  • @sanjsahayam5271
    @sanjsahayam5271 2 дня назад +1

    Very nice explanations of some basic concepts that trips people up. More of this type of content please!

  • @MichaelKefeder
    @MichaelKefeder 10 часов назад

    at about 8:51 the the entry(...).or_insert_with(Vec::new) can be rewritten as entry(...).or_default() which clippy will helpfully tell you to do too :) This works because the Default impl of Vec gives you an empty vector.

  • @Hellbending
    @Hellbending День назад +1

    More of these please B0ss 🤣🤣
    I’d love to see a sectioned series covering all the traits in the std lib (and maybe some of the extension crates traits that are super popular like itertools)

    • @codetothemoon
      @codetothemoon  День назад +1

      nice, glad it resonated with you! and great idea!

    • @Hellbending
      @Hellbending День назад

      @@codetothemoon some positive feedback to understand the viewer base side of things- I enjoy seeing your videos pop up and love watching them. A lot of the time I tend to be unsure of what exactly you’ll be covering though (‘direction’ if you will?) I think something like this may help give that solidified feeling that there’s a common audience goal, just some ‘food for thought’ type stuff ig
      Keep on keepin’ on brother 🤙❤️❤️

  • @omarbarra3456
    @omarbarra3456 2 дня назад +2

    Cool, Rust is powerful thanks

  • @taquanminhlong
    @taquanminhlong 2 дня назад +5

    4:01 I don't think you should use clone there 😂

    • @codetothemoon
      @codetothemoon  2 дня назад +3

      Good catch :) I had all the examples in one program when I was writing them, so I was using clone everywhere. Intended to remove them all for the video but this one slipped through the cracks

  • @jsf-z3u
    @jsf-z3u 2 дня назад +2

    Please more videos like this 🙏

  • @henrymaddocks984
    @henrymaddocks984 2 дня назад +1

    I did not know about or_insert_with. That's going straight to the pool room.

    • @codetothemoon
      @codetothemoon  День назад

      Nice, glad you got something from the video!!

  • @benspencer1163
    @benspencer1163 День назад +1

    thanks a lot for the good work, the beard is awesome 😎 sir

  • @jakubbb
    @jakubbb 2 дня назад +2

    thank you

  • @devsimples
    @devsimples 2 дня назад +1

    Liked the video just for the thumbnail

  • @antoniong4380
    @antoniong4380 2 дня назад +1

    What did you use to animate these code snippets?

    • @codetothemoon
      @codetothemoon  День назад

      Animotion, created by the fellow who runs the “Joy of Code” channel! Fantastic tool.

  • @Mr.BinarySniper
    @Mr.BinarySniper 2 дня назад +1

    fold is similar to array.reduce method in javascript.

    • @fred.flintstone4099
      @fred.flintstone4099 2 дня назад +1

      In C# you have the Aggregate method which I believe is similar.

    • @codetothemoon
      @codetothemoon  День назад

      I looked into this and you're right! it seems like reduce can mean something a bit different in each ecosystem - for example in Rust it does not allow you to specify an initial accumulator value, and the type of the accumulator must be the same as that of the input elements. But the javascript implementation is more like Rust's fold...

  • @snk-js
    @snk-js 2 дня назад +2

    can~t still understand, into~thing

    • @codetothemoon
      @codetothemoon  2 дня назад +2

      If you can tell me what part you’re stuck on maybe I can clarify a bit!

    • @antoniong4380
      @antoniong4380 2 дня назад

      Going into details: ".into()" is from a Trait Implementation, and used to explicitly convert a data type into another if it supports the conversion. Like for example, converting an i8 (Might commonly be refered as Short type in other languages) '.into()' i32 (Might be commonly be refered as int in other languages).
      Here in the video, `"Socks"` are actually a `&str`, which could be considered as a Wide-pointer that holds the memory address to some data plus the length of the data (i. E. How many chars can you safely read. It's kind of like Java' s Arrays, which you can find the array's length by reading the 'length' attribute)
      "&str" are different from "String" because the first is a "wide-pointer" that holds some memory addres + the length, whereas the second is dynamic sized array (Vectors).
      The String (which is a vector under the hood) would additionally hold the capacity, so you can know how many more chars/bytes can you push into the allocation, before you need to re-allocate the string in the heap to get more writing space.
      Short form:
      `String` can be gotten from a "&str", which is where CodeToTheMoon used it the most, and because he was storing Strings, and not & str's, he needed to call ".into()" because Rust doesn't do implicit conversions

  • @Khl8122
    @Khl8122 2 дня назад +1

    Longest 12 minutes video. To fully understand, watch/listen multiple times.

    • @codetothemoon
      @codetothemoon  2 дня назад +1

      Thanks for the feedback. Would a slower pace have been better?

    • @Khl8122
      @Khl8122 2 дня назад +1

      @ No, the pace and the delivery are good. The topic is not an easy one.

  • @deezydoezeet
    @deezydoezeet 2 дня назад +1

    Noice!

  • @_ethqnol_
    @_ethqnol_ 2 дня назад +2

    Second 🎉

  • @CrazyLuke11
    @CrazyLuke11 2 дня назад +2

    Third! yay

  • @flatmapper
    @flatmapper 2 дня назад +4

    I don't like Rust just because of ceremony of writing borrowing, ownership fluff.

    • @codetothemoon
      @codetothemoon  2 дня назад +2

      Understandable!

    • @fred.flintstone4099
      @fred.flintstone4099 2 дня назад +4

      This is because Rust is a low-level language so it doesn't have any garbage collector, so you shouldn't compare Rust to high-level languages such as C#, Java, JavaScript or Python, you should compare it to other low-level languages such as C, C++, D and Zig. When you compare Rust to other low-level languages you will see why the borrowing and ownership stuff is amazing.