Rust 1.25.0

Сегодня вышел Rust 1.25.0 (2018–03–29).
Rust это системный язык программирования, нацеленный на надёжность, скорость и параллельное выполнение.
Если вы имеете предыдущую версию Rust, установленную через rustup, для получения версии 1.25.0 достаточно ввести в терминале:
$ rustup update stable
Что нового в 1.25.0 stable
Синтаксис
- стабилизирован атрибут #[repr (align (x))]; RFC 1358
Данный атрибут позволяет указывать
выравнивание(alignment) для структур:struct Number(i32); assert_eq!(std::mem::align_of::(), 4); assert_eq!(std::mem::size_of:: (), 4); #[repr(align(16))] struct Align16(i32); assert_eq!(std::mem::align_of:: (), 16); assert_eq!(std::mem::size_of:: (), 16); - добавлена возможность указывать вложенные группы при использовании инструкции импорта
use;Раньше:
use std::fs::File; use std::io::Read; use std::path::{Path, PathBuf};Теперь:
// on one line use std::{fs::File, io::Read, path::{Path, PathBuf}}; // with some more breathing room use std::{ fs::File, io::Read, path::{ Path, PathBuf } }; - можно использовать `|` в начале ветки сопоставления.
enum Foo { A, B, C } fn main() { let x = Foo::A; match x { | Foo::A | Foo::B => println!("AB"), | Foo::C => println!("C"), } }
Компилятор
Библиотека
Стабилизированные API
- Location: column;
- ptr: NonNull;
Наиболее значимое событие — это
std::ptr::NonNull. Этот тип похож на*mut T, но является ненулевым (non-null) и ковариантным. Если вкратце,NonNullгарантирует, что никогда не будет равен null, а это означает, чтоOptionимеет тот же размер, что и> *mut T. Если вы создаете структуру данных с небезопасным кодом,NonNullзачастую будет правильным выбором для вас.Следующие функции теперь могут быть использованы в константных выражениях, т.е. например,
static MINUTE: Duration = Duration::from_secs(60);: - Duration: new;
- Duration: from_secs;
- Duration: from_millis;
- Duration: from_micros;
- Duration: from_nanos.
Cargo
Разное
Примечания по поводу совместимости
>>> Подробности
