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
Разное
Примечания по поводу совместимости
>>> Подробности