Title: This Week in Rust 84
Date: 2015-06-22
Category: This Week in Rust

Hello and welcome to another issue of *This Week in Rust*!
[Rust](http://rust-lang.org) 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](https://twitter.com/ThisWeekInRust) or [send us an
email](mailto:corey@octayn.net?subject=This%20Week%20in%20Rust%20Suggestion)!
Want to get involved? [We love
contributions](https://github.com/rust-lang/rust/wiki/Note-guide-for-new-contributors).

*This Week in Rust* is openly developed [on GitHub](https://github.com/cmr/this-week-in-rust).
If you find any errors in this week's issue, [please submit a PR](https://github.com/cmr/this-week-in-rust/pulls).

This week's edition was edited by: [Brian Anderson](https://github.com/brson), [Vikrant Chaudhary](https://github.com/nasa42), [Andrew Gallant](https://github.com/BurntSushi), and [mdinger](https://github.com/mdinger).

# From the Blogosphere

* [Exceptional results: error handling with C# and Rust](https://ruudvanasseldonk.com/2015/06/17/exceptional-results-error-handling-in-csharp-and-rust). Exceptions based error handling in C# vs Rust's monadic approach.
* [Rust Torrent](http://pietro.menna.net.br/recurse-center/rust/2015/06/19/rusty-torrent/). Pietro Menna shares his experiece of writing a BitTorrent client in Rust.
* [Exploring Rust](http://www.wilfred.me.uk/blog/2015/06/18/exploring-rust/). A brief look at state of affairs in Rust 1.0.
* [Rust using Visual Studio Code](https://mobiarch.wordpress.com/2015/06/16/rust-using-visual-studio-code/). Setup Visual Studio Code for Rust development.

# Tips & Tricks

* [How to pass a closure into a trait object](http://camjackson.net/post/rust-lang-how-to-pass-a-closure-into-a-trait-object).
* [Rust error stacktraces](http://phildawes.net/blog/2015/06/17/rust-stacktrace/). Get stacktrace from errors in production code.
* [Benchmarking in Rust with `libtest`](https://llogiq.github.io/2015/06/16/bench.html).

# In the News

* [Google Bazel added support for Rust](https://github.com/google/bazel/tree/master/tools/build_rules/rust).
* [Impala: a Rust dialect that can partially evaluate functions at compile time and produce GPU code](http://compilers.cs.uni-saarland.de/papers/ppl14_web.pdf).
* [Rust: Announcing the community subteam](https://internals.rust-lang.org/t/announcing-the-community-subteam/2248).

# New Releases & Project Updates

* [RustLex](https://github.com/LeoTestard/rustlex). Lexical analysers generator for Rust.
* [rsedis](https://github.com/seppo0010/rsedis). Redis re-implemented in Rust.
* [cargo add](https://github.com/withoutboats/cargo-add). A utility for adding cargo dependencies from the command line.
* [volley](https://github.com/jonhoo/volley). A benchmarking tool for measuring the performance of server networking stacks.
* [Rust Dispatcher](https://github.com/timonv/rdispatcher). Dispatcher for Rust, broadcast and subscribe many to many.
* [rust-vim-setup](https://github.com/ivanceras/rust-vim-setup). Use VIM as your Rust IDE - set of bash scripts and a customised `vimrc` for Rust development.
* [Herd](https://github.com/imjacobclark/herd). An experimental HTTP load testing application written in Rust.
* [MaidSafe's Rust rewrite is going well](https://forum.safenetwork.io/t/maidsafe-dev-update-8th-june-2015/4069).
* [claxon](https://github.com/ruud-v-a/claxon). A FLAC decoder.

[Rust by example](http://rustbyexample.com/) has received a number of
improvements recently:

* February 15, 2015: The [flow control
  section](http://rustbyexample.com/flow_control.html) was
  [created](https://github.com/rust-lang/rust-by-example/pull/421) to
  house all flow control operations together.
* March 21, 2015: The [formatting section](http://rustbyexample.com/hello/print.html) was
  [revised](https://github.com/rust-lang/rust-by-example/pull/496) so
  new users are immediately confronted with the distinction of `Debug`
  and `Display` and how to deal with them.
* May 2, 2015: The table of contents was
  [reorganized](https://github.com/rust-lang/rust-by-example/pull/561)
  so examples are sorted consistently by categories.
* May 23, 2015: The [generics
  section](http://rustbyexample.com/generics.html) was majorly
  [expanded](https://github.com/rust-lang/rust-by-example/pull/572).
* June 15, 2015: The [closures
  section](http://rustbyexample.com/fn/closures.html) was completely
  rewritten and
  [expanded](https://github.com/rust-lang/rust-by-example/pull/594).

# What's cooking on master?

112 pull requests were [merged in the last week][merged].

[merged]: https://github.com/issues?q=is%3Apr+org%3Arust-lang+is%3Amerged+merged%3A2015-06-15..2015-06-22

Now you can follow breaking changes *[as they happen][BitRust2]*!

[BitRust2]: http://killercup.github.io/bitrust/

# Breaking Changes

* [Don't panic when stdout doesn't
  exist](https://github.com/rust-lang/rust/pull/26168). See [RFC
  1014](https://github.com/rust-lang/rfcs/blob/master/text/1014-stdout-existential-crisis.md). This
  is breaking because it changes the behavior of stdio, but in ways
  that are expected to be less surprising. Considered a bugfix.

# Other Changes

* Thanks to Ashesh Kumar for pointing out that rust-lang.org was not
  configured with DMARC to prevent spoofing. The misconfiguration has
  now been corrected.
* [Optimize implementations of FromIterator and Extend for
  Vec](https://github.com/rust-lang/rust/pull/22681).
* [Result - Add an `expect` method that prints a message and the `Err`
  value](https://github.com/rust-lang/rust/pull/25359).
* [Break apart global unstable
  features](https://github.com/rust-lang/rust/pull/26192). Some of the
  catch-all feature names, `core`, `std_misc`, `collections`, `alloc`,
  are split into smaller, better-named features.
* The regex crate received a [rewrite that includes a big performance
  improvement](https://github.com/rust-lang/regex/pull/91).
* [Avoid deref/ref cycles for no-op conversions between unsafe
  pointers](https://github.com/rust-lang/rust/pull/26336). Reduces the
  amount of IR rustc generates.
* [Pass fat pointers in two immediate
  arguments](https://github.com/rust-lang/rust/pull/26411). More
  codegen improvements from dotdash.
* [Add FromRaw{Fd,Handle,Socket} to os
  preludes](https://github.com/rust-lang/rust/pull/26413).
* [Custom Debug impl for
  io::Error](https://github.com/rust-lang/rust/pull/26416).

# New Contributors

* David Stygstra
* Gulshan Singh
* Jake Hickey
* joliv
* Markus
* Steven Walter
* Yongqian Li

# Approved RFCs

* [Update RFC 195 to account for RFC
  246](https://github.com/rust-lang/rfcs/pull/865). Just accounting
  for the `const`/`static` distinction in the associated items RFC.
* [Clarify cast rules, especially regarding fat
  pointers](https://github.com/rust-lang/rfcs/pull/1052). Updates RFC
  401: coercions.
* [RFC 1156: Adjust default object
  bounds](https://github.com/rust-lang/rfcs/blob/master/text/1156-adjust-default-object-bounds.md). This
  is a stable breaking change (the first) to the default lifetime
  bounds of trait objects.

# Final Comment Period

Every week the teams announce a 'final comment period' for RFCs which
are close to reaching a conclusion. Express your opinions now. [This
week's][fcp] RFCs entering FCP are:

[fcp]: https://github.com/rust-lang/rfcs/pulls?q=is%3Aopen+is%3Apr+label%3Afinal-comment-period

* [Allow closure expressions to expand to a `&` or `&mut` temporary](https://github.com/rust-lang/rfcs/pull/756).
* [Allow macros in types](https://github.com/rust-lang/rfcs/pull/873).
* [read_all](https://github.com/rust-lang/rfcs/pull/980).
* [Add read_into_buf and get_buf to BufRead](https://github.com/rust-lang/rfcs/pull/1015).
* [Rename `connect` to `join`](https://github.com/rust-lang/rfcs/pull/1102).
* [Implement `FromIterator` for the unit type](https://github.com/rust-lang/rfcs/pull/1130).
* [Add some of `[T]`'s methods to strings and vice-versa](https://github.com/rust-lang/rfcs/pull/1152).

# New RFCs

* [Make `size` an associated constant](https://github.com/rust-lang/rfcs/pull/1168).

# Upcoming Events

* [6/23. Hannover](http://blog.thoughtram.io/rust/2015/06/17/anouncing-hanovers-second-rust-meetup.html)
* [6/24. Columbus Rust Society](http://www.meetup.com/columbus-rs/)
* [6/29. Sydney](http://www.meetup.com/Rust-Sydney/events/222811456/)

If you are running a Rust event please add it to the [calendar] to get
it mentioned here. Email [Erick Tryzelaar][erickt] or [Brian
Anderson][brson] for access.

[calendar]: https://www.google.com/calendar/embed?src=apd9vmbc22egenmtu5l6c5jbfc%40group.calendar.google.com
[erickt]: mailto:erick.tryzelaar@gmail.com
[brson]: mailto:banderson@mozilla.com

