pub ThisWeekInRust {} – Telegram
pub ThisWeekInRust {}
989 subscribers
2 photos
2.41K links
Handpicked Rust updates,
delivered to your telegram.

Contacts: @sergeysova
Reposted from: https://this-week-in-rust.org
Source code: https://github.com/sergeysova/this_week_in_rust.rs
Another: @this_week_in_react
Download Telegram
News

🎈🎉 Announcing Rust 1.31.1. 🎉🎈
https://blog.rust-lang.org/2018/12/20/Rust-1.31.1.html

Procedural macros in Rust 2018.
https://blog.rust-lang.org/2018/12/21/Procedural-Macros-in-Rust-2018.html

Tokio: A great 2018, an even better 2019.
https://tokio.rs/blog/2018-12-recap-2018/

Using C libraries un Rust: making a *-sys crate.
https://kornel.ski/rust-sys-crate

Rust asynchronous IO: from mio to coroutine.
https://github.com/Hexilee/async-io-demo

Methods for array initialization in Rust.
https://www.joshmcguigan.com/blog/array-initialization-rust/

Currying in rust Part 3 (The circle of life... aka why borrowchecker... why)!?
https://hashnode.com/post/currying-in-rust-part-3-the-circle-of-life-aka-why-borrowchecker-why-cjq3z1dd800dknds1sls4dqav

How to get better at Rust: For beginners.
https://hashnode.com/post/how-to-become-a-rust-super-developer-cjpv1ee7e000buhs2aqrdw2ym
Crate of the week: sandspiel

This week's crate is sandspiel, a WASM-powered online sandbox automaton game. Thanks to Vikrant Chaudhary for the suggestion!
Updates from core

add -Z instrument-mcount
https://github.com/rust-lang/rust/pull/57220

parallel query tweaks
https://github.com/rust-lang/rust/pull/56983

move jemalloc from rustc_driver to rustc
https://github.com/rust-lang/rust/pull/56986

uninline some debugging code and use unlikely! macro
https://github.com/rust-lang/rust/pull/57035

resolve: fix an ICE in import validation
https://github.com/rust-lang/rust/pull/57160

resolve: fix another ICE in import validation
https://github.com/rust-lang/rust/pull/57181

AST/HIR: introduce ExprKind::Err for better error recovery in the front-end
https://github.com/rust-lang/rust/pull/56999

fix new unused patch warning
https://github.com/rust-lang/cargo/pull/6494

suggest .as_ref()? instead of ? in certain circumstances
https://github.com/rust-lang/rust-clippy/pull/3561

suggest .as_ref() when appropriate for Option and Result
https://github.com/rust-lang/rust/pull/57158

tweaks to format string diagnostics
https://github.com/rust-lang/rust/pull/57140

various changes to string format diagnostics
https://github.com/rust-lang/rust/pull/57069

point to cause of fn expected return type
https://github.com/rust-lang/rust/pull/57020

codegen: make zero-sized arrays affect alignment
https://github.com/rust-lang/rust-bindgen/pull/1477

make Alloc::check_bounds_ptr private; you should use Memory::check_bounds_ptr instead
https://github.com/rust-lang/rust/pull/57129

add Unpin to std prelude, not just core
https://github.com/rust-lang/rust/pull/57137

remove the private generic NonZero wrapper type
https://github.com/rust-lang/rust/pull/57133

stabilize Duration::{as_millis, as_micros, as_nanos}
https://github.com/rust-lang/rust/pull/57124

make the getter for NonZero types into a const fn
https://github.com/rust-lang/rust/pull/57167

make tm struct members public
https://github.com/rust-lang/libc/pull/1183

testsuite: require failing commands to check output
https://github.com/rust-lang/cargo/pull/6497
Crate of the week: Dose Response

This week's crate is Dose Response, an online-playable roguelike game with a probably bleak outcome. Thanks to Vikrant Chaudhary for the suggestion!
Updates from core

implement the Re-rebalance coherence RFC
https://github.com/rust-lang/rust/pull/56145

forbid recursive impl trait
https://github.com/rust-lang/rust/pull/56074

allow to dispatch fn traits depending on number of parameters
https://github.com/rust-lang/rust/pull/55986

rustc: fix regression where jemalloc isn't used
https://github.com/rust-lang/rust/pull/57287

syntax: fix regression in diagnostics for patterns in trait method parameters
https://github.com/rust-lang/rust/pull/57251

resolve: simplify treatment of ambiguity errors
https://github.com/rust-lang/rust/pull/57199

calculate privacy access only via query
https://github.com/rust-lang/rust/pull/57343

privacy: fix regression in impl reachability
https://github.com/rust-lang/rust/pull/57344

tweak unicode escape diagnostics
https://github.com/rust-lang/rust/pull/57210

suggest using raw identifiers in 2018 edition when using keywords
https://github.com/rust-lang/rust/pull/57209

do not complain about missing crate named as a keyword
https://github.com/rust-lang/rust/pull/57208

use structured suggestions for nonexistent fields
https://github.com/rust-lang/rust/pull/57047

use structured suggestion for method calls
https://github.com/rust-lang/rust/pull/57291

add specific diagnostic when attempting to transmute between equal generic types
https://github.com/rust-lang/rust/pull/57044

don't emit Unevaluated from const_eval
https://github.com/rust-lang/rust/pull/56723

make CompileController thread-safe
https://github.com/rust-lang/rust/pull/57308

NLL: user type annotations refactor, associated constant patterns and ref bindings
https://github.com/rust-lang/rust/pull/55937

universes
https://github.com/rust-lang/rust/pull/55517

rustdoc: force binary filename for compiled doctests
https://github.com/rust-lang/rust/pull/57338

improve Box<T> → Pin<Box<T>> conversion
https://github.com/rust-lang/rust/pull/57313

eliminate Receiver::recv_timeout panic
https://github.com/rust-lang/rust/pull/56827

VaList::copy should not require a mutable ref
https://github.com/rust-lang/rust/pull/57311

add duration constants
https://github.com/rust-lang/rust/pull/57375

NLL: fix bug in associated constant type annotations
https://github.com/rust-lang/rust/pull/57304

make sure feature gate errors are recoverable
https://github.com/rust-lang/rust/pull/57272

cargo: fix error message when resolving dependencies
https://github.com/rust-lang/cargo/pull/6510
News

Rust cheat sheet for beginners.
https://www.breakdown-notes.com/make/load/rust_cs_canvas/true

Deriving traits in Rust with procedural macros.
https://naftuli.wtf/2019/01/02/rust-derive-macros/

Using Rust for Gamedev.
https://medium.com/@michelotti.matthew/using-rust-for-gamedev-2f60b0e4cc5c

Are we async yet?
https://areweasyncyet.rs/

Building a JS interpreter in Rust part 2.
https://jason-williams.co.uk/building-a-js-interpreter-in-rust-part-2

New Rustacean interview: Carol Nichols || Goulding and Jake Goulding. Talking with Carol and Jake about The Rust Programming Language, Rust in Motion, and Rust Belt Rust.
https://newrustacean.com/show_notes/interview/integer32/
Crate of the week: gfx-hal

This week's crate is gfx-hal, a hardware abstraction layer for gfx-rs. Thanks to Vikrant Chaudhary for the suggestion!
Updates from core

add miri to rustup
https://github.com/rust-lang/rustup.rs/pull/1606

fix undefined behavior
https://github.com/rust-lang/rust/pull/57511

resolve: mark extern crate items as used in more cases
https://github.com/rust-lang/rust/pull/57557

clarify resolve typo suggestion
https://github.com/rust-lang/rust/pull/57477

privacy: fix private-in-public check for existential types
https://github.com/rust-lang/rust/pull/57556

tweak output of type mismatch between "then" and else if arms
https://github.com/rust-lang/rust/pull/57381

use structured suggestion when casting a reference
https://github.com/rust-lang/rust/pull/57493

use structured suggestions for nonstandard style lints
https://github.com/rust-lang/rust/pull/57387

point at match discriminant on type error in match arm pattern
https://github.com/rust-lang/rust/pull/57366

const-stabilize const_int_ops + const_ip
https://github.com/rust-lang/rust/pull/57234

don't actually create a full MIR stack frame when not needed
https://github.com/rust-lang/rust/pull/57351

speed up item_bodies for large match statements involving regions
https://github.com/rust-lang/rust/pull/57494

change String to &'static str in ParseResult::Failure
https://github.com/rust-lang/rust/pull/57461

parallelize and optimize parts of HIR map creation
https://github.com/rust-lang/rust/pull/57232

stabilize cfg_target_vendor
https://github.com/rust-lang/rust/pull/57465

stabilize cfg_attr_multi
https://github.com/rust-lang/rust/pull/57332

stabilize core::convert::identity
https://github.com/rust-lang/rust/pull/57322

stabilize let bindings and destructuring in constants and const fn
https://github.com/rust-lang/rust/pull/57175

clean up and optimize OpenTask / read_index
https://github.com/rust-lang/rust/pull/57114

NLL: add union justifications to conflicting borrows
https://github.com/rust-lang/rust/pull/57102

fix and optimize query profiling
https://github.com/rust-lang/rust/pull/57095

make TokenStream less recursive
https://github.com/rust-lang/rust/pull/57004

replace LockCell with atomic types
https://github.com/rust-lang/rust/pull/56614

make more passes incremental
https://github.com/rust-lang/rust/pull/51487

librustc_mir: fix ICE with slice patterns
https://github.com/rust-lang/rust/pull/57538

don't unwrap unexpected tokens in format!
https://github.com/rust-lang/rust/pull/57522

stabilize uniform_paths
https://github.com/rust-lang/rust/pull/56759

stabilize irrefutable if-let and while-let patterns
https://github.com/rust-lang/rust/pull/57535

stabilize if_while_or_patterns
https://github.com/rust-lang/rust/pull/57532

std: render large exit codes as hex on Windows
https://github.com/rust-lang/rust/pull/57473

add #[must_use] to Iterator and Future
https://github.com/rust-lang/rust/pull/57549

std: force Instant::now() to be monotonic
https://github.com/rust-lang/rust/pull/56988

optimise floating point is_finite (2x) and is_infinite (1.6x)
https://github.com/rust-lang/rust/pull/57353

cargo --{example,bin,bench,test} with no argument now lists all available targets
https://github.com/rust-lang/cargo/pull/6505

rustup: fix utils::copy_file for symlink
https://github.com/rust-lang/rustup.rs/pull/1521

rustdoc: allow inlining of reexported crates and crate items
https://github.com/rust-lang/rust/pull/57508
Crate of the week: ropey

This week's crate is ropey, an editable text buffer data structure. Thanks to Vikrant Chaudhary for the suggestion!
Updates from core

rustc: Remove platform intrinsics crate
https://github.com/rust-lang/rust/pull/57416

implement new literal type Err
https://github.com/rust-lang/rust/pull/57651

Better lifetime error message
https://github.com/rust-lang/rust/pull/56479

Add span for malformed doc comment
https://github.com/rust-lang/rust/pull/57784

Add "dereference boxed value" suggestion
https://github.com/rust-lang/rust/pull/57783

Suggest correct cast for struct fields with shorthand syntax
https://github.com/rust-lang/rust/pull/57769

Continue parsing after parent type args and suggest using angle brackets
https://github.com/rust-lang/rust/pull/57768

Remove delay_span_bug from qualify_min_const_fn
https://github.com/rust-lang/rust/pull/57736

Use structured suggestion to surround struct literal with parenthesis
https://github.com/rust-lang/rust/pull/57725

Point at cause for expectation in return type type error
https://github.com/rust-lang/rust/pull/57723

Fix suggestions given mulitple bad lifetimes
https://github.com/rust-lang/rust/pull/57720

better error message for bad manifest with cargo install
https://github.com/rust-lang/cargo/pull/6560

add applicability to remaining suggestions
https://github.com/rust-lang/rust/pull/57699

use a faster early exit during region expansion
https://github.com/rust-lang/rust/pull/57697

Tweak expand_node
https://github.com/rust-lang/rust/pull/57719

simplify TokenStream some more
https://github.com/rust-lang/rust/pull/57486

redo hir::Stmt
https://github.com/rust-lang/rust/pull/57689

high priority resolutions for associated variants
https://github.com/rust-lang/rust/pull/57501

provide suggestion for invalid boolean cast
https://github.com/rust-lang/rust/pull/57481

two HIR tweaks
https://github.com/rust-lang/rust/pull/57658

librustc_metadata: pass a default value when unwrapping a span
https://github.com/rust-lang/rust/pull/57650

privacy: account for associated existential types
https://github.com/rust-lang/rust/pull/57649

use structured macro and path resolve suggestions
https://github.com/rust-lang/rust/pull/57635

unaccept extern_in_paths
https://github.com/rust-lang/rust/pull/57572

querify entry_fn
https://github.com/rust-lang/rust/pull/57573

querify local plugin_registrar_fn and proc_macro_decls_static
https://github.com/rust-lang/rust/pull/57570

modify some parser diagnostics to continue evaluating beyond the parser
https://github.com/rust-lang/rust/pull/57540

Fix poor worst case performance of set intersection
https://github.com/rust-lang/rust/pull/57043

add core::iter::once_with()
https://github.com/rust-lang/rust/pull/57579

Add is_sorted to Iterator and [T]
https://github.com/rust-lang/rust/pull/55045

add a debug_assert to Vec::set_len
https://github.com/rust-lang/rust/pull/57589

enhance Pin impl applicability for PartialEq and PartialOrd
https://github.com/rust-lang/rust/pull/57685

Change bounds on TryFrom blanket impl to use Into instead of From
https://github.com/rust-lang/rust/pull/56796

stabilize FileExt::read_exact_at/write_all_at
https://github.com/rust-lang/rust/pull/57625

rustdoc: Add option to persist doc test executables
https://github.com/rust-lang/rust/pull/56189

crates.io: Reject publishing of crates that depend on an alternative registry
https://github.com/rust-lang/crates.io/pull/1589
Crate of the week: rust-analyzer

This week's crate is rust-analyzer, an experimental Rust compiler frontend for IDEs. Thanks to llogiq for the suggestion!
Updates from core

enable RISC-V atomic compare and swap
https://github.com/rust-lang/rust/pull/57925

recover from parse errors in literal struct fields and incorrect float literals
https://github.com/rust-lang/rust/pull/57779

merge visitors in AST validation
https://github.com/rust-lang/rust/pull/57730

resolve: Fix span arithmetics in the import conflict error
https://github.com/rust-lang/rust/pull/57908

fix race condition when emitting stored diagnostics
https://github.com/rust-lang/rust/pull/57066

don't ICE when logging unusual types
https://github.com/rust-lang/rust/pull/57865

combine all builtin early lints
https://github.com/rust-lang/rust/pull/57726

add suggestion for moving type declaration before associated type bindings in generic arguments
https://github.com/rust-lang/rust/pull/57886

add suggestion for incorrect field syntax
https://github.com/rust-lang/rust/pull/57863

suggest removing leading left angle brackets
https://github.com/rust-lang/rust/pull/57852

add error for trailing angle brackets
https://github.com/rust-lang/rust/pull/57817

print visible name for types as well as modules
https://github.com/rust-lang/rust/pull/57802

use structured suggestion instead of notes
https://github.com/rust-lang/rust/pull/57795

explain type mismatch cause pointing to return type when it is impl Trait
https://github.com/rust-lang/rust/pull/57793

when using value after move, point at span of local
https://github.com/rust-lang/rust/pull/57294

conditionally skip two passes if their related attributes were not found
https://github.com/rust-lang/rust/pull/57691

fix evaluating trivial drop glue in constants
https://github.com/rust-lang/rust/pull/57734

const_eval: predetermine the layout of all locals when pushing a stack frame
https://github.com/rust-lang/rust/pull/57677

fix memory leak in P::filter_map
https://github.com/rust-lang/rust/pull/57667

get rid of the fake stack frame for reading from constants
https://github.com/rust-lang/rust/pull/57606

add intrinsic to create an integer bitmask from a vector mask
https://github.com/rust-lang/rust/pull/57269

un-deprecate mem::zeroed
https://github.com/rust-lang/rust/pull/57825

make MutexGuard's Debug implementation more useful
https://github.com/rust-lang/rust/pull/57703

make str indexing generic on SliceIndex
https://github.com/rust-lang/rust/pull/57604

small perf improvement for fmt
https://github.com/rust-lang/rust/pull/57537

add signed num::NonZeroI* types
https://github.com/rust-lang/rust/pull/57475

std: stabilize fixed-width integer atomics
https://github.com/rust-lang/rust/pull/57425

use pinning for generators to make trait safe
https://github.com/rust-lang/rust/pull/55704

implement optimize(size) and optimize(speed) attributes
https://github.com/rust-lang/rust/pull/55641

cargo: make incremental compilation the default for all profiles
https://github.com/rust-lang/cargo/pull/6564

rustdoc: fix ICE from loading proc-macro stubs
https://github.com/rust-lang/rust/pull/57846