Deprecated: Optional parameter $content declared before required parameter $post is implicitly treated as a required parameter in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/functions.php on line 840

Deprecated: Creation of dynamic property wpdb::$categories is deprecated in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/wp-db.php on line 668

Deprecated: Creation of dynamic property wpdb::$post2cat is deprecated in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/wp-db.php on line 668

Deprecated: Creation of dynamic property wpdb::$link2cat is deprecated in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/wp-db.php on line 668

Deprecated: Return type of WP_Theme::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/class-wp-theme.php on line 553

Deprecated: Return type of WP_Theme::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/class-wp-theme.php on line 594

Deprecated: Return type of WP_Theme::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/class-wp-theme.php on line 534

Deprecated: Return type of WP_Theme::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/class-wp-theme.php on line 543

Warning: Private methods cannot be final as they are never overridden by other classes in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/class-wp-session-tokens.php on line 69

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/comment-template.php on line 1720

Deprecated: Optional parameter $object_id declared before required parameter $taxonomy is implicitly treated as a required parameter in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/nav-menu.php on line 1060

Deprecated: Return type of WP_REST_Request::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/rest-api/class-wp-rest-request.php on line 934

Deprecated: Return type of WP_REST_Request::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/rest-api/class-wp-rest-request.php on line 954

Deprecated: Return type of WP_REST_Request::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/rest-api/class-wp-rest-request.php on line 966

Deprecated: Return type of WP_REST_Request::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/rest-api/class-wp-rest-request.php on line 977

Deprecated: Return type of WP_Block_List::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/class-wp-block-list.php on line 151

Deprecated: Return type of WP_Block_List::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/class-wp-block-list.php on line 175

Deprecated: Return type of WP_Block_List::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/class-wp-block-list.php on line 164

Deprecated: Return type of WP_Block_List::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/class-wp-block-list.php on line 186

Deprecated: Return type of WP_Block_List::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/class-wp-block-list.php on line 138

Deprecated: Return type of WP_Block_List::offsetExists($index) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/class-wp-block-list.php on line 75

Deprecated: Return type of WP_Block_List::offsetGet($index) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/class-wp-block-list.php on line 89

Deprecated: Return type of WP_Block_List::offsetSet($index, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/class-wp-block-list.php on line 110

Deprecated: Return type of WP_Block_List::offsetUnset($index) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/class-wp-block-list.php on line 127

Deprecated: Return type of WP_Block_List::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/class-wp-block-list.php on line 199

Deprecated: Optional parameter $block_name declared before required parameter $block_content is implicitly treated as a required parameter in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/blocks.php on line 405

Deprecated: Creation of dynamic property WP_REST_Autosaves_Controller::$rest_namespace is deprecated in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/rest-api/endpoints/class-wp-rest-autosaves-controller.php on line 70

Deprecated: Creation of dynamic property WP_REST_Autosaves_Controller::$rest_namespace is deprecated in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/rest-api/endpoints/class-wp-rest-autosaves-controller.php on line 70

Deprecated: Creation of dynamic property WP_REST_Autosaves_Controller::$rest_namespace is deprecated in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/rest-api/endpoints/class-wp-rest-autosaves-controller.php on line 70

Warning: Cannot modify header information - headers already sent by (output started at /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/rest-api/class-wp-rest-request.php:29) in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/rest-api/class-wp-rest-server.php on line 1378

Warning: Cannot modify header information - headers already sent by (output started at /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/rest-api/class-wp-rest-request.php:29) in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/rest-api/class-wp-rest-server.php on line 1378

Warning: Cannot modify header information - headers already sent by (output started at /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/rest-api/class-wp-rest-request.php:29) in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/rest-api/class-wp-rest-server.php on line 1378

Warning: Cannot modify header information - headers already sent by (output started at /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/rest-api/class-wp-rest-request.php:29) in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/rest-api/class-wp-rest-server.php on line 1378

Warning: Cannot modify header information - headers already sent by (output started at /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/rest-api/class-wp-rest-request.php:29) in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/rest-api/class-wp-rest-server.php on line 1378

Warning: Cannot modify header information - headers already sent by (output started at /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/rest-api/class-wp-rest-request.php:29) in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/rest-api/class-wp-rest-server.php on line 1378

Deprecated: ltrim(): Passing null to parameter #1 ($string) of type string is deprecated in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/wp-db.php on line 3008

Warning: Cannot modify header information - headers already sent by (output started at /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/rest-api/class-wp-rest-request.php:29) in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/rest-api/class-wp-rest-server.php on line 1378

Warning: Cannot modify header information - headers already sent by (output started at /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/rest-api/class-wp-rest-request.php:29) in /vhost/r/o/t/rottedfrog.co.uk/www/wp-includes/rest-api/class-wp-rest-server.php on line 1378
{"id":52,"date":"2020-10-18T14:36:47","date_gmt":"2020-10-18T14:36:47","guid":{"rendered":"http:\/\/www.rottedfrog.co.uk\/?p=52"},"modified":"2020-10-18T14:44:33","modified_gmt":"2020-10-18T14:44:33","slug":"what-id-like-from-rust-2021","status":"publish","type":"post","link":"https:\/\/www.rottedfrog.co.uk\/?p=52","title":{"rendered":"What I’d like from Rust 2021"},"content":{"rendered":"\n

I’ve been a user of Rust now for 2 years. It was something of a revelation – I was amazed at how well thought out the core of the language is – many classic C++ gotchas and kludges (null pointers, double free, use after free, slicing, diamond inheritance) have been completely designed out. In that time the language and compiler has evolved rapidly, with const functions, async await, and (hopefully by the end of the year) const generics. I’m lucky enough to have been working with Rust full time for most of the last 2 years, building an exchange for a fintech startup. As such performance is a key goal, and the reason we picked Rust over Java or Go. We are very happy with the choice, but there are always things we can improve on. So with that in mind. Here are my themes and priorities for what I’d like from Rust in 2021.<\/p>\n\n\n\n

1. Expressive Performance<\/h2>\n\n\n\n

Rust is already both expressive and performant, but has some way to go to match C++ yet. C++ generics are still the gold standard to beat, with specialization, const generics and higher kinded (duck) types. From the perspective of building high performance ultra low latency software, being able to express things at compile time is critical for controlling performance. Therefore I’d really like to see const generics (https:\/\/github.com\/rust-lang\/rust\/issues\/44580<\/a>), specialization (https:\/\/github.com\/rust-lang\/rust\/issues\/31844<\/a>), and GATs (https:\/\/github.com\/rust-lang\/rust\/issues\/44265<\/a>) to be pushed forward in 2021.<\/p>\n\n\n\n

2. Rust and Rust Analyser, together forever <3<\/h2>\n\n\n\n

Rust analyser is awesome, in particular the pace of development is a sight to behold. But it’s are still not quite aligned with Rust. I’d love to see both the rust analyser team and rustc team push forward on the work (like chalk integration in rustc) that would help bring rust-analyser towards full parity with rustc.<\/p>\n\n\n\n

I often still have issues with rust analyser not working on my large workspace, whereas when I open up a simple project, it’s flawless. I have yet to work out exactly what causes this, but it feels like it needs some work on large workspaces.<\/p>\n\n\n\n

3. Scaling Cargo<\/h2>\n\n\n\n

I love Cargo – partly because it’s not (C)Make, but mostly because it makes building rust code so extremely simple. However it has some issues as codebases scale up and get more complex. Larger codebases can use multiple languages, sometimes more than one toolchain and pre or post build processing. Not every tool was designed to work seamlessly with rust and cargo, not should we expect it to.<\/p>\n\n\n\n