From c8310f092aaf238e0431a4092bd1566fa9aadd71 Mon Sep 17 00:00:00 2001 From: Tatyana Date: Fri, 26 Jul 2024 11:18:14 +0000 Subject: [PATCH 1/4] Translate 2024-07-25-Rust-1.80.0.md via GitLocalize --- ru/announcements/2024-07-25-Rust-1.80.0.md | 185 +++++++++++++++++++++ 1 file changed, 185 insertions(+) create mode 100644 ru/announcements/2024-07-25-Rust-1.80.0.md diff --git a/ru/announcements/2024-07-25-Rust-1.80.0.md b/ru/announcements/2024-07-25-Rust-1.80.0.md new file mode 100644 index 0000000..ed14735 --- /dev/null +++ b/ru/announcements/2024-07-25-Rust-1.80.0.md @@ -0,0 +1,185 @@ +--- +layout: post +title: 'Rust 1.80.0: LazyCell и LazyLock, эксклюзивные паттерны в шаблонах, проверяемые имена и значения cfg' +author: The Rust Release Team +release: 'true' +--- + +The Rust team is happy to announce a new version of Rust, 1.80.0. Rust is a programming language empowering everyone to build reliable and efficient software. + +If you have a previous version of Rust installed via `rustup`, you can get 1.80.0 with: + +```console +$ rustup update stable +``` + +If you don't have it already, you can [get `rustup`](https://www.rust-lang.org/install.html) from the appropriate page on our website, and check out the [detailed release notes for 1.80.0](https://doc.rust-lang.org/nightly/releases.html#version-1800-2024-07-25). + +If you'd like to help us out by testing future releases, you might consider updating locally to use the beta channel (`rustup default beta`) or the nightly channel (`rustup default nightly`). Please [report](https://github.com/rust-lang/rust/issues/new/choose) any bugs you might come across! + +## What's in 1.80.0 stable + +### `LazyCell` and `LazyLock` + +Это «ленивые» типы, которые откладывают инициализацию своих данных до первого обращения к ним. Они похожи на типы `OnceCell` и `OnceLock`, [стабилизированные в 1.70](https://blog.rust-lang.org/2023/06/01/Rust-1.70.0.html#oncecell-and-oncelock), но с функцией инициализации, включённой в тип. Это завершает стабилизацию в стандартной библиотеке адаптированной функциональности популярных крейтов [`lazy_static`](https://crates.io/crates/lazy-static) и [`once_cell`](https://crates.io/crates/once_cell). + +`LazyLock` — потокобезопасный вариант, подходящий для таких мест, как значения `static`. Так, в примере ниже и поток, ответвившийся с помощью `spawn`, и основной поток (`scope`) увидят в точности одну и ту же длительность, поскольку `LAZY_TIME` будет инициализироваться один раз, в зависимости от того, кто первым получит доступ к статическому значению. При этом ни один из вариантов не требует знать, *как именно* его инициализировать, как в случае с `OnceLock::get_or_init`. + +```rust +use std::sync::LazyLock; +use std::time::Instant; + +static LAZY_TIME: LazyLock = LazyLock::new(Instant::now); + +fn main() { + let start = Instant::now(); + std::thread::scope(|s| { + s.spawn(|| { + println!("Thread lazy time is {:?}", LAZY_TIME.duration_since(start)); + }); + println!("Main lazy time is {:?}", LAZY_TIME.duration_since(start)); + }); +} +``` + +`LazyCell` делает то же самое без синхронизации потоков, поэтому он не реализует `Sync`, необходимый для `static`, но его можно использовать в статиках `thread_local!` (с отдельной инициализацией для каждого потока). Любой из этих типов может использоваться и в других структурах данных, в зависимости от потребностей в безопасности потоков, так что ленивая инициализация доступна везде! + +### Checked `cfg` names and values + +В 1.79 `rustc` стабилизировал флаг [`--check-cfg`](https://doc.rust-lang.org/rustc/check-cfg.html), и теперь Cargo 1.80 включает эти проверки для всех известных ему имён `cfg` (в дополнение ко встроенным в rustc). Сюда входят имена фич из `Cargo.toml`, а также новый вывод `cargo::rustc-check-cfg` из скриптов сборки. + +О неожиданных конфигурациях сообщает линт `unexpected_cfgs`, который предназначен для выявления опечаток или других ошибок. Например, в проекте с необязательной зависимостью `rayon` этот код настроен на неправильное значение: + +```rust +fn main() { + println!("Hello, world!"); + + #[cfg(feature = "crayon")] + rayon::join( + || println!("Hello, Thing One!"), + || println!("Hello, Thing Two!"), + ); +} +``` + +```console +warning: unexpected `cfg` condition value: `crayon` + --> src/main.rs:4:11 + | +4 | #[cfg(feature = "crayon")] + | ^^^^^^^^^^-------- + | | + | help: there is a expected value with a similar name: `"rayon"` + | + = note: expected values for `feature` are: `rayon` + = help: consider adding `crayon` as a feature in `Cargo.toml` + = note: see for more information about checking conditional configuration + = note: `#[warn(unexpected_cfgs)]` on by default +``` + +Это предупреждение выдаётся независимо от того, включена или нет фича `rayon`. + +The `[lints]` table in the `Cargo.toml` manifest can also be used to extend the list of known names and values for custom `cfg`. `rustc` automatically provides [the syntax](https://doc.rust-lang.org/rustc/check-cfg.html#specifying-expected-names-and-values) to use in the warning. + +```toml +[lints.rust] +unexpected_cfgs = { level = "warn", check-cfg = ['cfg(foo, values("bar"))'] } +``` + +Вы можете прочитать больше об этой функциональности [в предыдущей статье блога](https://blog.rust-lang.org/2024/05/06/check-cfg.html), анонсирующей эту функциональность в nightly. + +### Exclusive ranges in patterns + +Rust ranged patterns can now use exclusive endpoints, written `a..b` or `..b` similar to the `Range` and `RangeTo` expression types. For example, the following patterns can now use the same constants for the end of one pattern and the start of the next: + +```rust +pub fn size_prefix(n: u32) -> &'static str { + const K: u32 = 10u32.pow(3); + const M: u32 = 10u32.pow(6); + const G: u32 = 10u32.pow(9); + match n { + ..K => "", + K..M => "k", + M..G => "M", + G.. => "G", + } +} +``` + +Раньше в шаблонах допускались только диапазоны, включающие конечную точку («инклюзивные» — `a..=b` или `..=b`), или открытые (`a..`) диапазоны. Поэтому код вроде приведённого выше требовал вводить отдельные константы, такие как `K - 1` для конечных точек. + +Эксклюзивные диапазоны были реализованы в качестве нестабильной фичи уже давно, но стабилизации мешали опасения, что они могут внести путаницу и увеличить вероятность ошибок в шаблонах. В связи с этим были улучшены проверки исчерпывающего сопоставления с шаблоном, чтобы лучше обнаруживать пробелы в сопоставлении, а новые линты `non_contiguous_range_endpoints` и `overlapping_range_endpoints` помогут обнаружить случаи, когда вы хотели бы поменять эксклюзивные шаблоны-диапазоны на инклюзивные или наоборот. + +### Stabilized APIs + +- [`impl Default для Rc`](https://doc.rust-lang.org/stable/alloc/rc/struct.Rc.html#impl-Default-for-Rc%3CCStr%3E) +- [`impl Default для Rc`](https://doc.rust-lang.org/stable/alloc/rc/struct.Rc.html#impl-Default-for-Rc%3Cstr%3E) +- [`impl Default для Rc<[T]>`](https://doc.rust-lang.org/stable/alloc/rc/struct.Rc.html#impl-Default-for-Rc%3C%5BT%5D%3E) +- [`impl Default для Arc`](https://doc.rust-lang.org/stable/alloc/sync/struct.Arc.html#impl-Default-for-Arc%3Cstr%3E) +- [`impl Default для Arc`](https://doc.rust-lang.org/stable/alloc/sync/struct.Arc.html#impl-Default-for-Arc%3CCStr%3E) +- [`impl Default для Arc<[T]>`](https://doc.rust-lang.org/stable/alloc/sync/struct.Arc.html#impl-Default-for-Arc%3C%5BT%5D%3E) +- [`impl IntoIterator для Box<[T]>`](https://doc.rust-lang.org/stable/alloc/boxed/struct.Box.html#impl-IntoIterator-for-Box%3C%5BI%5D,+A%3E) +- [`impl FromIterator для Box`](https://doc.rust-lang.org/stable/alloc/boxed/struct.Box.html#impl-FromIterator%3CString%3E-for-Box%3Cstr%3E) +- [`impl FromIterator для Box`](https://doc.rust-lang.org/stable/alloc/boxed/struct.Box.html#impl-FromIterator%3Cchar%3E-for-Box%3Cstr%3E) +- [`LazyCell`](https://doc.rust-lang.org/stable/core/cell/struct.LazyCell.html) +- [`LazyLock`](https://doc.rust-lang.org/stable/std/sync/struct.LazyLock.html) +- [`Duration::div_duration_f32`](https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.div_duration_f32) +- [`Duration::div_duration_f64`](https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.div_duration_f64) +- [`Option::take_if`](https://doc.rust-lang.org/stable/std/option/enum.Option.html#method.take_if) +- [`Seek::seek_relative`](https://doc.rust-lang.org/stable/std/io/trait.Seek.html#method.seek_relative) +- [`BinaryHeap::as_slice`](https://doc.rust-lang.org/stable/std/collections/struct.BinaryHeap.html#method.as_slice) +- [`NonNull::offset`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.offset) +- [`NonNull::byte_offset`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.byte_offset) +- [`NonNull::add`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.add) +- [`NonNull::byte_add`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.byte_add) +- [`NonNull::sub`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.sub) +- [`NonNull::byte_sub`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.byte_sub) +- [`NonNull::offset_from`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.offset_from) +- [`NonNull::byte_offset_from`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.byte_offset_from) +- [`NonNull::read`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.read) +- [`NonNull::read_volatile`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.read_volatile) +- [`NonNull::read_unaligned`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.read_unaligned) +- [`NonNull::write`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.write) +- [`NonNull::write_volatile`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.write_volatile) +- [`NonNull::write_unaligned`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.write_unaligned) +- [`NonNull::write_bytes`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.write_bytes) +- [`NonNull::copy_to`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.copy_to) +- [`NonNull::copy_to_nonoverlapping`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.copy_to_nonoverlapping) +- [`NonNull::copy_from`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.copy_from) +- [`NonNull::copy_from_nonoverlapping`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.copy_from_nonoverlapping) +- [`NonNull::replace`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.replace) +- [`NonNull::swap`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.swap) +- [`NonNull::drop_in_place`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.drop_in_place) +- [`NonNull::align_offset`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.align_offset) +- [`<[T]>::split_at_checked`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_at_checked) +- [`<[T]>::split_at_mut_checked`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_at_mut_checked) +- [`str::split_at_checked`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.split_at_checked) +- [`str::split_at_mut_checked`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.split_at_mut_checked) +- [`str::trim_ascii`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.trim_ascii) +- [`str::trim_ascii_start`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.trim_ascii_start) +- [`str::trim_ascii_end`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.trim_ascii_end) +- [`<[u8]>::trim_ascii`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.trim_ascii) +- [`<[u8]>::trim_ascii_start`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.trim_ascii_start) +- [`<[u8]>::trim_ascii_end`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.trim_ascii_end) +- [`Ipv4Addr::BITS`](https://doc.rust-lang.org/stable/core/net/struct.Ipv4Addr.html#associatedconstant.BITS) +- [`Ipv4Addr::to_bits`](https://doc.rust-lang.org/stable/core/net/struct.Ipv4Addr.html#method.to_bits) +- [`Ipv4Addr::from_bits`](https://doc.rust-lang.org/stable/core/net/struct.Ipv4Addr.html#method.from_bits) +- [`Ipv6Addr::BITS`](https://doc.rust-lang.org/stable/core/net/struct.Ipv6Addr.html#associatedconstant.BITS) +- [`Ipv6Addr::to_bits`](https://doc.rust-lang.org/stable/core/net/struct.Ipv6Addr.html#method.to_bits) +- [`Ipv6Addr::from_bits`](https://doc.rust-lang.org/stable/core/net/struct.Ipv6Addr.html#method.from_bits) +- [`Vec::<[T; N]>::into_flattened`](https://doc.rust-lang.org/stable/alloc/vec/struct.Vec.html#method.into_flattened) +- [`<[[T; N]]>::as_flattened`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.as_flattened) +- [`<[[T; N]]>::as_flattened_mut`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.as_flattened_mut) + +These APIs are now stable in const contexts: + +- [`<[T]>::last_chunk`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.last_chunk) +- [`BinaryHeap::new`](https://doc.rust-lang.org/stable/std/collections/struct.BinaryHeap.html#method.new) + +### Other changes + +Check out everything that changed in [Rust](https://github.com/rust-lang/rust/releases/tag/1.80.0), [Cargo](https://github.com/rust-lang/cargo/blob/master/CHANGELOG.md#cargo-180-2024-07-25), and [Clippy](https://github.com/rust-lang/rust-clippy/blob/master/CHANGELOG.md#rust-180). + +## Contributors to 1.80.0 + +Many people came together to create Rust 1.80.0. We couldn't have done it without all of you. [Thanks!](https://thanks.rust-lang.org/rust/1.80.0/) From 432d481393cb7a9a235d2553b2023ad214ff6a7e Mon Sep 17 00:00:00 2001 From: funkill Date: Fri, 26 Jul 2024 11:18:15 +0000 Subject: [PATCH 2/4] Translate 2024-07-25-Rust-1.80.0.md via GitLocalize --- ru/announcements/2024-07-25-Rust-1.80.0.md | 24 +++++++++++----------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/ru/announcements/2024-07-25-Rust-1.80.0.md b/ru/announcements/2024-07-25-Rust-1.80.0.md index ed14735..fddc1ba 100644 --- a/ru/announcements/2024-07-25-Rust-1.80.0.md +++ b/ru/announcements/2024-07-25-Rust-1.80.0.md @@ -5,19 +5,19 @@ author: The Rust Release Team release: 'true' --- -The Rust team is happy to announce a new version of Rust, 1.80.0. Rust is a programming language empowering everyone to build reliable and efficient software. +Команда Rust рада сообщить о новой версии языка — 1.80.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение. -If you have a previous version of Rust installed via `rustup`, you can get 1.80.0 with: +Если у вас есть предыдущая версия Rust, установленная через `rustup`, то для обновления до версии 1.80.0 вам достаточно выполнить команду: ```console $ rustup update stable ``` -If you don't have it already, you can [get `rustup`](https://www.rust-lang.org/install.html) from the appropriate page on our website, and check out the [detailed release notes for 1.80.0](https://doc.rust-lang.org/nightly/releases.html#version-1800-2024-07-25). +Если у вас ещё не установлен `rustup`, вы можете установить его с [соответствующей страницы](https://www.rust-lang.org/install.html) нашего веб-сайта, а также посмотреть [подробные примечания к выпуску](https://doc.rust-lang.org/nightly/releases.html#version-1800-2024-07-25) на GitHub. -If you'd like to help us out by testing future releases, you might consider updating locally to use the beta channel (`rustup default beta`) or the nightly channel (`rustup default nightly`). Please [report](https://github.com/rust-lang/rust/issues/new/choose) any bugs you might come across! +Если вы хотите помочь нам протестировать будущие выпуски, вы можете использовать канал beta (`rustup default beta`) или nightly (`rustup default nightly`). Пожалуйста, [сообщайте](https://github.com/rust-lang/rust/issues/new/choose) обо всех встреченных вами ошибках. -## What's in 1.80.0 stable +## Что стабилизировано в 1.80.0 ### `LazyCell` and `LazyLock` @@ -79,7 +79,7 @@ warning: unexpected `cfg` condition value: `crayon` Это предупреждение выдаётся независимо от того, включена или нет фича `rayon`. -The `[lints]` table in the `Cargo.toml` manifest can also be used to extend the list of known names and values for custom `cfg`. `rustc` automatically provides [the syntax](https://doc.rust-lang.org/rustc/check-cfg.html#specifying-expected-names-and-values) to use in the warning. +Таблица `[lints]` в `Cargo.toml` также может использоваться для расширения списка известных имён и значений для пользовательских `cfg`. `rustc` автоматически предоставляет [синтаксис](https://doc.rust-lang.org/rustc/check-cfg.html#specifying-expected-names-and-values) для использования их в предупреждениях. ```toml [lints.rust] @@ -110,7 +110,7 @@ pub fn size_prefix(n: u32) -> &'static str { Эксклюзивные диапазоны были реализованы в качестве нестабильной фичи уже давно, но стабилизации мешали опасения, что они могут внести путаницу и увеличить вероятность ошибок в шаблонах. В связи с этим были улучшены проверки исчерпывающего сопоставления с шаблоном, чтобы лучше обнаруживать пробелы в сопоставлении, а новые линты `non_contiguous_range_endpoints` и `overlapping_range_endpoints` помогут обнаружить случаи, когда вы хотели бы поменять эксклюзивные шаблоны-диапазоны на инклюзивные или наоборот. -### Stabilized APIs +### Стабилизированные API - [`impl Default для Rc`](https://doc.rust-lang.org/stable/alloc/rc/struct.Rc.html#impl-Default-for-Rc%3CCStr%3E) - [`impl Default для Rc`](https://doc.rust-lang.org/stable/alloc/rc/struct.Rc.html#impl-Default-for-Rc%3Cstr%3E) @@ -171,15 +171,15 @@ pub fn size_prefix(n: u32) -> &'static str { - [`<[[T; N]]>::as_flattened`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.as_flattened) - [`<[[T; N]]>::as_flattened_mut`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.as_flattened_mut) -These APIs are now stable in const contexts: +Следующие API теперь можно использовать в контексте `const`: - [`<[T]>::last_chunk`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.last_chunk) - [`BinaryHeap::new`](https://doc.rust-lang.org/stable/std/collections/struct.BinaryHeap.html#method.new) -### Other changes +### Прочие изменения -Check out everything that changed in [Rust](https://github.com/rust-lang/rust/releases/tag/1.80.0), [Cargo](https://github.com/rust-lang/cargo/blob/master/CHANGELOG.md#cargo-180-2024-07-25), and [Clippy](https://github.com/rust-lang/rust-clippy/blob/master/CHANGELOG.md#rust-180). +Проверьте всё, что изменилось в [Rust](https://github.com/rust-lang/rust/releases/tag/1.80.0), [Cargo](https://github.com/rust-lang/cargo/blob/master/CHANGELOG.md#cargo-180-2024-07-25) и [Clippy](https://github.com/rust-lang/rust-clippy/blob/master/CHANGELOG.md#rust-180). -## Contributors to 1.80.0 +## Кто работал над 1.80.0 -Many people came together to create Rust 1.80.0. We couldn't have done it without all of you. [Thanks!](https://thanks.rust-lang.org/rust/1.80.0/) +Многие люди собрались вместе, чтобы создать Rust 1.80.0. Без вас мы бы не справились. [Спасибо!](https://thanks.rust-lang.org/rust/1.80.0/) From 912c9d7682d1981103ab405ab9236a36e0957d5b Mon Sep 17 00:00:00 2001 From: Yuriy Larin Date: Fri, 26 Jul 2024 11:18:17 +0000 Subject: [PATCH 3/4] Translate 2024-07-25-Rust-1.80.0.md via GitLocalize --- ru/announcements/2024-07-25-Rust-1.80.0.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ru/announcements/2024-07-25-Rust-1.80.0.md b/ru/announcements/2024-07-25-Rust-1.80.0.md index fddc1ba..21efc20 100644 --- a/ru/announcements/2024-07-25-Rust-1.80.0.md +++ b/ru/announcements/2024-07-25-Rust-1.80.0.md @@ -19,7 +19,7 @@ $ rustup update stable ## Что стабилизировано в 1.80.0 -### `LazyCell` and `LazyLock` +### `LazyCell` и `LazyLock` Это «ленивые» типы, которые откладывают инициализацию своих данных до первого обращения к ним. Они похожи на типы `OnceCell` и `OnceLock`, [стабилизированные в 1.70](https://blog.rust-lang.org/2023/06/01/Rust-1.70.0.html#oncecell-and-oncelock), но с функцией инициализации, включённой в тип. Это завершает стабилизацию в стандартной библиотеке адаптированной функциональности популярных крейтов [`lazy_static`](https://crates.io/crates/lazy-static) и [`once_cell`](https://crates.io/crates/once_cell). @@ -44,7 +44,7 @@ fn main() { `LazyCell` делает то же самое без синхронизации потоков, поэтому он не реализует `Sync`, необходимый для `static`, но его можно использовать в статиках `thread_local!` (с отдельной инициализацией для каждого потока). Любой из этих типов может использоваться и в других структурах данных, в зависимости от потребностей в безопасности потоков, так что ленивая инициализация доступна везде! -### Checked `cfg` names and values +### Проверяемые имена и значения `cfg` В 1.79 `rustc` стабилизировал флаг [`--check-cfg`](https://doc.rust-lang.org/rustc/check-cfg.html), и теперь Cargo 1.80 включает эти проверки для всех известных ему имён `cfg` (в дополнение ко встроенным в rustc). Сюда входят имена фич из `Cargo.toml`, а также новый вывод `cargo::rustc-check-cfg` из скриптов сборки. @@ -88,7 +88,7 @@ unexpected_cfgs = { level = "warn", check-cfg = ['cfg(foo, values("bar"))'] } Вы можете прочитать больше об этой функциональности [в предыдущей статье блога](https://blog.rust-lang.org/2024/05/06/check-cfg.html), анонсирующей эту функциональность в nightly. -### Exclusive ranges in patterns +### Эксклюзивные диапазоны в шаблонах Rust ranged patterns can now use exclusive endpoints, written `a..b` or `..b` similar to the `Range` and `RangeTo` expression types. For example, the following patterns can now use the same constants for the end of one pattern and the start of the next: From 9adfd9601b2ed535cf2f3e3ae841ad3321b902af Mon Sep 17 00:00:00 2001 From: colt-browning Date: Fri, 26 Jul 2024 11:18:18 +0000 Subject: [PATCH 4/4] Translate 2024-07-25-Rust-1.80.0.md via GitLocalize --- ru/announcements/2024-07-25-Rust-1.80.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ru/announcements/2024-07-25-Rust-1.80.0.md b/ru/announcements/2024-07-25-Rust-1.80.0.md index 21efc20..24c13a5 100644 --- a/ru/announcements/2024-07-25-Rust-1.80.0.md +++ b/ru/announcements/2024-07-25-Rust-1.80.0.md @@ -90,7 +90,7 @@ unexpected_cfgs = { level = "warn", check-cfg = ['cfg(foo, values("bar"))'] } ### Эксклюзивные диапазоны в шаблонах -Rust ranged patterns can now use exclusive endpoints, written `a..b` or `..b` similar to the `Range` and `RangeTo` expression types. For example, the following patterns can now use the same constants for the end of one pattern and the start of the next: +В шаблонах диапазонов Rust теперь могут использоваться диапазоны с исключённой конечной точкой («эксклюзивные»), записываемые как `a..b` или `..b`, аналогично типам выражений `Range` и `RangeTo`. Например, в следующих шаблонах теперь можно использовать одни и те же константы для конца одного шаблона и начала следующего: ```rust pub fn size_prefix(n: u32) -> &'static str {