Hello and welcome to another issue of This Week in Rust! Rust is a systems language pursuing the trifecta: safety, concurrency, and speed. This is a weekly summary of its progress and community. Want something mentioned? Tweet us at @ThisWeekInRust or send us a pull request. Want to get involved? We love contributions.
This Week in Rust is openly developed on GitHub. If you find any errors in this week's issue, please submit a PR.
Updates from Rust Community
News & Blog Posts
- 🎈🎉 Announcing Rust 1.33.0. 🎉🎈
- Building fast interpreters in Rust.
- Implications of rewriting a browser component in Rust.
- 24 hours of game development in Rust.
- Proposal: New channels for Rust's standard library.
- Async-await status report.
- Up and Running with React + Rust + Wasm.
- Exposing FFI from the Rust library.
- This week in Rust and WebAssembly 12.
Crate of the Week
This week's crate is multi_try, a crate to simplify working with multiple results. Thanks to Azriel Hoh for the suggestion!
Submit your suggestions and votes for next week!
Call for Participation
Always wanted to contribute to open-source projects but didn't know where to start? Every week we highlight some tasks from the Rust community for you to pick and get started!
Some of these tasks may also have mentors available, visit the task page for more information.
- LambdAle (FP conference): CfP is now open.
- Rust: Erroneous compilation failure with associated constant.
- TiKV: Break up TiKV into multiple dependencies.
- TiKV: Build with dylibs instead of rlibs.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
195 pull requests were merged in the last week
- Support defining C compatible variadic functions
- Fix C-variadic function printing
- Add support for using a jobserver with Rayon
- Stabilize
unrestricted_attribute_tokens
- Include bounds from promoted constants in NLL
- NLL: Type check operations with pointer types
- NLL: Remove
LiveVar
- Self-Profiler: Make the profiler faster/more efficient
- Normalize the type
Self
resolves to in an impl - Use internal iteration in all methods of
Filter
andFilterMap
Approved RFCs
Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation this week:
No RFCs were approved this week.
Final Comment Period
Every week the team announces the 'final comment period' for RFCs and key PRs which are reaching a decision. Express your opinions now.
RFCs
No RFCs are currently in final comment period.
Tracking Issues & PRs
- [disposition: merge] Add FromStr impl for NonZero types.
- [disposition: merge] Cosmetic changes to compiler comments and docs.
New RFCs
Upcoming Events
Online
Asia Pacific
Europe
- Mar 11. Stockholm, SE - Rust Meetup Stockholm First one for 2019.
- Mar 14. Brno, CZ - Rust Brno Meetup at Masaryk University
- Mar 14. Göteborg, SE - Rust Gothenburg.
- Mar 19. Nijmegen, NL - Rust Nijmegen: Rust for the (Inter)Net - API's, HTTP/3 and Tide.
- Mar 19. Paris, FR - Paris - Rust Paris.
- Mar 20. Berlin, DE - Berlin Rust Hack and Learn.
North America
- Mar 9. 200 University Ave W, Waterloo, CN - Workshop: Introduction to Game Development in Rust.
- Mar 12. Seattle, US - Seattle Rust Meetup.
- Mar 13. Ciudad de México, MX - Study group RustMX.
- Mar 14. Columbus, US - Columbus Rust Society.
- Mar 14. Utah, US - Utah Rust monthly meetup.
- Mar 20. Vancouver, CA - Vancouver Rust meetup.
If you are running a Rust event please add it to the calendar to get it mentioned here. Please remember to add a link to the event too. Email the Rust Community Team for access.
Rust Jobs
- Tech Ambassador at Parity, Berlin, DE.
- Rust Software Consultant at Knoldus, Noida, IN.
- Summer Internship at Brave Software, San Francisco, US.
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
And again, we have two quotes for the week:
Can you eli5 why TryFrom and TryInto matters, and why it’s been stuck for so long ? (the RFC seems to be 3 years old)
If you stabilise Try{From,Into}, you also want implementations of the types in std. So you want things like impl TryFrom
for u16. But that requires an error type, and that was (I believe) the problem. u8 to u16 cannot fail, so you want the error type to be !. Except using ! as a type isn’t stable yet. So use a placeholder enum! But that means that once ! is stabilised, we’ve got this Infallible type kicking around that is redundant. So change it? But that would be breaking. So make the two isomorphic? Woah, woah, hold on there, this is starting to get crazy…
new person bursts into the room “Hey, should ! automatically implement all traits, or not?”
“Yes!” “No!” “Yes, and so should all variant-less enums!”
Everyone in the room is shouting, and the curtains spontaneously catching fire. In the corner, the person who proposed Try{From,Into} sits, sobbing. It was supposed to all be so simple… but this damn ! thing is just ruining everything.
… That’s not what happened, but it’s more entertaining than just saying “many people were unsure exactly what to do about the ! situation, which turned out to be more complicated than expected”.
– /u/Quxxy on reddit
What is the ! type?
The never type for computations that don’t resolve to a value. It’s named after its stabilization date.
– /u/LousyBeggar on reddit
Thanks to runiq and StyMaar for the suggestions!
Please submit your quotes for next week!
This Week in Rust is edited by: nasa42, llogiq, and Flavsditz.