You can simplify transforming a Vec into a Vec by using vec_of_str.map(String::from) instead of using a full closure. This works because .map requires that the function you use takes the same type and number of arguments as the items in the vector. In this case, String::from fits perfectly as it takes a single &str argument and is not a method of &str, but rather a function that operates on &str to produce a String.
This is the exact type of content i was looking for learning rust. Many educators just copy the content from the rust book and severely lack originality and explanation.
Thank you so much!! That makes me so happy to hear. I intentionally avoid using examples straight out of the documentation, to add variety to the topic! ❤️
Chapter 13.2 in the rust book seems to assume the reader has more experience with iterators than I did when reading it. This video helps fill in some of those gaps, thanks!
Thank you for these videos. They are really helpful. The quality of content is far better than the paid subscription I use. If I can suggest, it would be nice to see a detailed video on smart pointers, their necessity, usage etc. Thanks.
Thanks for this. I think it’s useful for beginners to know that you can use the variable name in format strings - e.g. println!(“{index} {value:?}”); This can save quite a lot of typing when starting out. Unfortunately it’s not quite as powerful as Python’s f-strings, as you can’t put any expression in the {} like {value.0}. I feel like this is an unfortunate omission since Rust is so expression-based. Oh well :) I think sum(), product() and count() are more useful and intuitive to beginners than fold(), but it’s good to mention it for more complex items like those quantity tuples. I’m just slightly surprised you went there so quickly :)
Thanks for the tip on var names in format strings! Much appreciated. I do actually like how Python and JavaScript template strings work, so you can embed method calls or other expressions in them.
Very helpful video, like the others in this series. isn't &str a borrowed string slice and not a static string? A static string has a lifetime equal to the whole program, whereas the lifetime of &str may not be.
@@TrevorSullivan It has whatever lifetime you give it. If you don't give it an explicit lifetime like `static or `a then it lives until the current scope ends. I think it can be kinda confusing cause we tend to think of &str as it's own special thing but it's pretty much just a pointer to some bytes with a length. I have no idea what str (&str without the ref) is under the hood tbh but &str functions as any other reference type
A String is a heap allocated struct similar to vector. A str is a primitive and is on the stack, and not the heap. You can create pointers to both. A string literal (straight up “xyz” in your code) is a slice of the binary itself (that is, a pointer+length to somewhere in your binary).
@@bujibujibuji-z4z hello! That's a really good question. The &str is a borrowed string, so I'm assuming it's some sort of "reference to a reference". Unfortunately I don't know the right terminology, or enough about memory layout, to try to explain this. I would recommend posting that question to the official Rust forum! I have seen this before and would love to understand it better.
Check out the full Rust playlist for more Rust programming videos! 🦀 ➡➡➡➡ th-cam.com/play/PLDbRgZ0OOEpUkWDGqp91ODn0dk7LPBAUL.html
You can simplify transforming a Vec into a Vec by using vec_of_str.map(String::from) instead of using a full closure. This works because .map requires that the function you use takes the same type and number of arguments as the items in the vector. In this case, String::from fits perfectly as it takes a single &str argument and is not a method of &str, but rather a function that operates on &str to produce a String.
I'm currently doing Rustlings and spent all morning trying to convert a Vec into a Vec. Then I randomly see this comment. Thanks!
@@FourLowAdventures woo! You got this
This is the exact type of content i was looking for learning rust. Many educators just copy the content from the rust book and severely lack originality and explanation.
Thank you so much!! That makes me so happy to hear. I intentionally avoid using examples straight out of the documentation, to add variety to the topic! ❤️
Chapter 13.2 in the rust book seems to assume the reader has more experience with iterators than I did when reading it. This video helps fill in some of those gaps, thanks!
Thanks, Trevor!
Thanks for the video. I learnt a few new useful methods here. Can you please make the text wrap around so it doesn’t go off the screen?
Thank you for these videos. They are really helpful. The quality of content is far better than the paid subscription I use.
If I can suggest, it would be nice to see a detailed video on smart pointers, their necessity, usage etc. Thanks.
Thanks for this.
I think it’s useful for beginners to know that you can use the variable name in format strings - e.g. println!(“{index} {value:?}”);
This can save quite a lot of typing when starting out. Unfortunately it’s not quite as powerful as Python’s f-strings, as you can’t put any expression in the {} like {value.0}. I feel like this is an unfortunate omission since Rust is so expression-based. Oh well :)
I think sum(), product() and count() are more useful and intuitive to beginners than fold(), but it’s good to mention it for more complex items like those quantity tuples. I’m just slightly surprised you went there so quickly :)
Thanks for the tip on var names in format strings! Much appreciated. I do actually like how Python and JavaScript template strings work, so you can embed method calls or other expressions in them.
Very helpful video, like the others in this series.
isn't &str a borrowed string slice and not a static string? A static string has a lifetime equal to the whole program, whereas the lifetime of &str may not be.
Good question. I was under the impression that it has an inferred 'static lifetime, but maybe there's other ways to use it.
@@TrevorSullivan It has whatever lifetime you give it. If you don't give it an explicit lifetime like `static or `a then it lives until the current scope ends. I think it can be kinda confusing cause we tend to think of &str as it's own special thing but it's pretty much just a pointer to some bytes with a length. I have no idea what str (&str without the ref) is under the hood tbh but &str functions as any other reference type
A String is a heap allocated struct similar to vector. A str is a primitive and is on the stack, and not the heap. You can create pointers to both. A string literal (straight up “xyz” in your code) is a slice of the binary itself (that is, a pointer+length to somewhere in your binary).
pls, add time codes.
Hi Trevor. I have a question.
for fruit: &&str in fruit_iter{
println!("{}", fruit);
}
why the type of fruit is &&str instead of &str?
Thank you!
@@bujibujibuji-z4z hello! That's a really good question. The &str is a borrowed string, so I'm assuming it's some sort of "reference to a reference". Unfortunately I don't know the right terminology, or enough about memory layout, to try to explain this. I would recommend posting that question to the official Rust forum! I have seen this before and would love to understand it better.
@@TrevorSullivan Thank you. 🙏
never learnt this much from any other video
Is the source code that you worked on in this video available somewhere?
@@alokswaincontact no I haven't published it anywhere. I usually recommend writing it yourself, as it's good practice.
my rust programs are over 2Gb can you make a video on how to minimize the size of binaries ??
Wow! Those are massive binaries! I would recommend using "cargo build --release"
@@TrevorSullivan I want to make binaries with 3 - 5KB for offensive security.