Тёмный
Ryan Levick
Ryan Levick
Ryan Levick
Подписаться
A place for learning about Rust! 🦀 Content ranges from beginner to advanced so there should be something for everyone! Subscribe and let me know what you think over on Twitter (twitter.com/ryan_levick).
Implementing Rust's Vec From Scratch
2:04:03
3 года назад
Introduction to Rust Part 2
1:56:03
3 года назад
Introduction to Rust Part 1
2:04:05
3 года назад
Understanding Rust Lifetimes
1:21:06
3 года назад
A Singly Linked List in Rust
1:19:30
3 года назад
Before Main: How Executables Work on Linux
1:32:05
4 года назад
Unsafe & FFI in Rust
1:49:16
4 года назад
Boiled Down Crate 🦀: OnceCell
1:59:32
4 года назад
Rust Stream: Iterators
2:00:31
4 года назад
Rust Stream: CLI Project - Part 2
1:31:19
4 года назад
Rust Stream: CLI Project - Part 1
1:55:36
4 года назад
Rust Stream: String it All Together!
1:46:35
4 года назад
Stream on Rust Safe Transmute 09 - April
1:33:26
4 года назад
Stream: Basic Redis Client in Rust
1:48:08
4 года назад
WebAssembly/WASI Deep Dive
1:58:12
5 лет назад
Stream on Rust Wasm 26 - March
1:35:23
5 лет назад
Stream on Game Boy Emulator 05 - March
1:56:37
5 лет назад
Stream on Azure Pipelines 1-March
1:06:08
5 лет назад
Learning Rust: Intro
2:50:48
5 лет назад
Комментарии
@j-p-d-e-v
@j-p-d-e-v 2 месяца назад
Finally I found someone discussing Lifetimes up to advance usage. Ive been struggling to understand lifetimes.
@misterwoody_
@misterwoody_ 2 месяца назад
Checkout Crust of Rust too - Jon Gjengset - he does really deep dives on topics.
@LeKrul
@LeKrul 3 месяца назад
Thanks Ryan. Excellent resource, I've learned a lot.
@zahash1045
@zahash1045 5 месяцев назад
Stop saying “Um.. um… um…” It’s fucking annoying Other than that, nice video 👌
@GK-rl5du
@GK-rl5du 6 месяцев назад
Please do more of this :)
@ShanyGolan
@ShanyGolan 6 месяцев назад
Does mem::replace () accepts a pointer to a pointer ?
@615rip2
@615rip2 6 месяцев назад
std::mem::replace is hard to understand
@lunaticwyrm4675
@lunaticwyrm4675 7 месяцев назад
sometimes it's a good thing to reinvent the wheel
@a_maxed_out_handle_of_30_chars
@a_maxed_out_handle_of_30_chars 9 месяцев назад
thank you :)
@a_maxed_out_handle_of_30_chars
@a_maxed_out_handle_of_30_chars 9 месяцев назад
this was so good, thank you :)
@antwanwimberly1729
@antwanwimberly1729 9 месяцев назад
Mhmmm Rust red hair 👩🏾‍🦰 huh
@lizzienovigot
@lizzienovigot 10 месяцев назад
I hate this “take” hack coz it’s a hack. The only reason one needs to do it is to satisfy borrow checker. That’s one of the cases where Rust certainly feels awkward and dogmatic Prove me wrong )))
@tomasz-waszczyk
@tomasz-waszczyk 11 месяцев назад
Could you make a list of keyboard shortcuts that you do during the video? Thanks for the video!
@Shan224
@Shan224 11 месяцев назад
Amazingly helpful video. Thank you
@AK-vx4dy
@AK-vx4dy 11 месяцев назад
I know that is interesting structure because of Rust nature, but in current state of hardware (memory x100 slower that cpu and huge caches) using lists should be strongly discouraged, even smarter structures with pointers for N bellow 100 or even 1000 have almost no advantage.
@6qat
@6qat Год назад
Why need to put template parameter after :: when calling channel function, and not just after function name?
@liveonphoenix5045
@liveonphoenix5045 Год назад
looks like the exception handling in RUST is a little bit similar to the API Optional of Java or any other languages that had it?
@liveonphoenix5045
@liveonphoenix5045 Год назад
std::env::args().skip(1) == index of [0], why does line #3 does invoke '.next()' method? Is it mean index of [2]? Then what happend to the index of [1]?
@liveonphoenix5045
@liveonphoenix5045 Год назад
std::env::args().skip(1) == skip the very first args, which is the index [0], correct me if I am wrong, is it by default the current file path and not the current parrent folder path? And in line #3 @32:18, is doing '.next()' means args index of [2]? Then why does index of [1] exist in the demo/cli?
@dimkir100
@dimkir100 Год назад
Seems that at 1:07:40 the `self.len.checked_mul(...)` must be `(self.len+1).checked_mul(...)` as this way we're checking not only starting offset of a pointer, but rather resulting offset of the pointer and making sure it doesn't wrap around when the actual operaiton of `ptr.as_ptr().add(self.len)...` is finished 🤔
@lizzienovigot
@lizzienovigot 10 месяцев назад
Exactly what I thought. Dude checks the existing length for safety, which would already exploded on the previous push if too large
@vgsuresh
@vgsuresh Год назад
really good stuff Ryan... love the patience while explaining concepts and starting very small with very basic stuff. Thanks a lot for this.
@DavidWallace1945
@DavidWallace1945 Год назад
man pls make more videos...
@Roms8313
@Roms8313 Год назад
that series is very interesting, is there any follow-up to this video ?
@Roms8313
@Roms8313 Год назад
that's literally the learning material I've been looking for ages, thanks so much Ryan! the pace of the video is just perfect :)
@eaccer
@eaccer Год назад
Just wanted to say that I would totally pay for a Rust course made by you.
@eaccer
@eaccer Год назад
57:58
@eaccer
@eaccer Год назад
1:37:31
@thewelder3538
@thewelder3538 Год назад
A perfect demonstration of why Rust is just useless. My executable that does the same as this Rust executable is 140 bytes and I wasn't even trying.
@DevinBidwell
@DevinBidwell Год назад
FYI. I am writing a lib with SimConnect as well in Rust. Came across your video and had the same "Fail HRESULT" issue. Turns out GetNextDispatch _will_ fail if no data is ready. This is apparent if you subscribe to the 4sec event and call the function every second. You get the following output in the terminal with the received data size: Requesting subscription to event: 4sec Callback data size: 0 Callback data size: 308 Callback data size: 24 Callback data size: 0 Callback data size: 0 Callback data size: 24 Callback data size: 0 Callback data size: 0 Callback data size: 0 Callback data size: 24 The 0 sizes represent a failed HRESULT as there were no events to retrieve from the game. The 308 size represents an HRESULT of 0 with the open event. The 24 size represents an HRESULT of 0 with the 4sec system event.
@TheJacksonblair
@TheJacksonblair Год назад
Great video thanks
@amidfallen
@amidfallen Год назад
very educative, thank you!
@anthonylee1309
@anthonylee1309 Год назад
This is by far the best video about Rust lifetime. thank you so much. Would be great if you can post more videos about Rust like async 😊
@Darkev77
@Darkev77 Год назад
Hey Ryan, where did you go :( I tried to reach out via email but I couldn't find any, I see you haven't been active for a while, is everything okay?
@delaskarcaicedo5778
@delaskarcaicedo5778 Год назад
Thank you so much!!! This was awesome!!!!
@darkarie
@darkarie Год назад
it is a shame that this channel is not uploading more content, really really nice.
@konturgestalter
@konturgestalter Год назад
Fantastic! Thank you! Are you planning to do more MSFS tutorials?
@dominicmaluski7076
@dominicmaluski7076 Год назад
This is wonderful! Your tutorials on Rust are incredibly helpful and I would love to see more, if you have the time/energy
@PublicAccount0
@PublicAccount0 Год назад
2 hours about vectors in Rust - so good.
@philipp332
@philipp332 Год назад
Minute 20: why can you just pass a type to the spellcheck function in the test without instantiating an object first?
@AlexeyYunoshev
@AlexeyYunoshev Год назад
Thank you! Perfect pace
@adi_trades99
@adi_trades99 Год назад
Rust seems very intuitive, but you need a lot of practice to get good I assume.
@adi_trades99
@adi_trades99 Год назад
Excellent tutorial. I understand rust a little bit better now
@jeffg4686
@jeffg4686 Год назад
how far out do you estimate the rust job market picks up? closer to 1 year or 5 years?
@saravanansaibaba8374
@saravanansaibaba8374 Год назад
Wow!. Fantastic session. I loved every minute of it. Learned a lot on of the very important things on getting started with Rust.
@radedrmic4716
@radedrmic4716 Год назад
let slice = std::mem::take(&mut self.slice); A bit cleaner..
@rainerwahnsinn3262
@rainerwahnsinn3262 Год назад
1:46:20 Where is part 3?
@dartme18
@dartme18 Год назад
It looks like you press "escape" "up" "down" compulsively. ... I do, too...why do we do this? I use kinesis advantage and vim. What kind of keyboard do you use? Thank you for the walkthrough!
@rainerwahnsinn3262
@rainerwahnsinn3262 Год назад
1:04:20 If the `println` macro borrows its arguments, why aren't they references? E.g. `&key` and `&value`. Or does it implicitly create new references under the hood? E.g. `key_ref = &key` and `value_ref = &value`.
@vkjvivek7
@vkjvivek7 Год назад
Why alloc::alloc(layout) return a null pointer? @Ryan
@Shan224
@Shan224 Год назад
Thanks for the video Ryan. You’ve helped me understand threads better
@MukkaiKrishnamoorthy
@MukkaiKrishnamoorthy Год назад
Thanks a lot. I have gone your document carefully. Now this youtube link is an added bonus. How to count the length of the linked list - How do you write an iterator for this. Thanks a miliion for your efforts in educating future rust developers
@MukkaiKrishnamoorthy
@MukkaiKrishnamoorthy Год назад
I used you iter and implemented the length - For your feedback pub fn len(self)->i32 { let mut count1 = 0; let mut iter:Iter<T> =self.iter(); loop{ let x=iter.next(); match x{ None=>return count1, Some(_)=> count1 = count1 + 1, } } }
@deryilz
@deryilz 5 месяцев назад
​@@MukkaiKrishnamoorthy you could have just use self.iter().count()
@blackbriarmead1966
@blackbriarmead1966 Год назад
As someone who has explored plenty of other languages but found writing rust intimidating, such a direct walkthrough really helps out