Traits and You: A Deep Dive - Nell Shamrell-Harrington

  Рет қаралды 39,395

Rust Belt Rust Conference

Rust Belt Rust Conference

Күн бұрын

Пікірлер: 80
@countbrapcula-espana
@countbrapcula-espana 6 жыл бұрын
She is decisive and speaks extremely clearly and with good force. I like it !!!
@lerinarazafy7826
@lerinarazafy7826 6 жыл бұрын
Great teacher. The DnD metaphor should be incorporated into the official Rust book.
@macroscalequantumsys
@macroscalequantumsys 6 жыл бұрын
But using the full rulebook, not simplified.
@sunbang9000
@sunbang9000 5 жыл бұрын
and also a playable demo. ;-)
@7xr1e20ln8
@7xr1e20ln8 5 жыл бұрын
DnD are specific to Western understanding, never learnt about dnd in Asia.
@MsHofmannsJut
@MsHofmannsJut 2 жыл бұрын
@@7xr1e20ln8 as long as you've played an rpg though...
@hanyanglee9018
@hanyanglee9018 4 ай бұрын
DnD 3r(ust)
@sbrugby1
@sbrugby1 4 жыл бұрын
Tremendous talk. I hope we hear more from Nell in the future. Great communicator.
@jaysanprogramming6818
@jaysanprogramming6818 6 жыл бұрын
That was awesome! I'd love to see a tutorial series on Rust for newcomers in this kind of format.
@naughtrussel5787
@naughtrussel5787 6 жыл бұрын
totally agree
@xthebumpx
@xthebumpx 5 жыл бұрын
This is a terrific presentation. Really helped me understand some concepts I had questions about.
@webbhinton6842
@webbhinton6842 3 жыл бұрын
I can not thank Nell enough for this incredibly well done explainer! The DND metaphor really helped.
@joelmontesdeoca6572
@joelmontesdeoca6572 3 жыл бұрын
I wish more Rust talks were like this! The visuals really sold it for me.
@UberOcelot
@UberOcelot 6 жыл бұрын
On my own, I've basically learned the 101, and 201 sections of this talk. Even some of the 301 section I knew, like how Trait Objects are represented, she doesn't go into the vtables. I always saw Trait Objects as runtime polymorphism, with traits as compile time polymorphism, both forms through composition rather than inheritance. What didn't dawn on me, was the possibility to operate over heterogeneous collections by boxing Trait Objects. That is really cool, and a perfectly example of when to use heap allocation. I like how in Rust you can make these high-level trade-offs that are impossible in most languages.
@gabe_owner
@gabe_owner 6 жыл бұрын
I agree! I knew it was *possible* to do stuff like the heterogeneous collections w/ vectors of boxed types, but it hadn’t really dawned on me as a common use case.
@YourCRTube
@YourCRTube 5 жыл бұрын
If you are coming from C++, in C++20 there will be a std::polymorphic_value which will act as Box
@yandrosyoutube
@yandrosyoutube 5 жыл бұрын
Just for the record, Box is not the only way to get Trait Objects and heterogeneous collections. Any kind of (fat) pointer / reference suffices: Box but also &Trait, as well as Rc etc. And nowadays it is preferred to prefix a Trait name with the 'dyn' keyword to better disambiguate between the trait itself (which is NOT a type) and the dynamic trait object type: Box, &dyn Trait
@gkasten
@gkasten 6 жыл бұрын
Great introduction, with clear and powerful delivery. Thank you!
@scottlott3794
@scottlott3794 4 жыл бұрын
This is so dense I'm gonna have to watch it like 5 times.. incredible work by the speaker.
@konstantinrebrov675
@konstantinrebrov675 10 ай бұрын
The video game example is really good for understanding traits.
@ProCoder2007
@ProCoder2007 5 жыл бұрын
Amazing talk. Very clear, entertaining and easy to follow!
@shailendrajadhav8603
@shailendrajadhav8603 Жыл бұрын
I came across this video today and I think this is the best explanation of Traits in Rust on the internet!
@uidx-bob
@uidx-bob 4 жыл бұрын
Great job! This helped getting me started on wrapping my head around traits.
@hardware4200
@hardware4200 5 жыл бұрын
Just starting Rust, and I was confused about traits, and this pretty much cleared it up, Thanks
@pratikshares
@pratikshares 4 жыл бұрын
Doesn't trait objects require `dyn` keyword? Was that added later on?
@antanaskiselis7919
@antanaskiselis7919 5 жыл бұрын
We could really use more of this type of thing!
@androth1502
@androth1502 5 жыл бұрын
what if the half orc learns to speak elvish on her travels?
@sddkacl2282
@sddkacl2282 4 жыл бұрын
This is an amazing talk for newcomers
@amengioio
@amengioio 5 жыл бұрын
very clear explanation. Thank you for sharing this video.
@WindBringsMemories
@WindBringsMemories 6 жыл бұрын
I think she is a great speaker as well. The only thing that I missed was how the call was implemented behind the scenes. How does the program know which method to call on which "abstract" Cast?
@nii-san5485
@nii-san5485 6 жыл бұрын
Basically, a trait object consists of two pointers (effectively, a "fat pointer"). One part points to the struct memory, the other part points to the impl of the trait for that struct.
@jonathanmoore5619
@jonathanmoore5619 3 жыл бұрын
Great presentation.
@vic1918
@vic1918 4 жыл бұрын
She is amazing, she can teach how to code in PHP and will not be boring.
@OdinRu1es
@OdinRu1es 3 жыл бұрын
Next: how to fight and vanquish the borrow checker with half orc barbarian and elf wizard
@yemyint9725
@yemyint9725 4 жыл бұрын
This helps me a lot for understanding trait and trait bound which I've been confusing about for a week .👍👍👍
@dionysis_
@dionysis_ 2 жыл бұрын
Great talk!!
@c-12-i
@c-12-i 4 жыл бұрын
Great video, traits were actually quite difficult to wrap my head around at first
@luxiling
@luxiling 4 жыл бұрын
Fantastic speaker.
@ShivshankarSharma3578
@ShivshankarSharma3578 6 жыл бұрын
wonderful explanation.
@rodelias9378
@rodelias9378 2 жыл бұрын
Thanks a lot for such an impressive talk!!
@jaideepganguly
@jaideepganguly 4 жыл бұрын
Excellent presentation! Thank you!!
@michaelmoore830
@michaelmoore830 4 жыл бұрын
This was a great talk. Helped me learn about the Trait objects
@stevenfletcher3389
@stevenfletcher3389 3 жыл бұрын
I think I'm missing the point here. What I took away from this talk is that I can replace a primitive or a Vec with a Trait for no reason. I feel like I understood traits better before I watched this, but everyone else is saying this talk was great. I realize she chose simple examples on purpose, but these are cases where traits shouldn't be used.
@johnwilliams7999
@johnwilliams7999 2 жыл бұрын
I love this video makes it so clear
@Sina-xw4xp
@Sina-xw4xp 4 жыл бұрын
Excellent presentation. great job
@light3rn248
@light3rn248 6 жыл бұрын
This was indeed a great lecture and she is a great teacher. I wrote everything down while watching the video (easier to follow and understand, especially in 301). In case someone wants to try the "source code", it can be found here: github.com/lightern/rust/blob/master/DD.rs
@friedrichdergroe9664
@friedrichdergroe9664 4 жыл бұрын
Thank you for this video. It cleared up for me a number of questions I had about Traits -- which are a little like Java's interfaces, but far more powerful. I won't even mention Java! :D
@ianwilson2709
@ianwilson2709 4 жыл бұрын
great talk, thank you nell
@aakarshanraj1176
@aakarshanraj1176 Жыл бұрын
18:41 should be Vec
@jvcmarc
@jvcmarc 9 күн бұрын
dyn wasn't in Rust when the presentation was made, it was introduced later to create trait objects. in earlier versions using a trait in the place of a type would implicitly mean a trait object (impl Trait didn't exist then either)
@Sina-xw4xp
@Sina-xw4xp 4 жыл бұрын
One part that is missing is how to link a character to a spell-book. it is the character that throws the spells not the spellbook.
@ksauri658
@ksauri658 4 жыл бұрын
Excellent talk thank you so much!
@pauloviniciuscoral1128
@pauloviniciuscoral1128 3 жыл бұрын
Very informative and inspirational
@CrapE_DM
@CrapE_DM 9 ай бұрын
I don't get it. How does a typical OO background make traits hard to understand? Also, for a "deep dive", this doesn't dive very deep. I was hoping to learn the differences between using generics on a trait and having a type field.
@randomuser2579
@randomuser2579 4 жыл бұрын
Super nice explanation!
@MMABeijing
@MMABeijing 3 жыл бұрын
good job on not laughing each time she said "castrate"
@johnsonlease9752
@johnsonlease9752 4 жыл бұрын
You got me at cast trait!
@GrandpaRanOverRudolf
@GrandpaRanOverRudolf Жыл бұрын
isn't it Box
@peterfarr9591
@peterfarr9591 5 жыл бұрын
Great talk! I'll have to say that as for trait objects I've read the two chapters in the book on traits multiple times and I'm not sure the name is appropriate. It's misleading a think because a trait object (unless I'm totally off base) seems nothing like an object in other languages. The implementations themselves are what bring behavior. It's not packaged with the data like in a traditional object. If you "create" a trait object by saying Vec then you aren't creating an object at all. It's more similar to trait bounds the way I see it. You are restricting what the smart pointer (box) points at by defining that it must be something that implements the cast trait. I think the name should be changed maybe, because I think the name 'trait object' is very misleading. If anyone can draw a parallel to traditional objects in other languages to justify the name I'd love to see one. I don't actually think the parallel she drew made sense because we don't package up the pointer with a method in the same location. Am I totally off base here?!
@sandipbhattacharya9140
@sandipbhattacharya9140 5 жыл бұрын
Traits are, IMO, like interface assignments in Go. You can pass around trait objects like in Go you can pass around interface objects.
@SolomonUcko
@SolomonUcko 4 жыл бұрын
`Box` is a *fat pointer* that contains both a pointer to the data and a pointer to the vtable (virtual table) that has pointers to the method implementations.
@nii-san5485
@nii-san5485 6 жыл бұрын
awesome intro to traits
@TheNullBox
@TheNullBox 3 жыл бұрын
brb... gotta learn D&D first :(
@TheNullBox
@TheNullBox 3 жыл бұрын
ok never mind.. This is amazing...
@sergesolkatt
@sergesolkatt Жыл бұрын
@feizhao8878
@feizhao8878 4 жыл бұрын
I know rust's OO has its unique. But from what described here, I don't see difference compare to C++ or Java. Anybody can make it more explicit, what's the difference.
@KohuGaly
@KohuGaly 3 жыл бұрын
There really isn't one. Traits are basically just interfaces. The difference is mostly historical. Rust uses them by default, consistently, everywhere (especially the standard library) and for every thing, since it started. Unlike in C++ or Java, they weren't added as an optional patch to the (retrospectively obvious) disaster that is the traditional inheritance model. The general theme in Rust is that it doesn't really contain anything new. It just has the hindsight of what worked and didn't work in C, C++, Haskel and others and has benefit of fresh start. A lot of stuff that became "standard/recommended practice" in these is the default way in Rust, often enforced by compiler itself.
@hanyanglee9018
@hanyanglee9018 4 ай бұрын
I'm recently waiting for some dnd or coc game in real life, and, I found one here.....
@liptherapy
@liptherapy 4 жыл бұрын
The naming convention for the trait names is horrible. It would be much more intuitive to use names like in swift protocols. Instead of a Hash trait it would be Hashable. Instead of Cast it would be Castable. It makes type and trait names different. A Hash is something that is a hash of something and Hashable is something that can be hashed.
@MMABeijing
@MMABeijing 3 жыл бұрын
thank you, ur comment helped me.a.lot. it s obvious now, but.it obvious.now.that.u.mentionned it
@Posichronic
@Posichronic 5 жыл бұрын
Who else had their volume turned up when they clicked this?
@Samonitari
@Samonitari 5 жыл бұрын
Yeah, watching a quiet video beforehand on headphones, clearly reminds you that how important sound-volume normalization SHOULD HAVE BEEN in youtube.
@_xeere
@_xeere 4 жыл бұрын
she looks like Michael Reeves
@7xr1e20ln8
@7xr1e20ln8 5 жыл бұрын
This is exactly why we need more women in tech, they make things easy to understand.
@Itachi.Uchiha.Offical
@Itachi.Uchiha.Offical 5 жыл бұрын
What the hell does the quality of an explanation have to do with the gender? :D
@wiktorwektor123
@wiktorwektor123 4 жыл бұрын
Some people just have gift to teach and some don't. Gender have nothing to do with it.
@MMABeijing
@MMABeijing 3 жыл бұрын
vacuous statement. She has high energy and is passionate, that's about that
@edgeeffect
@edgeeffect 4 жыл бұрын
Too slow and not enough real information.
@alexgorodecky1661
@alexgorodecky1661 5 жыл бұрын
So slow. For little kids?
Type Theory for the Working Rustacean - Dan Pittman
19:24
Rust Belt Rust Conference
Рет қаралды 18 М.
Polonius: Either Borrower or Lender Be, but Responsibly - Niko Matsakis
35:29
Rust Belt Rust Conference
Рет қаралды 17 М.
Fake watermelon by Secret Vlog
00:16
Secret Vlog
Рет қаралды 16 МЛН
The day of the sea 😂 #shorts by Leisi Crazy
00:22
Leisi Crazy
Рет қаралды 1,2 МЛН
小丑在游泳池做什么#short #angel #clown
00:13
Super Beauty team
Рет қаралды 43 МЛН
The Rust Borrow Checker - A Deep Dive - Nell Shamrell-Harrington, Microsoft
22:23
CNCF [Cloud Native Computing Foundation]
Рет қаралды 10 М.
Rust Powered Polymorphism ⚡️ With Traits
9:55
Code to the Moon
Рет қаралды 99 М.
How to Start a Speech
8:47
Conor Neill
Рет қаралды 19 МЛН
Richard Feynman: Can Machines Think?
18:27
Lex Clips
Рет қаралды 1,5 МЛН
A Day in the Life of a Harvard Computer Science Student
12:24
John Fish
Рет қаралды 14 МЛН
Why C is so Influential - Computerphile
10:50
Computerphile
Рет қаралды 1,9 МЛН
Building on an unsafe foundation - Jason Orendorff
35:35
Rust Belt Rust Conference
Рет қаралды 8 М.
Rust Ownership and Borrowing
38:21
Doug Milford
Рет қаралды 67 М.
Fake watermelon by Secret Vlog
00:16
Secret Vlog
Рет қаралды 16 МЛН