PLAY PODCASTS
New Rustacean

New Rustacean

103 episodes — Page 2 of 3

RBR 2017: Arun Kulsheshthra

A micro-interview recorded at Rust Belt Rust 2017, in Columbus, Ohio, October 27–28.

Nov 15, 20175 min

RBR 2017: Anthony Deschamps

A micro-interview recorded at Rust Belt Rust 2017, in Columbus, Ohio, October 27–28. ## Transcript **Chris:** hello! Can you tell me your name and a little bit about yourself? **Anthony:** My name is Anthony Deschamps, I, um, I’m a software developer, I work in Automotive. **Chris:** Oh! Very interesting. Long-time listeners will recognize Anthony’s name as a sponsor of the show; thank you for sponsoring the show! **Anthony:** You’re welcome! **Chris:** So, what got you into Rust? **Anthony:** I’ve talked about this earlier; I actually can’t remember how I first came across it. Um, I remember my friends being excited about it and looking at it at some point, um, but what really hooked me is that I have a huge amount of respect for C+ +, uh, it was one of my first languages, and to me, Rust feels like C+ + with decades of learned lessons. If we have a clean slate, and what you can do with a fresh start. **Chris:** Yeah. How long - do you remember roughly, obviously you don’t remember exactly when, but - do you remember roughly how long...pre 1.0, post 1.0? **Anthony:** Uh, probably about a year ago, so, somewhere after 1.10 or roundabouts. **Chris:** Okay. Very good. What has your experience of learning Rust been like? Good, bad, ugly? **Anthony:** Um, it’s made my C+ + better. **Chris:** Yeah. **Anthony:** Everything thing that I struggled with in Rust was really just a lesson for what I could be doing better in other places. **Chris:** What are you using Rust for presently? Are you able to use it at work at all, or is it side projects entirely, still? **Anthony:** So, a combination of hobby projects, uh, when I have time. And, a little bit at work. It’s one of those things where it is a little bit of a risk, a newer thing, so it’s been nice to try it out on some small things, see how it goes, and realize that I do like it and get excited about hoping to use it more. **Chris:** Yeah. What kind of side projects have you been able to do? **Anthony:** Um, when I get around to strapping a Raspberry Pi to a balloon and sending it up to the stratosphere to take some photos, that’ll be in Rust. **Chris:** That’s awesome. **Anthony:** I also like to play around with arduinos, and LEDs are fun, and I’m using a little bit of Rust there. **Chris:** Cool. Is there anything in particular that’s caught your attention either with this conference or with the Rust community in general? **Anthony:** The most exciting thing to me is meeting the people who are making the things that I enjoy using. Uh, it seems obvious when you really think about it, but, um, the things that you use are not made by some...cloud, or void, or they don’t just come out of nowhere, they’re made from real people, who really enjoy working on what they’re doing, and are really excited to talk to you about it. **Chris:** I share that sentiment deeply. Thank you for your time! **Anthony:** Well, thank you so much for the podcast. I really enjoy it. **Chris:** My pleasure, and absolutely awesome, speaking of meeting people in person, it’s great to meet you in person! **Anthony:** I agree. Thank you so much. **Chris:** Thank you!

Nov 14, 20175 min

RBR 2017: Colin Dean

A micro-interview recorded at Rust Belt Rust 2017, in Columbus, Ohio, October 27–28.

Nov 11, 20177 min

Meta 2: Two milestones

Two years and fifty episodes of New Rustacean—time to celebrate with stickers and shirts! Links JavaScript to Elm Idris Elixir Shirts Get them here! – available till Oct 9, 2017 at 8:00 PM EDT. Sponsors Aaron Turon Alexander Payne Anthony Deschamps Anthony Scotti Aleksey Pirogov Andreas Fischer Andrew Thompson Austin LeSure Behnam Esfahbod Benjamin Wasty Brent Vatne Charlie Egan Chris Jones Chris Palmer Dan Abrams Daniel Collin [David W. Allen] David Hewson Derek Morr Eugene Bulkin Henri Sivonen Ian Jones Jakub "Limeth" Hlusička James Cooper Jerome Froelich Jonathan Turner Jupp Müller Justin Ossevoort Karl Hobley Keith Gray Kilian Rault Luca Schmid Masashi Fujita Matt Rudder Matthew Brenner Matthew Piziak Matthias Ruszala Max Jacobson Messense Lv Micael Bergeron Nathan Sculli Nick Stevens Ovidiu Curcan Pascal Hertleif Patrick O'Doherty Peter Tillemans Philipp Keller Ralph Giles ("rillian") Randy MacLeod Raph Levien reddraggone9 Ryan Blecher Sebastián Ramírez Magrí Simon G. Steven Murawski Stuart Hinson Tim Brooks Tom Prince Ty Overby Tyler Harper Vesa Kaihlavirta Warren Harper William Roe Zachary Snyder 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: [email protected] Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

Sep 25, 201712 min

CYSK: Rayon

Safe, threaded, parallel code in Rust!Links and NotesRayon Source Crate Docs README blog post Other things referenced on the show Request for Explanation #10 [e016: RefCells and code smells] – on mutability ["embarassingly parallel"] https://www.newrustacean.com/show_notes/e016/index.html ["embarassingly parallel"]: https://en.wikipedia.org/wiki/Embarrassingly_parallelSponsors Anthony Deschamps Anthony Scotti Aleksey Pirogov Andreas Fischer Andrew Thompson Austin LeSure Behnam Esfahbod Benjamin Wasty Brent Vatne Charlie Egan Chris Jones Chris Palmer Dan Abrams Daniel Collin [David W. Allen] Derek Morr Eugene Bulkin Henri Sivonen Jakub "Limeth" Hlusička James Cooper Jerome Froelich Jonathan Turner Jupp Müller Justin Ossevoort Karl Hobley Keith Gray Kilian Rault Luca Schmid Masashi Fujita Matt Rudder Matthew Piziak Matthias Ruszala Max Jacobson Messense Lv Micael Bergeron Nathan Sculli Nick Stevens Ovidiu Curcan Pascal Hertleif Patrick O'Doherty Peter Tillemans Philipp Keller Ralph Giles ("rillian") Randy MacLeod Raph Levien reddraggone9 Sebastián Ramírez Magrí Simon G. Steven Murawski Stuart Hinson Tim Brooks Tom Prince Ty Overby Tyler Harper Vesa Kaihlavirta Warren Harper 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: [email protected] Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

Sep 16, 201714 min

News: Rust 1.20

Associated constants, conference season, meetups, and more! Links and NotesRust 1.20blog postchangelogAssociated items RFC – and see the code for today's show for examples of the variants I described on the show!RustConf 2017RustFest 2017registrationRust Belt Rust 2017registration (and don't forget to use code newrustacean for 20% off!)rustrations.clubSponsorsAnthony DeschampsAnthony ScottiAleksey PirogovAndreas FischerAndrew ThompsonAustin LeSureBehnam EsfahbodBenjamin WastyBrent VatneCharlie EganChris JonesChris PalmerDan AbramsDaniel Collin[David W. Allen]Derek MorrEugene BulkinHenri SivonenJakub "Limeth" HlusičkaJames CooperJonathan TurnerJordan HendersonJupp MüllerJustin OssevoortKarl HobleyKeith GrayKilian RaultLuca SchmidMasashi FujitaMatt RudderMatthew PiziakMax JacobsonMessense LvMicael BergeronNathan SculliNick StevensOvidiu CurcanPascal HertleifPatrick O'DohertyPeter TillemansPhilipp KellerRalph Giles ("rillian")Randy MacLeodRaph Levienreddraggone9Sebastián Ramírez MagríSimon G.Steven MurawskiStuart HinsonTim BrooksTom PrinceTy OverbyTyler HarperVesa KaihlavirtaWarren HarperWilliam RoeZaki(Thanks to the couple people donating who opted out of the reward tier, as well. You know who you are!)Become a sponsorPatreonVenmoDwollaCash.meFlattrPayPal.meContactNew Rustacean:Twitter: @newrustaceanEmail: [email protected] KrychoGitHub: chriskrychoTwitter: @chriskrycho

Sep 1, 201713 min

Bonus 9: Open source is mostly just normal people

My experience with ember-cli-typescript as an example: we're all just people muddling along and doing our best.Links and Notesember-cli-typescriptThe Bike Shed #118: Nonsense In, Nonsense OutSean's appearance on New Rustacean: Interview 1SponsorsAnthony DeschampsAnthony ScottiAleksey PirogovAndreas FischerAndrew ThompsonBehnam EsfahbodBenjamin WastyBrent VatneCharlie EganChris JonesChris PalmerChristopher GiffardDan AbramsDaniel Collin[David W. Allen]Derek MorrEugene BulkinHenri SivonenJakub "Limeth" HlusičkaJames CooperJonathan TurnerJordan HendersonJupp MüllerJustin OssevoortKarl HobleyKeith GrayKilian RaultLuca SchmidMatt RudderMatthew PiziakMax JacobsonMessense LvMicael BergeronOliver Uvman - see the Tomaka Patreon and arewegameyet.comOvidiu CurcanPascal HertleifPatrick O'DohertyPeter TillemansPhilipp KellerRalph Giles ("rillian")Randy MacLeodRaph LevienRaphaelRob Tsukreddraggone9Sebastián Ramírez MagríSteven MurawskiStuart HinsonTim BrooksTom PrinceTy OverbyTyler HarperVesa KaihlavirtaWarren HarperWilliam RoeZaki(Thanks to the couple people donating who opted out of the reward tier, as well. You know who you are!)Become a sponsorPatreonVenmoDwollaCash.meFlattrPayPal.meContactNew Rustacean:Twitter: @newrustaceanEmail: [email protected] KrychoGitHub: chriskrychoTwitter: @chriskrycho

Aug 14, 2017

e021: Keeping your types under cover

Using type aliases and creating custom type wrappers for more expressive and safer code. Links and Notes Deref Iterator std::io::Result Sponsors Anthony Deschamps Anthony Scotti Aleksey Pirogov Andreas Fischer Andrew Thompson Austin LeSure Behnam Esfahbod Benjamin Wasty Brent Vatne Charlie Egan Chris Jones Chris Palmer Dan Abrams Daniel Collin David W. Allen Derek Morr Eugene Bulkin Henri Sivonen Jakub "Limeth" Hlusička James Cooper Jonathan Turner Jordan Henderson Jupp Müller Justin Ossevoort Karl Hobley Keith Gray Kilian Rault Luca Schmid Matt Rudder Matthew Piziak Max Jacobson Messense Lv Micael Bergeron Ovidiu Curcan Pascal Hertleif Patrick O'Doherty Peter Tillemans Philipp Keller Ralph Giles ("rillian") Randy MacLeod Raph Levien reddraggone9 Sebastián Ramírez Magrí Steven Murawski Stuart Hinson Tim Brooks Tom Prince Ty Overby Tyler Harper Vesa Kaihlavirta Warren Harper 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: [email protected] Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

Jul 18, 201717 min

News 3: Increasing Rust's Reach

Growing Rust's diversity to help Rust grow. Links and Notes Initiative blog post Initiative submission form Sponsors Anthony Deschamps Anthony Scotti Aleksey Pirogov Andreas Fischer Andrew Thompson Austin LeSure Behnam Esfahbod Benjamin Wasty Charlie Egan Chris Jones Chris Palmer Christopher Giffard Dan Abrams Daniel Collin Derek Morr Eugene Bulkin Henri Sivonen Jakub "Limeth" Hlusička James Cooper Jonathan Turner Jordan Henderson Jupp Müller Justin Ossevoort Karl Hobley Keith Gray Kilian Rault Luca Schmid Matt Rudder Matthew Piziak Max Jacobson Messense Lv Micael Bergeron Ovidiu Curcan Pascal Hertleif Patrick O'Doherty Peter Tillemans Philipp Keller Ralph Giles ("rillian") Randy MacLeod Raph Levien reddraggone9 Sean Jensen-Grey Sebastián Ramírez Magrí Steven Murawski Stuart Hinson Tim Brooks Tom Prince Ty Overby Tyler Harper Vesa Kaihlavirta Warren Harper 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: [email protected] Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

Jul 4, 201713 min

CYSK: Rocket

An accessible, well-designed web framework in Rust! Links and Notes Rocket Hyper Iron Django Rails ASP.NET MVC Procedural macros in the Rust book first edition second edition – still in progress at time of publication RFC #1566 implementation tracking issue metaprogramming Lisp Sponsors Anthony Deschamps Anthony Scotti Aleksey Pirogov Andreas Fischer Andrew Thompson Austin LeSure Ben Whitley Behnam Esfahbod Benjamin Wasty Charlie Egan Chris Jones Chris Palmer Christopher Giffard Dan Abrams Daniel Collin Derek Morr Eugene Bulkin Henri Sivonen Jakub "Limeth" Hlusička Jonathan Turner Jordan Henderson Jupp Müller Justin Ossevoort Karl Hobley Keith Gray Kilian Rault Lachlan Collins Luca Schmid Matt Rudder Matthew Piziak Max Jacobson Micael Bergeron Ovidiu Curcan Pascal Hertleif Patrick O'Doherty Peter Tillemans Philipp Keller Ralph Giles ("rillian") Randy MacLeod Raph Levien reddraggone9 Steven Murawski Stuart Hinson Tim Brooks Tom Prince Ty Overby Tyler Harper Vesa Kaihlavirta Warren Harper 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: [email protected] Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

Jul 1, 201717 min

Interview 4 – Jonathan Turner: Part 3

Smoothing the Rust dev story Future work on the RLS, in Rust itself, and in Servo. Show Notes Building the Rust Language Service: Language Server Protocol plugins RLS reference VS Code plugin Kalita Alexey's vscode-rust langserver.org The 2017 Rust Roadmap Improved match ergonomics around references const generics RFC #1931 Working on Servo: Servo Windows nightlies LLVM Apple's use on their graphics pipeline: OpenGL Metal clang Swift Project Quantum WebKit KHTML Safari Sponsors Anthony Deschamps Anthony Scotti Aleksey Pirogov Andreas Fischer Andrew Thompson Austin LeSure Ben Whitley Behnam Esfahbod Benjamin Wasty Charlie Egan Chris Jones Chris Palmer Christopher Giffard Dan Abrams Daniel Collin Derek Morr Eugene Bulkin Henri Sivonen Jakub "Limeth" Hlusička Jonathan Turner Jordan Henderson Jupp Müller Justin Ossevoort Karl Hobley Keith Gray Kilian Rault Lachlan Collins Luca Schmid Matt Rudder Matthew Piziak Max Jacobson Micael Bergeron Ovidiu Curcan Pascal Hertleif Patrick O'Doherty Peter Tillemans Philipp Keller Ralph Giles ("rillian") Randy MacLeod Raph Levien reddraggone9 Steven Murawski Stuart Hinson Tim Brooks Tom Prince Ty Overby Tyler Harper Vesa Kaihlavirta Warren Harper 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: [email protected] Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

Jun 17, 201722 min

Interview 4 – Jonathan Turner: Part 2

Making Rust Better Rust as the fusion of systems and high-level programming languages, and the RLS. Show Notes The survey Language adoption: Guido van Rossum and Python Matz (Yukihiro Matsumoto) and Ruby Dart Building the Rust Language Service: Racer rustw Language Server Protocol Demo at RustConf 2016 Anders Hejlsberg – designer or lead developer of Turbo Pascal, Delphi, C#, and TypeScript Serde Roadmap GitHub Project Language Server Protocol plugins RLS reference VS Code plugin Kalita Alexey’s vscode-rust langserver.org The 2017 Rust Roadmap Improved match ergonomics around references const generics RFC #1931 Sponsors Anthony Deschamps Anthony Scotti Aleksey Pirogov Andreas Fischer Andrew Thompson Austin LeSure Ben Whitley Charlie Egan Chris Jones Chris Palmer Christopher Giffard Dan Abrams Daniel Collin Derek Morr Eugene Bulkin Henri Sivonen Jakub “Limeth” Hlusička Jonathan Turner Jordan Henderson Jupp Müller Justin Ossevoort Karl Hobley Keith Gray Kilian Rault Lachlan Collins Luca Schmid Matt Rudder Matthew Piziak Max Jacobson Micael Bergeron Ovidiu Curcan Pascal Hertleif Patrick O’Doherty Peter Tillemans Philipp Keller Ralph Giles (“rillian”) Raph Levien reddraggone9 Steven Murawski Stuart Hinson Ty Overby Tyler Harper Vesa Kaihlavirta Warren Harper 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: [email protected] Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

May 30, 201725 min

Interview 4 – Jonathan Turner: Part 1

Getting to Rust Background, TypeScript, coming to Rust, and how helpful the Rust community can be. Show Notes On Jonathan's programming backstory: TI-99/4A Commodore 64 Cray Chapel TypeScript Yehuda Katz ECMAScript Language Committee Data locality CPPCast BASIC Pascal Ultima After the transition to working on Rust full-time: Improving the error messages— design issue Jonathan's personal blog post "Helping with the Rust Errors" Official Rust blog post announcing and describing the feature, "Shape of Errors to Come" Elm error list issue Sponsors Anthony Deschamps Anthony Scotti Aleksey Pirogov Andreas Fischer Andrew Thompson Austin LeSure Ben Whitley Charlie Egan Chris Jones Chris Palmer Christopher Giffard Dan Abrams Daniel Collin Derek Morr Eugene Bulkin Henri Sivonen Jakub "Limeth" Hlusička Jonathan Turner Jordan Henderson Jupp Müller Justin Ossevoort Karl Hobley Keith Gray Kilian Rault Lachlan Collins Luca Schmid Matt Rudder Matthew Piziak Max Jacobson Micael Bergeron Ovidiu Curcan Pascal Hertleif Patrick O'Doherty Peter Tillemans Philipp Keller Ralph Giles ("rillian") Raph Levien reddraggone9 Steven Murawski Stuart Hinson Ty Overby Tyler Harper Vesa Kaihlavirta Warren Harper 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: [email protected] Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

May 1, 201722 min

CYSK: RLS

Where the RLS came from, what it can do, and how you can start using it today! Notes One major ergonomic improvement to developing in Rust in 2017 is coming via the Rust Language Service: an initiative that lets us share a common core of functionality between every editor – from Vim to VS Code and everything in between. In today's episode, I give some background on it and talk about how you can start using it today! Links Rust Language Service repo blog posts announcement alpha 2 release first rustup release vscode-rust Language Server Protocol repo VS Code blog post implementations Sponsors Anthony Deschamps Aleksey Pirogov Andreas Fischer Andrew Thompson Austin LeSure Ben Whitley Charlie Egan Chris Jones Chris Palmer Christopher Giffard Dan Abrams Daniel Collin Derek Morr Eugene Bulkin Jakub "Limeth" Hlusička Jordan Henderson Jupp Müller Justin Ossevoort Karl Hobley Keith Gray Lachlan Collins Luca Schmid Matt Rudder Matthew Piziak Max Jacobson Micael Bergeron Ovidiu Curcan Pascal Hertleif Patrick O'Doherty Peter Tillemans Philipp Keller Ralph Giles ("rillian") Raph Levien reddraggone9 Steven Murawski Stuart Hinson Tyler Harper Vesa Kaihlavirta Warren Harper 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: [email protected] Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

Apr 18, 201711 min

e020: Putting code in its place

How do we organize code in Rust? Where do we break it apart into modules or crates, and why? Notes 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! Links Learning Rust Modules, by Jeff Walker, has a nice comparison of C# namespaces and Rust modules. The commit on Lightning inspired by this episode. Sponsors Aleksey Pirogov Andreas Fischer Andrew Thompson Austin LeSure Ben Whitley Charlie Egan Chris Jones Chris Palmer Christopher Giffard Dan Abrams Daniel Collin Derek Morr Eugene Bulkin Jakub "Limeth" Hlusička Jordan Henderson Jupp Müller Justin Ossevoort Karl Hobley Keith Gray Lachlan Collins Luca Schmid Matt Rudder Matthew Piziak Max Jacobson Micael Bergeron Ovidiu Curcan Pascal Hertleif Patrick O'Doherty Peter Tillemans Philipp Keller Ralph Giles ("rillian") Raph Levien reddraggone9 Steven Murawski Stuart Hinson Tyler Harper Vesa Kaihlavirta Vlad Bezden Warren Harper 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: [email protected] Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

Apr 1, 201720 min

Bonus 8: Giving back (by teaching)

On the responsibilities and opportunities we have to help others with our knowledge and abilities. Notes 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! Links Julia Evans keyof and Mapped Types in TypeScript 2.1 -- the blog post I mentioned writing a few months ago. Sponsors Aleksey Pirogov Andreas Fischer Andrew Thompson Austin LeSure Ben Whitley Charlie Egan Chris Jones Chris Palmer Christopher Giffard Dan Abrams Daniel Collin Derek Morr Eugene Bulkin Jakub "Limeth" Hlusička Jordan Henderson Jupp Müller Justin Ossevoort Karl Hobley Keith Gray Lachlan Collins Luca Schmid Matt Rudder Matthew Piziak Max Jacobson Micael Bergeron Ovidiu Curcan Pascal Hertleif Patrick O'Doherty Peter Tillemans Philipp Keller Ralph Giles ("rillian") Raph Levien reddraggone9 Steven Murawski Stuart Hinson Tyler Harper Vesa Kaihlavirta Vlad Bezden Warren Harper 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: [email protected] Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

Mar 19, 201713 min

e019: Let's `Clone` a `Cow`

code{white-space: pre;} 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! Links underhanded.rs The typess std::marker::Copy "Copy types" in the book "Stack-Only Data: Copy" in the new book 7.2.0.2 Moved and copied types: When a local variable is used as an rvalue, the variable will be copied if its type implements Copy. All others are moved. Extended example in "Traits" section of new book std::clone::Clone std::borrow::Cow Default implementations discussion in the current book discussion in the new book Supertraits from the discussion in the reference (6.1.9 Traits): Traits may inherit from other traits.... The syntax Circle : Shape means that types that implement Circle must also have an implementation for Shape. Multiple supertraits are separated by +, trait Circle : Shape + PartialEq { }. In an implementation of Circle for a given type T, methods can refer to Shape methods, since the typechecker checks that any type with an implementation of Circle also has an implementation of Shape... discussion of trait "inheritance" in the book discussion of trait super- and subtyping in the new book (note: still to-be-written at the time this episode was published) Marker traits std::marker in the reference: 9 Special Traits Previous episodes on traits: e008: Just like something else e009: Composing a Rustic tune 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 Murawski 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 Venmo Dwolla Cash.me Flattr PayPal.me Contact New Rustacean: Twitter: @newrustacean Email: [email protected] Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

Feb 28, 201718 min

CYSK: clap

A Command-Line Argument Parser. Links crates.io docs.rs GitHub videos book YAML: example from clap YAML associated Rust implementation example from lightning-rs: YAML associated Rust implementation Sponsors 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 Murawski 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 Venmo Dwolla Cash.me Flattr PayPal.me Contact New Rustacean: Twitter: @newrustacean Email: [email protected] Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

Feb 15, 201710 min

e018: `Borrow`, `AsRef`, `Deref`: my head hurts now

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. Links AsRef, Borrow, and Deref: Borrow and AsRef in The Rust Programming Language collections::borrow::Borrow std::convert::AsRef std::ops::Deref persistent data structures "Rust and Rest" – Arnin Roacher sentry-cli Particularly relevant previous episodes: e008: Just like something else e009: Composing a Rustic tune e017: Point me where I need to go interview::2: Raph Levien Sponsors Aleksey Pirogov Andreas Fischer Andrew Thompson 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 Murawski 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: [email protected] Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

Jan 31, 201717 min

CYSK: quick-xml

A pull-parser for reading and writing XML. Links crates.io docs.rs GitHub syntax highlighting – example from lightning-rs 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 Murawski 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: [email protected] Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

Jan 9, 20178 min

News 2: Let's talk roadmap!

Rust’s achievements in 2016 and goals for 2017 Links Rust releases: 1.10: blog post | release notes 1.11: blog post | release notes 1.12: blog post | release notes 1.12.1: blog post 1.13: blog post | release notes 1.14: blog post | release notes Rust 2017 roadmap RFC text RFC discussion Other official Rust blog posts: Shape of errors to come Incremental compilation Milestone: beta Milestone: across crates Milestone: in typechecking Cargo workspaces: Original RFC and discussion Documentation Rust Language Service: Announcement post on internals.rust-lang.org Demo Non-core projects mentioned on the show: Futures Tokio Rocket My projects Lightning RFC #1636: text discussion tracking issue (where you can contribute!) 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 Murawski 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: [email protected] Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

Dec 29, 201621 min

Meta 1 – Slowing Down

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! Become a sponsor Patreon Venmo Dwolla Cash.me Flattr PayPal.me Follow New Rustacean: Twitter: @newrustacean App.net: @newrustacean Email: [email protected] Chris Krycho Twitter: @chriskrycho

Nov 12, 20167 min

Interview 3 – Carol (Nichols || Goulding)

Carol (Nichols || Goulding) on learning Rust, teaching Rust, and building community NotesChris 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. Links XSLT (XML Style Sheet Transformations) Rspec Rails Think Through Math — remedial math tutoring app built with Rails Rust for Rubyists The Rust Programming Language Julia Evans RustConf 2016 keynote Rust by Example Rustlings SASS language Carol’s in-progress implementation #rust-community — open meetings at 4pm UTC every Wednesday, with minutes available online first Rust community survey Rust community on GitHub new version of the book on GitHub — you can help, and especially if you’re new, because Steve and Carol both need input to deal with the “familiarity”/“curse of knowledge” problem ownership and borrowing chapters RustConf RustFest Rust Belt Rust — October 27–28, 2016. Don’t forget to use code newrustacean to get 20% off of your registration cost! Integer32 Panoptics – nickel-jwt: crate | docs | source Jake (Nichols || Goulding) on Stack Overflow Friends of the Tree Friends of the Forest Working Effectively With Legacy Code Tilde The C Programming Language – the book Carol compared The Rust Programming Language to in terms of its responsibilities, and also one of the books from which Chris learned C. 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 Murawski 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 Venmo Dwolla Cash.me Flattr PayPal.me Contact New Rustacean: Twitter: @newrustacean Email: [email protected] Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

Sep 30, 201647 min

Bonus 7: Katas—or: learning by doing

Katas—or: learning by doing Notes 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. Links AreWeGameYet AreWeIDEYet AreWeWebYet Setting our vision for the 2017 cycle Incremental Compilation cargo-incremental: internals post repo Elm Dave Thomas’ CodeKata Crates I used in my Rust “kata”: Hyper docs crate repo Serde docs crate repo Pencil (inspired by Flask) docs crate repo handlebars-rust: docs crate repo 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 Murawski 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 Venmo Dwolla Cash.me Flattr PayPal.me Contact New Rustacean: Twitter: @newrustacean Email: [email protected] Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

Sep 10, 201610 min

Bonus 6: It doesn‘t have to be sexy

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 Murawski 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 Venmo Dwolla Cash.me Flattr PayPal.me Contact New Rustacean: Twitter: @newrustacean Email: [email protected] Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

Aug 20, 201611 min

e017: Point me where I need to go

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. Links “Inside the Fastest Font Renderer in the World” The Rust Platform: original blog post Rust internals discussion Reddit discussion Hacker News discussion follow-up Reddit discussion Cargo vendoring support in nightly MIR on by default in nightly References and dereferencing: The Rust Programming Language: References and Borrowing Deref coercions Rust by Example: Flow Control: pointers/ref The Rust Reference: Unary Operator Expressions Pointer Types 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 Murawski 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 Venmo Dwolla Cash.me Flattr PayPal.me Contact New Rustacean: Twitter: @newrustacean Email: [email protected] Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

Aug 8, 201617 min

e016: RefCells and code smells

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! Links Rust 1.10 blog post full release notes cdylib RFC: text | discussion implementation rustup 0.3.0 release Integer32 (Carol Nichols’ and Jake Goulding’s new Rust consultancy) announcement blog post reddit discussion IntelliJ Rust reddit discussion Tango: source | talk Cell and RefCell: Cell Types in The Rust Programming Language Standard library: std::cell module docs (detailed explanation, complementary to the book) Cell<T> docs (at std::cell::Cell) RefCell<T> docs (at stc::cell::RefCell) 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 Venmo Dwolla Cash.me Flattr PayPal.me Contact New Rustacean: Twitter: @newrustacean Email: [email protected] Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

Jul 23, 201618 min

Interview 2::Part 2 – Raph Levien

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. Links Rust/Ruby bridge: Helix blog post GitHub Rust Bridge project Ropes original paper Rust implementation C++ implementation Yehuda Katz on Code Newbie Creating Ember JS - Part I Creating Ember JS - Part II Rust and Swift (xi): Hopes for the next generation of systems programming. 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 Venmo Dwolla Cash.me Flattr PayPal.me Contact New Rustacean: Twitter: @newrustacean Email: [email protected] Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

Jul 4, 201619 min

Interview 2::Part 1 – Raph Levien

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. Links Past work: GIMP GTK GhostScript Google Web Fonts Current projects: font-rs pulldown-cmark Xi Editor fuzz testing sanitizers FreeType HarfBuzz ICU Ropes Wikipedia summary original paper “log n operation”, or O(log n) Big O notation Rust: [Arc] [RefCell] [Borrow] [AsRef] Rust libraries [Crossbeam] [Rayon] Unix philosophy The Unix philosophy emphasizes building simple, short, clear, modular, and extensible code that can be easily maintained and repurposed by developers other than its creators. The Unix philosophy favors composability as opposed to monolithic design. 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 Venmo Dwolla Cash.me Flattr PayPal.me Contact New Rustacean: Twitter: @newrustacean Email: [email protected] Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

Jun 25, 201628 min

e015: Not dumb pointers

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. Links RustConf Rust Belt Rust Conference sessions Rusty Radio feed Rust Exercism track All exercism language tracks 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 Venmo Dwolla Cash.me Flattr PayPal.me Contact New Rustacean: Twitter: @newrustacean Email: [email protected] Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

Jun 18, 201620 min

News 1: One year and counting

A year in, Rust is changing fast but still stable. Links Rust 1.9 blog post release notes LLVM Projects built with LLVM Wikipedia discussion MIR blog post play.rust-lang.org – note the MIR button! Two enhancements enabled by MIR: Non-zeroing dynamic drop RFC pull request and discussion Issue 811: “Non-lexical borrow scopes and better treatment of nested method calls” Cargo blog post rustup blog post install from rustup.rs Sponsors Aleksey Pirogov 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 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 Venmo Dwolla Cash.me Flattr PayPal.me Contact New Rustacean: Twitter: @newrustacean Email: [email protected] Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

May 31, 201626 min

Bonus 5: Better than open-source contributions

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. Links Xi editor Rust survey Expecting people to do open-source work Python Testing 18: Testing in Startups and Hiring Software Engineers with Joe Stump Tweet about it by Joe Stump Sponsors Aleksey Pirogov 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 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 Venmo Dwolla Cash.me Flattr PayPal.me Contact New Rustacean: Twitter: @newrustacean Email: [email protected] Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

May 10, 201611 min

e014: Stringing things along

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 Venmo Dwolla Cash.me Flattr Contact New Rustacean: Twitter: @newrustacean Email: [email protected] Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

Apr 26, 201618 min

Bonus 4: We can have nice things

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. Links Rust 1.8 blog post Fake build tool in F♯ HackerNews on Rust 1.8 Someone using it for personal projects Using it in place of scripting languages “Feels like Python, runs like C” 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 Venmo Dwolla Cash.me Contact New Rustacean: Twitter: @newrustacean Email: [email protected] Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

Apr 19, 201610 min

e013: Staying alive

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. Links Diesel Tutorial API docs Mio, an I/O library Getting Started API Docs 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 Venmo Dwolla Cash.me Contact New Rustacean: Twitter: @newrustacean Email: [email protected] Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

Apr 4, 201617 min

e012: I'm not familiar with that expression

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. Links Redox Servo alpha announcement WebRender Wired article on Dropbox Rust documentation on expression-oriented-ness: Rust Book Rust by Example Rust Reference Removing Rust ternary Digits of pi necessary for astronavigation Sponsors Aleksey Pirogov Chris Palmer Derek Morr Hamza Sheikh Lachlan Collins Leif Arne Storset Luca Schmid Micael Bergeron Pascal Ralph Giles (“rillian”) Ralph “FriarTech” Loizzo reddraggone9 Ryan Ollos William Roe Become a sponsor Patreon Venmo Dwolla Cash.me Contact New Rustacean: Twitter: @newrustacean Email: [email protected] Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

Mar 21, 201616 min

e011: Once Upon a Type

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 compileable nonsense. In a stricter and stronger type system, memory addresses and normal numbers shouldn’t be addable! Links Rust 1.7 released HashMap changes Introduction to Type Theory Visualizing Rust’s type-system The Many Kinds of Code Reuse in Rust Sponsors Aleksey Pirogov Chris Palmer Derek Morr Hamza Sheikh Lachlan Collins Leif Arne Storset Luca Schmid Micael Bergeron Pascal Ralph Giles (“rillian”) Ralph “FriarTech” Loizzo reddraggone9 Ryan Ollos William Roe Become a sponsor Patreon Venmo Dwolla Cash.me Contact New Rustacean: Twitter: @newrustacean Email: [email protected] Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

Mar 8, 201617 min

Interview 1::Part 2 – Sean Griffin

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 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. Links fmap Discussion of fmap with Optional in Swift In Haskell Rust: Trait objects Specialization RFC Implementation Diesel 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: [email protected] Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

Feb 25, 201622 min

Interview 1::Part 1 – Sean Griffin

Sean Griffin on Rust, ORMs, and Web Frameworks 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. Links Ruby on Rails Active Record Diesel GitHub Gitter The Bike Shed episodes which include talk of Rust and Diesel 51: Is Sim City Still Running (with Steve Klabnik) 49: A More Practical Haskell 48: Is Everyone Trying Their Best? 46: Don't Breath, Save the Planet 44: It Won't Crash... It Might Crash 39: Okay With Instability 32: Bug for Bug Compatibility 31: Oxidizing an ORM 27: I've Got 29.97 Problems (and codecs are some) 23: Why Did They Call It Rust? Maybe Haskell 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: [email protected] Chris Krycho GitHub: chriskrycho Twitter: @chriskrycho

Feb 15, 201624 min

Bonus 3: Building as a community

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 Venmo Dwolla Cash.me Follow New Rustacean: Twitter: @newrustacean App.net: @newrustacean Email: [email protected] Chris Krycho Twitter: @chriskrycho App.net: @chriskrycho

Feb 1, 201612 min

e010: Macros rule!

Macros rule! NotesBecause 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. Links Rust book: Macros Rust by Example: Macros Rust reference: Macros “Macro by Example” (original paper) Nick Cameron: Macros Macros in Rust Part 1: macro_rules! Part 2: procedural macros Part 3: hygiene Part 4: scoping and import/export Part 5: current problems and possible solutions Part 6: more issues with macro_rules! concat_idents and macros in ident positions Macro plans, overview Macro hygiene in all its guises and variations Sets of scopes macro hygiene Macro plans: syntax Procedural macros, framework Sponsors Aleksey Pirogov Chris Palmer Derek Morr Hamza Sheikh Luca Schmid Micael Bergeron Ralph Giles (“rillian”) reddraggone9 William Roe Become a sponsor Patreon Venmo Dwolla Cash.me Follow New Rustacean: Twitter: @newrustacean App.net: @newrustacean Email: [email protected] Chris Krycho Twitter: @chriskrycho App.net: @chriskrycho

Jan 18, 201616 min

e009: Composing a Rustic tune

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 Venmo Dwolla Cash.me Follow New Rustacean: Twitter: @newrustacean App.net: @newrustacean Email: [email protected] Chris Krycho Twitter: @chriskrycho App.net: @chriskrycho

Jan 9, 201617 min

e008: Just like something else

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. Links Rust Book Generics Traits – includes a discussion of trait bounds and generic traits* Rust by Example Generics Traits Generic traits Traits bounds Generics and traits in use in Diesel Sponsors Chris Palmer Derek Morr Luca Schmid Micael Bergeron Ralph Giles (“rillian”) reddraggone9 William Roe Become a sponsor Patreon Venmo Dwolla Cash.me Follow New Rustacean: Twitter: @newrustacean App.net: @newrustacean Email: [email protected] Chris Krycho Twitter: @chriskrycho App.net: @chriskrycho

Dec 27, 201517 min

e007: Testify

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. Links Rust Book: Testing Attributes Benchmark tests Rust reference: Attributes Diesel (Rust ORM) 31: Oxidizing an ORM 32: Bug for Bug Compatibility Sponsors Chris Palmer Derek Morr Luca Schmid Micael Bergeron Ralph Giles (“rillian”) reddraggone9 William Roe Become a sponsor Patreon Venmo Dwolla Cash.me Follow New Rustacean: Twitter: @newrustacean App.net: @newrustacean Email: [email protected] Chris Krycho Twitter: @chriskrycho App.net: @chriskrycho

Dec 13, 201518 min

Bonus 2: Legacy Code

Legacy 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 Venmo Dwolla Cash.me Follow New Rustacean: Twitter: @newrustacean App.net: @newrustacean Email: [email protected] Chris Krycho Twitter: @chriskrycho App.net: @chriskrycho

Dec 6, 20159 min

Bonus 1: Polyglot Programming Promises and Perils

Polyglot Programming Promises and Perils Sometimes, you’re doing a technical interview, and you just cannot figure out why your JavaScript function isn’t behaving like it should… and then, prompted by the interviewer, you realize that you’re not returning anything. Polyglot programming is beautiful, and wonderful, and sometimes it bites you when you aren’t looking. Links Scala F♯ Elixir Sponsors reddraggone9 Chris Patti Become a sponsor Patreon Venmo Dwolla Cash.me Follow New Rustacean: Twitter: @newrustacean App.net: @newrustacean Email: [email protected] Chris Krycho Twitter: @chriskrycho App.net: @chriskrycho

Nov 25, 20158 min

e006: Modularize this!

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. Links Roguelike in Rust Yehuda Katz on Ruby FFI Sponsors reddraggone9 Chris Patti Become a sponsor Patreon Venmo Dwolla Cash.me Follow New Rustacean: Twitter: @newrustacean App.net: @newrustacean Email: [email protected] Chris Krycho Twitter: @chriskrycho App.net: @chriskrycho

Nov 16, 201518 min

e005: Allocate it where?

Allocate it where? Subject: Returning functions from other functions, and thinking about the stack, the heap, and reference types. MP3 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. Links Rust 1.4 release announcement “Clarify (and improve) rules for projections and well-formedness” MSVC support tracking issue Rust 1.4 full release notes “What and where are the stack and the heap?” Sponsors reddraggone9 Chris Patti Become a sponsor Patreon Venmo Dwolla Cash.me Follow New Rustacean: Twitter: @newrustacean App.net: @newrustacean Email: [email protected] Chris Krycho Twitter: @chriskrycho App.net: @chriskrycho

Nov 8, 201518 min

e004: Functionalized

Date: October 29, 2015 Subject: 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 Dwolla Email: [email protected] Chris Krycho Twitter: @chriskrycho App.net: @chriskrycho

Oct 30, 201517 min

e003: No. more. nulls.

No More Nulls Subject: Enumerated (enum) types, pattern matching, and meaningful return types. 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: RelatedishThings demonstrate_basic_enumeration demonstrate_match get_an_option demonstrate_option get_a_result demonstrate_result Links New Rustacean Pull Request #1 Work on IDE support! Landing page My chosen tool: JetBrains/IntelliJ Rustlings Rust FFI Omnibus Follow/Support New Rustacean: Twitter: @newrustacean App.net: @newrustacean Patreon Email: '+e+''); // --> hello at newrustacean dot com Chris Krycho Twitter: @chriskrycho App.net: @chriskrycho

Oct 21, 201516 min