TGViewer
Блог* Блог* @dereference_pointer_there · 1.98K subscribers
Post #10830 969
#prog #rust #rustreleasenotes

Вышла версия Rust 1.94.0! Как всегда, тут только то, что интересно мне, остальное в детальных заметках о релизе.

▪️Атрибуты для линта dead_code (allow/warn/deny/expect) на трейтах и их частях теперь наследуются impl-ами:

#[allow(dead_code)]
trait Foo {
const FOO: u32;
}

impl Foo for u32 {
const FOO: u32 = roundtrip(0);
}

// нет предупреждения о мёртвом коде
const fn roundtrip(x: u32) -> u32 {
x
}


▪️Касты между сырыми указателями на unsized типы с указанием лайфтаймов теперь требуют, чтобы предыдущий тип жил не меньше нового. Или, иными словами, каст из *mut dyn Trait + 'a в *mut dyn Trait + 'b теперь требует 'a: 'b

▪️Стабилизировали array_windows! Украду пример прямо из блогпоста:

For example, part of one 2016 Advent of Code puzzle is looking for ABBA patterns: "two different characters followed by the reverse of that pair, such as xyyx or abba." If we assume only ASCII characters, that could be written by sweeping windows of the byte slice like this:


fn has_abba(s: &str) -> bool {
s.as_bytes()
.array_windows()
.any(|[a1, b1, b2, a2]|
(a1 != b1)
&& (a1 == a2)
&& (b1 == b2)
)
}


Благодаря выводу типов ещё и размер, как правило, не нужно указывать на методе явно.

▪️LazyCell и LazyLock обзавелись методами get, get_mut и force_mut.

▪️Для iter::Peekable добавили методы next_if_map и next_if_map_mut. Пример из документации:

let mut iter = "125 GOTO 10".chars().peekable();
let mut line_num = 0_u32;
while let Some(digit) = iter.next_if_map(|c| c.to_digit(10).ok_or(c)) {
line_num = line_num * 10 + digit;
}
assert_eq!(line_num, 125);
assert_eq!(iter.collect::<String>(), " GOTO 10");


▪️cargo теперь использует для парсинга манифестов наконец-то вышедшую версию TOML 1.1. С практической точки зрения это главным образом означает, что inline-таблицы можно писать на нескольких строках и с запятой после — или, иными словами, зависимость в Cargo.toml с большим количеством фичей теперь можно писать среди остальных и не пихать её в одну длинную строку.

▪️Ещё стабилизация: cargo теперь позволяет разбить конфиг на несколько файлов и объединить их при помощи top-level ключа include (документация).
  • 👍 5
More from @dereference_pointer_there
  1. Oct 8, 2026#meme про... Свиней
  2. Oct 8, 2026💩
  3. Oct 8, 2026BTW через 4 часа заканчивается распродажа в Steam
  4. Oct 7, 2026#meme про jab
  5. Oct 7, 2026"Famous car"
  6. Oct 7, 2026photo post
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →