1.66.0
От: sergii.p  
Дата: 27.12.22 16:07
Оценка: +2 -1
вышла новая версия. Из интересного:


тонкая настройка enum

можно выставлять идентифицирующее значение для enum со значениями
#[repr(u8)]
enum Foo
{
    A(i8), B(u8), C(bool) = 42, D    
}

теперь Foo::C(false) в памяти будет представлена как [42, 0].

core::hint::black_box

Можно подсказать компилятору не оптимизировать результат выполнения какой-то операции. В основном надо для профилирования

fn push_cap(v: &mut Vec<i32>) {
    for i in 0..4 {
        v.push(i);
        black_box(v.as_ptr());
    }
}

pub fn bench_push() -> Duration { 
    let mut v = Vec::with_capacity(4);
    let now = Instant::now();
    push_cap(&mut v);
    now.elapsed()
}


здесь если не указать black_box, компилятор практически полностью выкинет код push_cap и замер будет нерелевантен.
Такой себе аналог volatile.

cargo remove

появилась возможность выкидывать пакеты (cargo add была добавлена ранее в 1.62)

диапазоны в match

добавлена поддержка диапазонов в match
let v= 42;
let i = match v{
    ..=45 => true,
    45.. => false
}


ранее приходилось несколько извращаться
let v= 42;
let i = match v{
    0..=45 => true,
    _ => false
}


почитать на английском https://blog.rust-lang.org/2022/12/15/Rust-1.66.0.html
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.