Rust 1.26

Пятница, 11 мая 2018 г.

Следите за нами в ВКонтакте, Телеграм'e и Twitter'e

Команда языка Rust рада представить новую версию Rust 1.26.0. Rust — системный язык программирования, ориентированный на безопасность, скорость и параллелизацию.

Обновить Rust можно с помощью команды:

curl https://sh.rustup.rs -sSf | sh # если у вас еще не установлен rustup rustup update stable

Основные изменения:

Вторая редакция книги «The Rust Programming Language» (почти) готова, и теперь рекомендована по умолчанию для ознакомления вместо первой версии. Также готовится к выходу бумажное издание книги.
impl Trait в заголовках функций

Стало возможно указывать Trait в заголовке функции в качестве типа возвращаемого значения:

fn foo() -> impl Iterator { // ... } Это позволяет не указывать полный тип в заголовке функции, если с точки зрения API конкретный тип не имеет значения. Такой синтаксис подразумевает статическую диспетчеризацию, в отличие от Box.

Также эта возможность удобна для использования с замыканиями (closures):

fn foo() -> impl Fn(i32) -> i32 { |x| x + 1 }

Новый синтаксис теперь можно использовать и для типов аргументов фунции:

// раньше нужно было писать так: fn foo(x: T) { // сейчас можно так: fn foo(x: impl Trait) {
Неявное разыменование ссылок в шаблонах подстановки (match, if let, …)

Теперь следующий код больше не вызывает ошибку компиляции:

fn hello(arg: &Option) { match arg { Some(name) => println!("Hello {}!", name), None => println!("I don"t know who you are."), } } и эквивалентен такому:

fn hello(arg: &Option) { match arg { &Some(ref name) => println!("Hello {}!", name), &None => println!("I don"t know who you are."), } } То же работает и для &mut + ref mut.
Раскрытие срезов (slice) в шаблонах подстановки

fn foo(s: &[u8]) { match s { [a, b] => (), [1, _, _] => (), _ => (), } }
Закрытые интервалы вида 0..=4, включающие обе границы в диапазон перечисления

for i in 0..=4 { println!("i: {}", i); // выведет 0, 1, 2, 3 и 4 }
Новые целочисленные типы i128 и u128



Функция main() теперь может возвращать тип Result

use std::fs::File; fn main() -> Result { let f = File::open("bar.txt")?; Ok(()) }
Ускорения в работе компилятора
Стабилизирована функция std: fs: read_to_string
При форматировании через trait Debug теперь можно выводить целочисленные значения в шестнадцатеричном виде:

assert!(format!("{:02x?}", b"Foo0") == "[46, 6f, 6f, 00]")
Номер версии Cargo, начиная с этого релиза, изменяется синхронно с номером версии Rust



>>> Подробности

Следите за нами в ВКонтакте, Телеграм'e и Twitter'e


Просмотров: 925
Рубрика: Hi-Tech


Архив новостей / Экспорт новостей

Ещё новости по теме:

RosInvest.Com не несет ответственности за опубликованные материалы и комментарии пользователей. Возрастной цензор 16+.

Ответственность за высказанные, размещённую информацию и оценки, в рамках проекта RosInvest.Com, лежит полностью на лицах опубликовавших эти материалы. Использование материалов, допускается со ссылкой на сайт RosInvest.Com.

Архивы новостей за: 2018, 2017, 2016, 2015, 2014, 2013, 2012, 2011, 2010, 2009, 2008, 2007, 2006, 2005, 2004, 2003