From 63f56ef8b5bd40621e00d05c283171d9d198283b Mon Sep 17 00:00:00 2001 From: Chris Krycho Date: Mon, 25 Sep 2017 09:23:07 -0400 Subject: [PATCH] Add meta 2 *feed*. --- resources/feed.xml | 2262 ++++---------------------------------------- 1 file changed, 165 insertions(+), 2097 deletions(-) diff --git a/resources/feed.xml b/resources/feed.xml index cd34a29c..87aa2212 100644 --- a/resources/feed.xml +++ b/resources/feed.xml @@ -1,17 +1,17 @@ - + New Rustacean http://newrustacean.com A podcast about learning the Rust programming language—from scratch! - Feeder 3 3.4.6(2954); Mac OS X Version 10.12.6 (Build 16G29) http://reinventedsoftware.com/feeder/ + Feeder 3 3.5(3004); Mac OS X Version 10.12.6 (Build 16G29) http://reinventedsoftware.com/feeder/ http://blogs.law.harvard.edu/tech/rss en 2015 Chris Krycho hello@newrustacean.com (Chris Krycho) hello@newrustacean.com (Chris Krycho) - Sat, 16 Sep 2017 14:24:18 -0400 - Sat, 16 Sep 2017 14:24:18 -0400 + Mon, 25 Sep 2017 09:22:42 -0400 + Mon, 25 Sep 2017 09:22:42 -0400 http://newrustacean.com/podcast.png New Rustacean @@ -20,10 +20,10 @@ 144 - + Chris Krycho Let’s try some Rust, shall we? - + Documenting a journey into a new programming language—with source code, examples, and almost certainly some out-and-out hilarities along the way. Rust,programming,programming languages,software clean @@ -39,6 +39,117 @@ + episodic + + Meta 2: Two milestones + http://newrustacean.com/show_notes/meta/_2/ + Two years and fifty episodes of New Rustacean—time to celebrate with stickers and shirts!

+ + +

Shirts

+

Get them here! – available till Oct 9, 2017 at 8:00 PM EDT.

+

Sponsors

+ +

(Thanks to the couple people donating who opted out of the reward tier, as well. You know who you are!)

+

Become a sponsor

+ +

Contact

+ +]]>
+ Mon, 25 Sep 2017 09:20:35 -0400 + + 930E60FE-6493-4E5A-B373-2091DABAF8CC + Chris Krycho + 12:02 +
CYSK: Rayon http://newrustacean.com/show_notes/cysk/rayon/ @@ -134,7 +245,7 @@ 2DC73B1F-BAC9-4466-8C50-3D65F2A43DFE Chris Krycho - + Safe, threaded, parallel code in Rust! 14:11 @@ -147,7 +258,7 @@ C3F7B727-EAE8-40AB-95B0-6D5F5A308921 Chris Krycho - + Associated constants, conference season, meetups, and more! 13:15 @@ -158,7 +269,7 @@ CC87FE1E-0E80-4B8F-B022-892E25C3E260 Chris Krycho - + My experience with ember-cli-typescript as an example: we're all just people muddling along and doing our best. e021: Keeping your types under cover @@ -254,7 +365,7 @@ 963488ED-45D6-41FD-A47D-0A9798A7DF65 Chris Krycho - + Using type aliases and creating custom type wrappers for more expressive and safer code. 17:28 @@ -350,7 +461,7 @@ EA9A1109-0E35-42ED-8B96-C91BCD123502 Chris Krycho - + Growing Rust's diversity to help Rust grow. 13:02 @@ -467,7 +578,7 @@ 12EDC178-7E71-463E-9331-91462826BB0C Chris Krycho - + An accessible, well-designed web framework in Rust! 17:32 @@ -598,7 +709,7 @@ 4676FF77-2A28-4F02-BE7F-6586774C42BA Chris Krycho - + Smoothing the Rust dev story: future work on the RLS, in Rust itself, and in Servo. 22:05 @@ -716,7 +827,7 @@ Tue, 30 May 2017 16:36:28 -0400 E78DADCB-274E-4CCA-8876-2C467190F003 - + Making Rust Better: Rust as the fusion of systems and high-level programming languages, and the RLS. 25:09 @@ -830,7 +941,7 @@ D287B357-E8CB-402A-A19B-767E819BEA14 Chris Krycho - + Background, TypeScript, coming to Rust, and how helpful the Rust community can be. 22:50 @@ -931,7 +1042,7 @@ B9EC7CFA-C988-4EF8-A2F8-299CFE94726F Chris Krycho - + Where the RLS came from, what it can do, and how you can start using it today! 11:30 @@ -1017,10 +1128,7 @@ 44A092E9-78BE-4760-87E2-E94A15DCF5C4 Chris Krycho - + How do we organize code in Rust? Where do we break it apart into modules or crates, and why? Structuring code in a language like Rust can seem a bit more ambiguous than doing the same in a language with classes to attach all our functionality to, but in practice, the concerns are much the same: modules are namespaces, and we group by *responsibility*. In today's episode, I talk through that philosophy (and give some comparisons to other languages), and then look at what it looks like in practice! 20:20 @@ -1106,9 +1214,7 @@ Structuring code in a language like Rust can seem a bit more ambiguous than doin 5DED2D2B-E06E-44E6-BECC-2A401B40E78A Chris Krycho - + On the responsibilities and opportunities we have to help others with our knowledge and abilities. Many of us have been very blessed with opportunities and support as we learn software. We should go out of our way to share with others in kind. Today, my focus is on teaching, but there are lots of ways to "give back." And I'd love to hear *your* thoughts and things *you're* doing in that vein! 13:30 @@ -1240,75 +1346,7 @@ Many of us have been very blessed with opportunities and support as we learn sof A39AA3AC-EF1B-41B4-A0A1-F76676A74B1F Chris Krycho - + The final pieces of the story for (single-threaded) memory management in Rust. Notes ----- Sometimes, we actually do need to copy types. Wouldn't it be nice if Rust gave us a convenient way to do that when it's convenient, or when the cost is low enough that the ergonomic tradeoffs are worth it? Well, perhaps unsurprisingly, it does! The Copy and Clone traits, plus the Cow type, give us everything we need! Sponsors -------- - Aleksey Pirogov - Andreas Fischer - Andrew Thompson - Austin LeSure - Ben Whitley - Charlie Egan - Chris Palmer - Christopher Giffard - Daniel Collin - Derek Morr - Jakub "Limeth" Hlusička - Jordan Henderson - Jupp Müller - Keith Gray - Lachlan Collins - Luca Schmid - Matt Rudder - Matthew Piziak - [Max Jacobson] - Micael Bergeron - Ovidiu Curcan - Pascal Hertleif - Peter Tillemans - Philipp Keller - Ralph Giles ("rillian") - Raph Levien - reddraggone9 - Steven Murawksi - Stuart Hinson - Tyler Harper - Vesa Kaihlavirta - Vlad Bezden - William Roe - Zaki (Thanks to the couple people donating who opted out of the reward tier, as well. You know who you are!) ### Become a sponsor - Patreon.com/newrustacean - Venmo.com/chriskrycho - Dwolla](https://www.dwolla.com/hub/chriskrycho - Cash.me/$chriskrycho - Flattr.com/profile/chriskrycho - PayPal.me/chriskrycho Contact ------- - New Rustacean: + Twitter: @newrustacean + Email: hello@newrustacean.com - Chris Krycho + GitHub: chriskrycho + Twitter: @chriskrycho 18:11 @@ -1403,70 +1441,7 @@ Contact 3666B4E8-5D29-4253-A56D-4145C7372F95 Chris Krycho - + A Command-Line Argument Parser. Sponsors -------- - Aleksey Pirogov - Andreas Fischer - Andrew Thompson - Austin LeSure - Ben Whitley - Charlie Egan - Chris Palmer - Christopher Giffard - Daniel Collin - Derek Morr - Jakub "Limeth" Hlusička - Jordan Henderson - Jupp Müller - Keith Gray - Lachlan Collins - Luca Schmid - Matt Rudder - Matthew Piziak - [Max Jacobson] - Micael Bergeron - Ovidiu Curcan - Pascal Hertleif - Peter Tillemans - Philipp Keller - Ralph Giles ("rillian") - Raph Levien - reddraggone9 - Steven Murawksi - Stuart Hinson - Tyler Harper - Vesa Kaihlavirta - Vlad Bezden - William Roe - Zaki (Thanks to the couple people donating who opted out of the reward tier, as well. You know who you are!) ### Become a sponsor - Patreon.com/newrustacean - Venmo.com/chriskrycho - Dwolla](https://www.dwolla.com/hub/chriskrycho - Cash.me/$chriskrycho - Flattr.com/profile/chriskrycho - PayPal.me/chriskrycho Contact ------- - New Rustacean: + Twitter: @newrustacean + Email: hello@newrustacean.com - Chris Krycho + GitHub: chriskrycho + Twitter: @chriskrycho 10:42 @@ -1564,102 +1539,7 @@ Contact 8E739043-E105-4E84-BA22-3835BBB845FC Chris Krycho - + Three traits which are essential for designing good, Rustic APIs. Notes Borrow, AsRef, and Deref are a little complicated, but they're well-worth understanding. Together, they give you tools for dealing with everything from HashMap and friends to conversions involving smart pointer types to easily using String and str or Vec and slice together. Sponsors * Aleksey Pirogov * Andreas Fischer * Ben Whitley * Cameron Mochrie * Chris Palmer * Christopher Giffard * Daniel Collin * Derek Morr * Jakub "Limeth" Hlusička * Jordan Henderson * Jupp Müller * Keith Gray * Lachlan Collins * Luca Schmid * Matt Rudder * Matthew Piziak * Micael Bergeron * Ovidiu Curcan * Pascal Hertleif * Peter Tillemans * Philipp Keller * Ralph Giles ("rillian") * Raph Levien * reddraggone9 * Ryan Ollos * Steven Murawksi * Vesa Kaihlavirta * Vlad Bezden * William Roe * Zaki (Thanks to the couple people donating who opted out of the reward tier, as well. You know who you are!) Become a sponsor * Patreon * Venmo * Dwolla * Cash.me * Flattr * PayPal.me Contact * New Rustacean: * Twitter: @newrustacean * Email: hello@newrustacean.com * Chris Krycho * GitHub: chriskrycho * Twitter: @chriskrycho 17:25 @@ -1741,101 +1621,7 @@ Contact 1CF4B00D-9AEC-442B-BD06-A986602D2A56 Chris Krycho - + A pull-parser for reading and writing XML. Sponsors * Aleksey Pirogov * Andreas Fischer * Ben Whitley * Cameron Mochrie * Chris Palmer * Christopher Giffard * Daniel Collin * Derek Morr * Jakub “Limeth” Hlusička * Jupp Müller * Keith Gray * Lachlan Collins * Luca Schmid * Matt Rudder * Matthew Piziak * Micael Bergeron * Ovidiu Curcan * Pascal Hertleif * Peter Tillemans * Philipp Keller * Ralph Giles (“rillian”) * Raph Levien * reddraggone9 * Ryan Ollos * Steven Murawksi * Vesa Kaihlavirta * Vlad Bezden * William Roe * Zaki (Thanks to the couple people donating who opted out of the reward tier, as well. You know who you are!) Become a sponsor * Patreon.com/newrustacean * Venmo.com/chriskrycho * Dwolla.com/hub/chriskrycho * Cash.me/$chriskrycho * Flattr.com/chriskrycho * PayPal.me/chriskrycho Contact * New Rustacean: * Twitter: @newrustacean * Email: hello@newrustacean.com * Chris Krycho * GitHub: chriskrycho * Twitter: @chriskrycho 8:38 @@ -1954,98 +1740,7 @@ Contact 7AAC0E06-6A11-4707-BD9A-AB5AD95F7CBB Chris Krycho - + Rust’s achievements in 2016 and goals for 2017 Sponsors * Aleksey Pirogov * Andreas Fischer * Ben Whitley * Cameron Mochrie * Chris Palmer * Daniel Collin * Derek Morr * Jakub “Limeth” Hlusička * Jupp Müller * Keith Gray * Lachlan Collins * Luca Schmid * Matt Rudder * Matthew Piziak * Micael Bergeron * Ovidiu Curcan * Pascal Hertleif * Peter Tillemans * Philipp Keller * Ralph Giles (“rillian”) * Raph Levien * reddraggone9 * Ryan Ollos * Steven Murawksi * Vesa Kaihlavirta * Vlad Bezden * William Roe * Zaki (Thanks to the couple people donating who opted out of the reward tier, as well. You know who you are!) Become a sponsor * Patreon.com/chriskrycho * Venmo.com/chriskrycho * Dwolla.com/hub/chriskrycho * Cash.me/$chriskrycho * Flattr.com/chriskrycho * PayPal.me/chriskrycho Contact * New Rustacean: * Twitter: @newrustacean * Email: hello@newrustacean.com * Chris Krycho * GitHub: chriskrycho * Twitter: @chriskrycho 21:08 @@ -2088,40 +1783,7 @@ Contact 40FB0537-15C7-475A-94ED-090F9887A358 Chris Krycho - + Avoiding burnout by taking it a little easier. Sometimes, the way a podcast stays in existence is by coming out less often. That's what's happening here. # Links - [lightning-rs] - [Pelican] - [Hugo] - [Jekyll] - [Static Site Generators]\: The definitive listing of Static Site Generators — all 445 of them! [lightning-rs]: https://github.com/chriskrycho/lightning-rs [Pelican]: http://getpelican.com [Hugo]: https://gohugo.io [Jekyll]: https://jekyllrb.com [Static Site Generators]: https://staticsitegenerators.net # Become a sponsor - [Patreon](https://www.patreon.com/newrustacean) - [Venmo](https://venmo.com/chriskrycho) - [Dwolla](https://www.dwolla.com/hub/chriskrycho) - [Cash.me](https://cash.me/$chriskrycho) # Follow - New Rustacean: + Twitter: [@newrustacean](https://www.twitter.com/newrustacean) + Email: [hello@newrustacean.com](mailto:hello@newrustacean.com) - Chris Krycho + Twitter: [@chriskrycho](https://www.twitter.com/chriskrycho) 7:42 @@ -2235,97 +1897,7 @@ Sometimes, the way a podcast stays in existence is by coming out less often. Tha 7299496B-086C-450F-94C1-05AB08CDC294 Chris Krycho - + Carol (Nichols || Goulding) on learning Rust, teaching Rust, and building community Chris talks with Carol (Nichols || Goulding), a Rust community team member, co-author of the first major revision of The Rust Programming Language, and co-founder of the first Rust consultancy. Sponsors * Aleksey Pirogov * Cameron Mochrie * Chris Palmer * Daniel Collin * Derek Morr * Doug Reeves * Hamza Sheikh * Jakub “Limeth” Hlusička * Jupp Müller * Keith Gray * Lachlan Collins * Leif Arne Storset * Luca Schmid * Matthew Piziak * Micael Bergeron * Nils Tekampe * Ovidiu Curcan * Pascal Hertleif * Ralph Giles (“rillian”) * Ralph “FriarTech” Loizzo * Raph Levien * reddraggone9 * Ryan Ollos * Sean Jensen-Gray * Steven Murawksi * Vesa Kaihlavirta * William Roe (Thanks to the couple people donating who opted out of the reward tier, as well. You know who you are!) Become a sponsor * Patreon.com/newrustacean * Venmo.com/newrustacean * Dwolla.com/hub/chriskrycho * Cash.me/$chriskrycho * Flattr.com/profile/chriskrycho * PayPal.me/chriskrycho Contact * New Rustacean: * Twitter: @newrustacean * Email: hello@newrustacean.com * Chris Krycho * GitHub: chriskrycho * Twitter: @chriskrycho 47:11 @@ -2432,58 +2004,7 @@ Contact CEFB964C-E0C9-48FD-9EE6-06A0C1284CC8 Chris Krycho - + Katas—or: learning by doing One of the best ways to learn is to pick a small problem you have already internalized, and to do it again but in a new language or in a new way in a language you already know. Sponsors * Aleksey Pirogov * Cameron Mochrie * Chris Palmer * Daniel Collin * Derek Morr * Doug Reeves * Hamza Sheikh * Jakub “Limeth” Hlusička * Jupp Müller * Keith Gray * Lachlan Collins * Leif Arne Storset * Luca Schmid * Matthew Piziak * Micael Bergeron * Ovidiu Curcan * Pascal Hertleif * Ralph Giles (“rillian”) * Ralph “FriarTech” Loizzo * Raph Levien * reddraggone9 * Ryan Ollos * Steven Murawksi * Vesa Kaihlavirta * William Roe (Thanks to the couple people donating who opted out of the reward tier, as well. You know who you are!) Become a sponsor * Patreon.com/newrustacean * Venmo.com/chriskrycho * Dwolla.com/hub/chriskrycho * Cash.me/$chriskrych * flattr.com/profile/chriskrycho * PayPal.me/chriskrycho Contact * New Rustacean: * Twitter: @newrustacean * Email: hello@newrustacean.com * Chris Krycho * GitHub: chriskrycho * Twitter: @chriskrycho 10:19 @@ -2564,78 +2085,7 @@ Contact 2B30AB4B-8971-4576-BAD0-953A078B51A3 Chris Krycho - + Building (and celebrating) all the little, not-so-glorious pieces of the Rust ecosystem. Notes We love the Rust compiler team. But there’s more to the Rust community, and more required for Rust to be as great as it can be, than just the language itself. We need to celebrate other libraries, and even the small ones, just as much (and maybe more) than changes to the language. We need to dig in and work on building the _whole_ ecosystem. (The good news is, we are!) Links - futures-rs - “Zero-cost futures in Rust” - Tokio - “Announcing Tokio” (Carl Lerche on Medium) - “What’s new with ‘The Rust Programming Language’?” - Friends of Rust - ring – Safe, fast, small crypto using Rust - alexa-rs – Rust library for building Alexa skills - gilrs – Game Input Library for Rust Sponsors - Aleksey Pirogov - Cameron Mochrie - Cass Costello - Chris Palmer - Daniel Collin - Derek Morr - Doug Reeves - Eric Fulmer - Hamza Sheikh - Jakub “Limeth” Hlusička - Jared Smith - Keith Gray - Lachlan Collins - Leif Arne Storset - Luca Schmid - Micael Bergeron - Pascal Hertleif - Ralph Giles (“rillian”) - Ralph “FriarTech” Loizzo - Raph Levien - reddraggone9 - Ryan Ollos - Steven Murawksi - Vesa Kaihlavirta - William Roe (Thanks to the couple people donating who opted out of the reward tier, as well. You know who you are!) Become a sponsor - Patreon.com/newrustacean - Venmo.com/chriskrycho - Dwolla.com/hub/chriskrycho - Cash.me/$chriskrycho - flattr.com/profile/chriskrycho - PayPal.me/chriskrycho Contact - New Rustacean: - Twitter: @newrustacean - Email: hello@newrustacean.com - Chris Krycho - GitHub: chriskrycho - Twitter: @chriskrycho 11:27 @@ -2734,95 +2184,7 @@ Contact 3FD4B9E5-7496-4FCB-AD95-829A6A295274 Chris Krycho - + A deep dive on references and pointers in Rust. Notes By listener request, today we look at the syntax and semantics of referencing and dereferencing and the corresponding `&` and `*` operators. As was the case with e016, the code samples have little to say in their documentation; reading the code will be necessary for seeing the ideas. Sponsors * Aleksey Pirogue * Cameron Mochrie * Chris Palmer * Daniel Collin * Derek Morr * Doug Reeves * Eric Fulmer * Hamza Sheikh * Jakub “Limeth” Hlusička * Jared Smith * Keith Gray * Lachlan Collins * Leif Arne Storset * Luca Schmid * Micael Bergeron * Pascal Hertleif * Ralph Giles (“gillian”) * Ralph “FriarTech” Loizzo * Raph Levien * reddraggone9 * Ryan Oleos * Steven Murawksi * Vesa Kaihlavirta * William Roe (Thanks to the couple people donating who opted out of the reward tier, as well. You know who you are!) Become a sponsor * Patreon.com/newrustacean * Venmo.com/chriskrycho * Dwolla.com/hub/chriskrycho * Cash.me/$chriskrych * flattr.com/profile/chriskrycho * PayPal.me/chriskrycho Contact * New Rustacean: * Twitter: @newrustacean * Email: hello@newrustacean.com * Chris Krycho * GitHub: chriskrycho * Twitter: @chriskrycho 17:06 @@ -2919,62 +2281,7 @@ Contact 391443C9-2019-4843-BEB3-46B5140C6256 Chris Krycho - + Digging deeper on smart pointers and mutability with `Cell` and `RefCell`. Notes What are the Cell and RefCell types, and when should we use them? Today, we follow up both the detailed discussion of smart pointers in e015 and the closely related discussion in Interview 2 with Raph Levien, and look at two types you need to have a good idea how to deal with if you want to use these smart pointer types more _ergonomically_—that is, how to use them without feeling like you’re beating your head against a wall! Sponsors - Aleksey Pirogov - Chris Palmer - Daniel Collin - Derek Morr - Doug Reeves - Eric Fulmer - Hamza Sheikh - Jakub “Limeth” Hlusička - Keith Gray - Lachlan Collins - Leif Arne Storset - Luca Schmid - Micael Bergeron - Michael Clayton - Pascal Hertleif - Ralph Giles (“rillian”) - Ralph “FriarTech” Loizzo - Raph Levien - reddraggone9 - Ryan Ollos - Vesa Kaihlavirta - William Roe (Thanks to the couple people donating who opted out of the reward tier, as well. You know who you are!) Become a sponsor - Patreon.com/newrustacean - Venmo.com/chriskrycho - Dwolla.com/hub/chriskrycho - Cash.me/$chriskrycho - flattr.com/profile/chriskrycho - PayPal.me/chriskrycho Contact - New Rustacean: - Twitter: @newrustacean - Email: hello@newrustacean.com - Chris Krycho - GitHub: chriskrycho - Twitter: @chriskrycho 18:52 @@ -3053,56 +2360,7 @@ Contact E2C1612A-178F-4AAF-8581-FC589BC3345E Chris Krycho - + Raph Levien on Rust’s current strengths and places it can improve Notes Chris chats with Raph Levien about what inspired him to build a text editor, as well as about where the rough edges in the Rust development story are today, and how we might improve them going forward. Sponsors - Aleksey Pirogov - Chris Palmer - Daniel Collin - Derek Morr - Doug Reeves - Hamza Sheikh - Keith Gray - Lachlan Collins - Leif Arne Storset - Luca Schmid - Micael Bergeron - Pascal Hertleif - Ralph Giles (“rillian”) - Ralph “FriarTech” Loizzo - Raph Levien - reddraggone9 - Ryan Ollos - Vesa Kaihlavirta - William Roe (Thanks to the couple people donating who opted out of the reward tier, as well. You know who you are!) Become a sponsor - Patreon.com/newrustacean - Venmo.com/chriskrycho - Dwolla.com/hub/chriskrycho - Cash.me/$chriskrycho - flattr.com/profile/chriskrycho - PayPal.me/chriskrycho Contact - New Rustacean: - Twitter: @newrustacean - Email: hello@newrustacean.com - Chris Krycho - GitHub: chriskrycho - Twitter: @chriskrycho 19:33 @@ -3206,59 +2464,7 @@ Contact E585DC9C-567B-4902-B722-AF4D24DCA256 Chris Krycho - + Raph Levien on using Rust to build the Xi editor Notes Chris chats with Raph Levien about his background in software development, what attracted him to Rust, and how he’s using Rust to build the Xi Editor, a project which aims to be the fastest text editor out there, with native user interfaces and a Rust text engine. Sponsors - Aleksey Pirogov - Chris Palmer - Daniel Collin - Derek Morr - Doug Reeves - Hamza Sheikh - Lachlan Collins - Leif Arne Storset - Luca Schmid - Micael Bergeron - Pascal Hertleif - Ralph Giles (“rillian”) - Ralph “FriarTech” Loizzo - Raph Levien - reddraggone9 - Ryan Ollos - Vesa Kaihlavirta - William Roe (Thanks to the couple people donating who opted out of the reward tier, as well. You know who you are!) Become a sponsor - Patreon.com/newrustacean - Venmo.com/chriskrycho - Dwolla.com/hub/chriskrycho - Cash.me/$chriskrycho - flattr.com/profile/chriskrycho - PayPal.me/chriskrycho Contact - New Rustacean: - Twitter: @newrustacean - Email: hello@newrustacean.com - Chris Krycho - GitHub: chriskrycho - Twitter: @chriskrycho 28:17 @@ -3337,50 +2543,7 @@ Contact DE71BD86-2409-4D8A-8A5A-797751339FC1 Chris Krycho - + Box, String, Vec, Rc, and Arc have this in common: they’re not dumb. This episode, we take a close look at smart pointer types—from a few we’ve already talked about, like Box, Vec, and String, to some new ones, like Rc and Arc. - What smart pointers are, and what makes them ‘smart’. - Why we want or need smart pointers. - A bit about Box. - A lot more about Rc and Arc. Sponsors - Aleksey Pirogov - Chris Palmer - Daniel Collin - Derek Morr - Doug Reeves - Hamza Sheikh - Lachlan Collins - Leif Arne Storset - Luca Schmid - Micael Bergeron - Pascal Hertleif - Ralph Giles (“rillian”) - Ralph “FriarTech” Loizzo - Raph Levien - reddraggone9 - Ryan Ollos - Vesa Kaihlavirta - William Roe (Thanks to the couple people donating who opted out of the reward tier, as well. You know who you are!) Contact - New Rustacean: - Twitter: @newrustacean - Email: hello@newrustacean.com - Chris Krycho - GitHub: chriskrycho - Twitter: @chriskrycho 20:03 @@ -3467,73 +2630,7 @@ Contact A8D6E44A-007D-4D36-9442-AA30722DF454 Chris Krycho - + A year in, Rust is changing fast but still stable. Sponsors * Aleksey Pirogue * Chris Palmer * Daniel Collin * Derek Morr * Hamza Sheikh * Lachlan Collins * Leif Arne Storset * Luca Schmid * Micael Bergeron * Pascal Hertleif * Ralph Giles (“gillian”) * Ralph “FriarTech” Loizzo * reddraggone9 * Ryan Oleos * Vesa Kaihlavirta * William Roe (Thanks to the couple people donating who opted out of the reward tier, as well. You know who you are!) Become a sponsor * Patreon.com/newrustacean * Venmo.com/chriskrycho * Dwolla.com/hub/chriskrycho * Cash.me/$chriskrycho * Flattr.com/profile/chriskrycho * PayPal.me/chriskrycho Contact * New Rustacean: * Twitter: @newrustacean * Email: hello@newrustacean.com * Chris Krycho * GitHub: chriskrycho * Twitter: @chriskrycho 26:16 @@ -3604,65 +2701,7 @@ It’s trendy to ask for open-source work as evidence of your interest in tech a B75ECD4A-1A69-4BF1-A5D0-8F860A3DDFF4 Chris Krycho - + Some things matter more than contributing to open-source software in your free time. A lot more. It’s trendy to ask for open-source work as evidence of your interest in tech and commitment to software development. Trendy and completely wrong. Companies should not demand open-source contributions from their employees, and beyond that, should learn to recognize that profit is not the most valuable thing in the world. People are. Sponsors * Aleksey Pirogue * Chris Palmer * Daniel Collin * Derek Morr * Hamza Sheikh * Lachlan Collins * Leif Arne Storset * Luca Schmid * Micael Bergeron * Pascal Hertleif * Ralph Giles (‚Äúrillian‚Äù) * Ralph ‚ÄúFriarTech‚Äù Loizzo * reddraggone9 * Ryan Oleos * Vesa Kaihlavirta * William Roe (Thanks to the couple people donating who opted out of the reward tier, as well. You know who you are!) Become a sponsor * Patreon.com/newrustacean * Venmo.com/chriskrycho * Dwolla.com/hub/chriskrycho * Cash.me/$chriskrycho * Flattr.com/profile/chriskrycho * PayPal.me/chriskrycho Contact * New Rustacean: @newrustacean or hello@newrustacean.com * Chris Krycho: github.com/chriskrycho, @chriskrycho 11:07 @@ -3738,67 +2777,7 @@ Contact 50D3DAF8-7B5C-4B19-A6DE-E2CFD21F075F Chris Krycho - + Strings &strs and Vecs and slices (and Unicode) – oh, my! Notes This episode, I take a deep dive on strings in Rust, looking at the differences between String and &str, discussing Unicode a bit, and then expanding the discussion to think about how these types relate to the types they’re built on (like Vec). Links - Strings: - The Rust Book - Rust by Example - str docs: - module - primitive type - String - module - type definition - Dereferencing - coercions - std::ops::Deref Sponsors - Aleksey Pirogov - Chris Palmer - Derek Morr - Hamza Sheikh - Lachlan Collins - Leif Arne Storset - Luca Schmid - Micael Bergeron - Pascal Hertleif - Ralph Giles (“rillian”) - Ralph “FriarTech” Loizzo - reddraggone9 - Ryan Ollos - Vesa Kaihlavirta - William Roe (Thanks to the couple people donating who opted out of the reward tier, as well. You know who you are!) Become a sponsor - Patreon.com/chriskrycho - Venmo.com/chriskrycho - Dwolla.com/hub/chriskrycho - Cash.me/$chriskrycho - Flattr.com/profile/chriskrycho Contact - New Rustacean: - Twitter: @newrustacean - Email: hello@newrustacean.com - Chris Krycho - GitHub: chriskrycho - Twitter: @chriskrycho 18:58 @@ -3861,73 +2840,7 @@ Contact 38DF55F2-94FB-4CA0-8212-9C4D2897167F Just how good Rust is, and how you can learn it even if you’re busy. - + Just how good Rust is, and how you can learn it even if you’re busy. Notes Sometimes life goes crazy and I don’t have time to do all the technical writing required for a full episode, but I can’t get Rust off my mind, so I record an episode like this one. Where I talk a bit about how versatile Rust is and suggest some surprising ways you might be able to use it. Sponsors * Aleksey Pirogue * Chris Palmer * Derek Morr * Hamza Sheikh * Lachlan Collins * Leif Arne Storset * Luca Schmid * Micael Bergeron * Pascal Hertleif * Ralph Giles (“gillian”) * Ralph “FriarTech” Loizzo * reddraggone9 * Ryan Oleos * Vesa Kaihlavirta * William Roe (Thanks to the couple people donating who opted out of the reward tier, as well. You know who you are!) Become a sponsor * Patreon * Venom * Dwolla * Cash.me Contact * New Rustacean: * Twitter: @newrustacean * Email: hello@newrustacean.com * Chris Krycho * GitHub: chriskrycho * Twitter: @chriskrycho 10:17 @@ -4002,79 +2915,7 @@ well. You know who you are!)

20F0A4EE-7D88-4C90-8BA5-7D28FB8AF0AD Chris Krycho - + Reasoning about and using lifetimes in Rust (and why we need them) Notes Lifetimes are our way of reasoning about how long a given piece of data is available and safe to use in Rust. The reason we don't have the dangling pointer problem is that we do have lifetimes instead. They're not magic, they're just a bit of semantics and syntax that let us specify the rules for how long any given item lives, and how long references to data must be valid. Sponsors * Aleksey Pirogue * Chris Palmer * Derek Morr * Hamza Sheikh * Lachlan Collins * Leif Arne Storset * Luca Schmid * Micael Bergeron * Pascal Hertleif * Ralph Giles ("gillian") * Ralph "FriarTech" Loizzo * reddraggone9 * Ryan Oleos * Vesa Kaihlavirta * William Roe (Thanks to the couple people donating who opted out of the reward tier, as well. You know who you are!) Become a sponsor * Patreon.com/newrustacean * Venmo.com/chriskrycho * Dwolla.com/hub/chriskrycho * Cash.me/$chriskrycho Contact * New Rustacean: * Twitter: @newrustacean * Email: hello@newrustacean.com * Chris Krycho * GitHub: chriskrycho * Twitter: @chriskrycho 17:40
@@ -4139,66 +2980,7 @@ Contact 301B3967-5003-4D65-8ED6-D4594C2832F8 Chris Krycho - + What it means to be an expression-oriented language, and how that works out in Rust. Notes Rust is an expression-oriented language. What does that mean, and how does it play out in Rust? We look at if and match blocks, discuss looping constructs, and examine functions, and then widen out to discuss how having an expression-oriented language can change the way we think about programming. Sponsors * Aleksey Pirogue * Chris Palmer * Derek Morr * Hamza Sheikh * Lachlan Collins * Leif Arne Storset * Luca Schmid * Micael Bergeron * Pascal * Ralph Giles (“gillian”) * Ralph “FriarTech” Loizzo * reddraggone9 * Ryan Oleos * William Roe Become a sponsor * Patreon.com/newrustacean * Venmo.com/chriskrycho * Dwolla.com/hub/chriskrycho * Cash.me/$chriskrycho Contact * New Rustacean: - Twitter: @newrustacean - Email: hello@newrustacean.com * Chris Krycho - GitHub: chriskrycho - Twitter: @chriskrycho 16:41 @@ -4267,80 +3049,7 @@ Contact AC4E31F9-5811-4B6E-86E2-5E3ED3CE8DEF Chris Krycho - + Type systems: strong vs. weak, dynamic vs. static, and degrees of expressivity. Notes Talking about type systems! A broad and wide-ranging discussion about type systems in general, with specific examples from languages like PHP, JavaScript, Python, C, C++, Java, C♯, Haskell, and Rust! * What is a type system? * What are the kinds of things we get out of type systems? * What are the tradeoffs with different type systems? * What is Rust’s type system like? * What is especially attractive about Rust’s type system? A comment on the C integer/character string addition example: what’s actually happening there is that the character string is an array “under the covers,” and as such has an address. C silently switches to using the memory address, which is of course just an integer, when you try to add the two together. As I said on the show: the result is nonsense (unless you’re using this as a way of operating on memory addresses), but it’s compellable nonsense. In a stricter and stronger type system, memory addresses and normal numbers shouldn’t be addable! Sponsors * Aleksey Pirogue * Chris Palmer * Derek Morr * Hamza Sheikh * Lachlan Collins * Leif Arne Storset * Luca Schmid * Micael Bergeron * Pascal * Ralph Giles (“gillian”) * Ralph “FriarTech” Loizzo * reddraggone9 * Ryan Oleos * William Roe Become a sponsor * Patreon.com/newrustacean * Venmo.com/chriskrycho * Dwolla.com/hub/chriskrycho * Cash.me/$chriskrycho Contact * New Rustacean: - Twitter: @newrustacean - Email: hello@newrustacean.com * Chris Krycho - GitHub: chriskrycho - Twitter: @chriskrycho 17:51 @@ -4413,79 +3122,7 @@ Contact EF51E282-74DB-4F9F-8952-DBF70B1F8B2E Chris Krycho - ` not having a `Sum` method in C♯, and post-show research indicated that he was (it's possible it was added after he had stopped doing .NET work, of course). See the [documentation][c1] for details on how `IEnumerable.Sum` it behaves in C♯ if you're curious. - -As a related note, I (Chris) have done a little bit of digging on C♯ in the interval and it's fair to say that while a lot of the "ceremony" involved in writing C♯ is annoying, it's much more than just a "slightly nicer Java", and indeed is a much nicer language than my previous, limited exposure had led me to believe. It's no Rust or F♯, but its type system is substantially more capable than Java's. - -[c1]: https://msdn.microsoft.com/library/bb919210(v=vs.90).aspx - - -Links ------ - - - fmap - + [Discussion of `fmap` with `Optional` in Swift][l1] - + [In Haskell][l2] - - Rust: - + [Trait objects][l3] - + [Specialization RFC][l4] - * [Implementation][l5] - - [Diesel][l6] - -[l1]: https://robots.thoughtbot.com/functional-swift-for-dealing-with-optional-values -[l2]: http://learnyouahaskell.com/functors-applicative-functors-and-monoids -[l3]: https://doc.rust-lang.org/book/trait-objects.html -[l4]: https://github.com/rust-lang/rfcs/pull/1210 -[l5]: https://github.com/rust-lang/rust/issues/31844 -[l6]: https://github.com/sgrif/diesel - - -Sponsors --------- - - - Aleksey Pirogov - - Chris Palmer - - [Derek Morr][s3] - - Hamza Sheikh - - Leif Arne Storset - - Luca Schmid - - Micael Bergeron - - Ralph Giles ("rillian") - - reddraggone9 - - Ryan Ollos - - [William Roe][s11] - -[s3]: https://twitter.com/derekmorr -[s11]: http://willroe.me - -### Become a sponsor - - - [Patreon](https://www.patreon.com/newrustacean) - - [Venmo](https://venmo.com/chriskrycho) - - [Dwolla](https://www.dwolla.com/hub/chriskrycho) - - [Cash.me](https://cash.me/$chriskrycho) - - -Follow ------- - - - New Rustacean: - + Twitter: [@newrustacean](https://www.twitter.com/newrustacean) - + Email: [hello@newrustacean.com](mailto:hello@newrustacean.com) - - Chris Krycho - + GitHub: [chriskrycho](https://github.com/chriskrycho) - + Twitter: [@chriskrycho](https://www.twitter.com/chriskrycho) -]]> + Sean Griffin on type systems and hopes for Rust's future Notes ----- Chris chats with Sean Griffin about the tradeoffs between mental overhead and type safety, the expressiveness of different type systems, and some of the places where Rust currently falls down. ### Corrigenda Sean noted he could be wrong about `IEnumerable<T>` not having a `Sum` method in C♯, and post-show research indicated that he was (it's possible it was added after he had stopped doing .NET work, of course). See the [documentation][c1] for details on how `IEnumerable<T>.Sum` it behaves in C♯ if you're curious. As a related note, I (Chris) have done a little bit of digging on C♯ in the interval and it's fair to say that while a lot of the "ceremony" involved in writing C♯ is annoying, it's much more than just a "slightly nicer Java", and indeed is a much nicer language than my previous, limited exposure had led me to believe. It's no Rust or F♯, but its type system is substantially more capable than Java's. [c1]: https://msdn.microsoft.com/library/bb919210(v=vs.90).aspx Links ----- - fmap + [Discussion of `fmap` with `Optional` in Swift][l1] + [In Haskell][l2] - Rust: + [Trait objects][l3] + [Specialization RFC][l4] * [Implementation][l5] - [Diesel][l6] [l1]: https://robots.thoughtbot.com/functional-swift-for-dealing-with-optional-values [l2]: http://learnyouahaskell.com/functors-applicative-functors-and-monoids [l3]: https://doc.rust-lang.org/book/trait-objects.html [l4]: https://github.com/rust-lang/rfcs/pull/1210 [l5]: https://github.com/rust-lang/rust/issues/31844 [l6]: https://github.com/sgrif/diesel Sponsors -------- - Aleksey Pirogov - Chris Palmer - [Derek Morr][s3] - Hamza Sheikh - Leif Arne Storset - Luca Schmid - Micael Bergeron - Ralph Giles ("rillian") - reddraggone9 - Ryan Ollos - [William Roe][s11] [s3]: https://twitter.com/derekmorr [s11]: http://willroe.me ### Become a sponsor - [Patreon](https://www.patreon.com/newrustacean) - [Venmo](https://venmo.com/chriskrycho) - [Dwolla](https://www.dwolla.com/hub/chriskrycho) - [Cash.me](https://cash.me/$chriskrycho) Follow ------ - New Rustacean: + Twitter: [@newrustacean](https://www.twitter.com/newrustacean) + Email: [hello@newrustacean.com](mailto:hello@newrustacean.com) - Chris Krycho + GitHub: [chriskrycho](https://github.com/chriskrycho) + Twitter: [@chriskrycho](https://www.twitter.com/chriskrycho) 22:14 @@ -4561,46 +3198,7 @@ Follow 2FDF4C7A-DEC9-4642-A5FB-99D1D6726527 Chris Krycho - + Sean Griffin on Rust, Diesel, and ORMs Notes Chris chats with Sean Griffin about his programming background and initial experience with Rust, Rust’s appeal, and what he’s doing with Diesel and some of his plans for a new web framework in Rust. Sponsors - Aleksey Pirogov - Chris Palmer - Derek Morr - Hamza Sheikh - Leif Arne Storset - Luca Schmid - Micael Bergeron - Ralph Giles (“rillian”) - reddraggone9 - Ryan Ollos - William Roe Become a sponsor - Patreon - Venmo - Dwolla - Cash.me Follow - New Rustacean: - Twitter: @newrustacean - Email: hello@newrustacean.com - Chris Krycho - GitHub: chriskrycho - Twitter: @chriskrycho 24:50 @@ -4646,38 +3244,7 @@ Follow E1508C29-D386-4AC2-AACD-10B6C716CDCC Chris Krycho - + The value of a good community, and how you can help Rust today. Community is one of the most important parts of a programming language community, or indeed *any* technical community. In this episode, I talk a bit about what happens when you don't have a good community, how Rust's community has done well so far, and then how to keep building a good community and how to build good things *as* a community. Sponsors - Aleksey Pirogov - Chris Palmer - Derek Morr - Hamza Sheikh - Luca Schmid - Micael Bergeron - Ralph Giles (“rillian”) - reddraggone9 - William Roe Become a sponsor - Patreon.com/newrustacean - Venmo.com/chriskrycho - Dwolla.com/hub/chriskrycho - Cash.me/$chriskrycho Follow - New Rustacean: - Twitter: @newrustacean - App.net: @newrustacean - Email: hello@newrustacean.com - Chris Krycho - Twitter: @chriskrycho - App.net: @chriskrycho 12:03 @@ -4755,40 +3322,7 @@ Follow http://www.podtrac.com/pts/redirect.m4a/cdn.newrustacean.com/e010.m4a Chris Krycho Using Rust's macro system, its limitations, and its future. - + Using Rust's macro system, its limitations, and its future. Because of the way macros are exported—before name resolution on crates occurs—the documentation for the macros defined in the source for this episode occurs in the MACROS section of the show_notes crate documentation, rather than within the documentation for this module. (See the Rust Book discussion of documenting macros for details.) Even so, the source is still in this module; see the implementations for details. Sponsors - Aleksey Pirogov - Chris Palmer - Derek Morr - Hamza Sheikh - Luca Schmid - Micael Bergeron - Ralph Giles (“rillian”) - reddraggone9 - William Roe Become a sponsor - Patreon.com/newrustacean - Venmo.com/chriskrycho - Dwolla.com/hub/chriskrycho - Cash.me/$chriskrycho Follow - New Rustacean: - Twitter: @newrustacean - App.net: @newrustacean - Email: hello@newrustacean.com - Chris Krycho - Twitter: @chriskrycho - App.net: @chriskrycho 16:32 @@ -4865,68 +3399,7 @@ Follow 505802A1-4F58-4C3C-A268-B1354B5B2F8E Chris Krycho Getting into the nitty-gritty with Rust's traits. - + Notes Last time, we looked at generics and traits at a high level. This time, we dig deeper on traits, looking specifically at std::iter::Iterator as an example of a powerful trait that can be composed across types, and then at how we might compose multiple traits on a single type. We also talk about the syntax for traits, the use of marker traits, some of the things you _can’t_ presently do with traits, and even just a smidge about the _future_ of traits in Rust. All that in less than 20 minutes! You’ll find today’s source example fairly interesting, I think: it’s just one type, but it uses almost every concept discussed on the show today! Links - Nick Cameron: “Thoughts on Rust in 2016” - “Upcoming breakage starting in Rust 1.7, from RFCs 1214 and 136” - RFC 1214: Clarify (and improve) rules for projections and well-formedness - RFC 136: Ban private items in public APIs - The Rust Book: - Traits - Trait objects (dynamic dispatch) - The Rust reference: - std::iter and std::iter::Iterator - Add - Drop - PartialEq and Eq - PartialOrd and Ord - Special traits - Trait objects - RFC: impl specialization - Aaron Turon: “Specialize to reuse” Sponsors - Aleksey Pirogov - Chris Palmer - Derek Morr - Hamza Sheikh - Luca Schmid - Micael Bergeron - Ralph Giles (“rillian”) - reddraggone9 - William Roe Become a sponsor - Patreon.com/newrustacean - Venmo.com/chriskrycho - Dwolla.com/hub/chriskrycho - Cash.me/$chriskrycho Follow - New Rustacean: - Twitter: @newrustacean - App.net: @newrustacean - Email: hello@newrustacean.com - Chris Krycho - Twitter: @chriskrycho - App.net: @chriskrycho 17:23 @@ -4990,57 +3463,7 @@ Follow C41DFF97-B4A0-4A50-89AF-4803FD50B547 Chris Krycho Generics, traits, and shared behavior in Rust. - + Notes In this episode we cover—at a _very_ high level—two more fundamental concepts in Rust programming: generics and traits. Generics gives us the abilitty to write types and functions which can be used with more than one type. Traits give us the ability to specify behavior which can be implemented for more than one type. The combination gives us powerful tools for higher-level programming constructs in Rust. Comments on source code Now that we have a handle on how tests work, we’ll use them to validate the behavior of our code going forward. This is great: we can show that the tests do what we think. To today’s point, though: we actually know even apart from whether the tests _run_ successfully that these generic functions and the associated traits are behaving as we want. Failure with generics is a _compile_-time error, not a runtime error. Sponsors - Chris Palmer - Derek Morr - Luca Schmid - Micael Bergeron - Ralph Giles (“rillian”) - reddraggone9 - William Roe Become a sponsor - Patreon/newrustacean - Venmo.com/chriskrycho - Dwolla.com/hub/chriskrycho - Cash.me/$chriskrycho Follow - New Rustacean: - Twitter: @newrustacean - App.net: @newrustacean - Email: hello@newrustacean.com - Chris Krycho - Twitter: @chriskrycho - App.net: @chriskrycho 17:37 @@ -5109,62 +3532,7 @@ Follow 9B3A138D-FE96-4A8A-A708-BDCBF1F63A3F Chris Krycho Testing and benchmarking, and compiler attributes. - + Notes All about testing in Rust! In order, we take a look at: - Why you need tests. - Unit tests in other (dynamically-typed) languages vs. in Rust. - How to write unit tests in Rust. - How and why to write integration tests in Rust. - How and why to use benchmarks in Rust. The detailed code samples for this episode are heavy on showing; because of the nature of test functions, you will be best off just reading the source rather than leaning heavily on the descriptions generated by RUSTDOC. (The descriptions are still _there_, but they’re much less useful than they have been in previous episodes.) In particular, the test module here is excluded because of the use of the #[cfg(test)] attribute marker on it. Because we are using the feature-gated benchmarking functionality, the show notes “library” can now only be compiled with the Rust nightly (as of 1.5, the version current as this episode is produced). One thing that isn’t necessarily obvious from reading the test documentation in the Rust book and Rust reference: the extern crate test statement needs to be not in this module, but at the module (lib.rs) which defines the library/crate; in this case, show_notes/lib.rs. Sponsors - Chris Palmer - Derek Morr - Luca Schmid - Micael Bergeron - Ralph Giles (“rillian”) - reddraggone9 - William Roe Become a sponsor - Patreon.com/newrustacean - Venmo.com/chriskrycho - Dwolla.com/hub/chriskrycho - Cash.me/$chriskrycho Follow - New Rustacean: - Twitter: @newrustacean - App.net: @newrustacean - Email: hello@newrustacean.com - Chris Krycho - Twitter: @chriskrycho - App.net: @chriskrycho 18:46 @@ -5208,40 +3576,7 @@ Follow 7FB6C998-E813-4E17-8EFB-CD29135DCD2D Chris Krycho Paying off technical debt, refactoring, and cleaning up old code. - + Software developers spend a large part of our careers dealing with legacy code. But what is the _best_ way to deal with legacy code? When should you rip out the old and rewrite it, and when should you opt for smaller clean-up jobs because, however ugly, what is already present _works_? SPONSORS - Chris Palmer - Derek Morr - Luca Schmid - Micael Bergeron - Ralph Giles (“rillian”) - reddraggone9 - William Roe Become a sponsor - Patreon.com/newrustacean - Venmo.com/chriskrycho - Dwolla.com/hub/chriskrycho - Cash.me/$chriskrycho FOLLOW - New Rustacean: - Twitter: @newrustacean - App.net: @newrustacean - Email: hello@newrustacean.com - Chris Krycho - Twitter: @chriskrycho - App.net: @chriskrycho 9:41 @@ -5338,27 +3673,7 @@ FOLLOW 6707AF5D-82F4-40D5-9DB5-7003D571EEB6 Chris Krycho Designing APIs, and using packages ("crates") and modules - + Designing APIs, and using packages (“crates”) and modules Notes Today, we are talking about modules, packages, and APIs in Rust. Taking a bit of a breather after some pretty hard material the last few weeks. For reference, the Rust book section on Crates and Modules will be very helpful. Corrigenda I accidentally called this episode 5, instead of episode 6. *Whoops.* Just before the 15:00 mark, while discussing libraries, I referred to “e006.md” when I meant to say “e006.rs”. Slips of the tongue inspired by the fact that Rust (delightfully) uses Markdown for its documentation. Sponsors - reddraggone9 - Chris Patti (Podcast.__init__) Become a sponsor - https://www.patreon.com/newrustacean - https://venmo.com/chriskrycho - dwolla.com/hub/chriskrycho - ttps://cash.me/$chriskrycho 18:22 @@ -5417,45 +3732,7 @@ Become a sponsor 2BA666AD-2288-4599-AC61-7B545FD2C539 Chris Krycho Returning functions from other functions, and thinking about the stack, the heap, and reference types. - + Returning functions from other functions, and thinking about the stack, the heap, and reference types. NOTES This episode, we look at returning functions from other functions, and as part of that discuss some basics about the stack and the heap—and why we need to care about them for returning functions. The functions themselves are not especially interesting; they just show you the basic form you use to return functions from other functions, and how to then use them in another function. You’ll want to take a detailed look instead at the documentation for each (or just read the source!), because that’s where the meat of the discussion in this week’s code is. SPONSORS - reddraggone9 - Chris Patti Become a sponsor - Patreon.com/newrustacean - Venmo.com/chriskrycho - Dwolla.com/hub/chriskrycho - Cash.me FOLLOW - New Rustacean: - Twitter: @newrustacean - App.net: @newrustacean - Email: hello@newrustacean.com - Chris Krycho - Twitter: @chriskrycho - App.net: @chriskrycho 18:30 @@ -5508,44 +3785,7 @@ FOLLOW BC4D9C42-0F4C-4497-9059-436A8906657E Chris Krycho Functions, methods, closures, and function as arguments! - + Functions, methods, closures, and function as arguments! NOTES This week’s episode covers the basics of all sorts of functions: normal functions, methods, and closures. Closures - An explanation (in Ruby) by Martin Fowler - Rust book - Rust by Example - “What is a closure?” (Progammers Stack Exchange) ‚Äì the first answer is the best, but the second answer may be a helpful stepping stone for people just getting their heads around this and coming from OOP languages like C++ or Java (even though I disagree with the explanation in some ways). - “What is a closure?” (Stack Overflow) – careful, thorough answer using JavaScript as an example. LINKS - Exercism (hat tip: Lechindanier on GitHub) - Rust Learning - Rust and Swift (viii) FOLLOW/SUPPORT - New Rustacean: - Twitter: @newrustacean - App.net: @newrustacean - Patreon.com/chriskrycho - Dwolla.com/hub/chriskrycho - Email: hello@newrustacean.com - Chris Krycho - Twitter: @chriskrycho - App.net: @chriskrycho 17:07 @@ -5616,37 +3856,7 @@ document.write(''+e+'<\ E39A4582-8095-4645-8925-AB2887828F93 Chris Krycho Enumerated (`enum`) types, pattern matching, and meaningful return values. - + No More Nulls - Date: October 21, 2015 - Subject: Enumerated (`enum`) types, pattern matching, and meaningful return values. # Notes Today’s episode discusses, in order: - Enumerated types, with an eye to the difference between structs and enums, and to the differences between enums in C and in Rust. - Pattern matching, with a focus on using them with enumerated types and some discussion about how they differ from switch blocks in C-like languages. - Using the Option and Result enumerated types with pattern matching to provide meaningful returns from functions safely. ## Order There is a specific order to the examples below, and it is _not_ the automatically-alphabetized order rendered by rustdoc. Instead, you should work through in the sequence they appear in the source: 1. RelatedishThings 2. demonstrate_basic_enumeration 3. demonstrate_match 4. get_an_option 5. demonstrate_option 6. get_a_result 7. demonstrate_result 16:51 @@ -5702,59 +3912,7 @@ should work through in the sequence they appear in the source: 03DD0BB6-9615-420A-A43B-B6EB0BBCD1C4 Chris Krycho Borrow a `struct` for a while. Then give it back, or keep it for yourself! - + Something borrowed, something… moved? * Date: October 12, 2015 * Subject: The struct data type constructor, and the basics of Rust’s “ownership” concept and “borrowing” and “moving”. * Audio: * M4A * MP3 * Ogg Follow/Support * New Rustacean: * Twitter: @newrustacean * App.net: @newrustacean * Patreon * Email: hello@newrustacean.com * Chris Krycho * Twitter: @chriskrycho * App.net: @chriskrycho Notes Today’s episode discusses, and the associated source code demonstrates, a few basic behaviors of structs… including borrowing! After taking a short look at one of Rust’s basic approaches to creating new types, we dive into a fairly thorough overview of how borrowing works in fairly run-of-the-mill Rust code. This is a basic introduction, and as such I’m not getting into things like heap-allocated memory (Box) or dealing with move semantics with threads or closures. (I haven’t actually figured those out well enough yet to write something like this for them!) As usual, you’ll want to have the src open to see what I’m doing with the components documented below. Links * rustfmt – a tool for formatting Rust code * repo * “rustfmt-ing Rust` * Reddit discussion * RFC for incremental compilation * Text of the RFC * GitHub pull request 17:12 @@ -5824,77 +3982,7 @@ Links 9846F954-2459-4E89-BAF6-0DB4DA62E6D3 Chris Krycho Documentation in general, and rustdoc and cargo doc in particular. - + Documentation in general, and rustdoc and cargo doc in particular. Document all the things! * Date: October 3, 2015 * Subject: Documentation in general, and rustic and cargo doc in particular. * Audio: * M4A * MP3 Follow/Support * New Rustacean: * Twitter: @newrustacean * App.net: @newrustacean * Patreon * Email: hello@newrustacean.com * Chris Krycho * Twitter: @chriskrycho * App.net: @chriskrycho Notes This is a mostly-empty module, and it is intended as such. Why? Well, because almost all the sample code exists in these comments, which serve as the show notes. If you listen to the episode or take a look at the source files, you’ll see how it works! The components below are included solely so you can see how the docstrings work with each kind of thing. Make sure to click on the names of the items: there is more documentation there. Again, take a look at the source to see how it looks in the context of a file module. Note that this module-level docstring uses rather than `///`-style comments. This is because this docstring is documenting the item which contains it, rather than the following item. Per [Rust RFC 505][1], the preferred approach is always to use the &quot;following&quot; form (`///`) rather than the &quot;containing&quot; form (), except for module-level docs like these. (I will be following RFC 505 throughout.) Links * Rust and MSVC tracking issue * Other documentation tools: * Predecessors: * Python’s Sphinx tool * Oxygen * JSDoc * JavaDoc * Other new languages with Markdown tooling * Julia has a built-in documentation system * Elixir has ex_doc * Rust 1.3 release announcement * Rust’s package hosting: crates.io * Crater for testing for backwards compatibility * Semantic versioning * “Stability as a Deliverable”: Rust official blog post on version stability, backwards compatibility, and release channels. * The Rust book chapter on rustc 17:06 @@ -5924,27 +4012,7 @@ Links CCE404BC-4B4A-4F28-A687-9BCC66C08CEF Chris Krycho A little about the host, and a little about the format of the show! - + Hello, world! * Date: September 24, 2015 * Subject: The host, the language, and the show! * Audio: * M4A * MP3 Today’s show is pretty meta. You can skip it if you just want to start with something more technical, but I thought listeners might want to know a little about the origins of the show and my own background, so that’s what you get today. Next time, we’ll be tackling the rustic command in some detail. This is an almost-empty module: we aren’t doing any fun code samples yet. I included the standard “Hello, world!” example, because how could I not? However, at some point in the future, there will be much more detailed code samples available: * in the GitHub repository for the show * in the show notes attached to each episode Hopefully, the result will be a pretty helpful bunch of side content along with the audio of the podcast itself. 17:11